网络基础协议:IP、ARP、ICMP、NAT 与 TCP 流量控制

IP、ARP、ICMP、NAT、TCP 流量控制五大网络基础协议的综合整理。

#type / synthesis #tech / network #discipline / protocols #status / growing

[!info] related notes

网络基础协议:IP、ARP、ICMP、NAT 与 TCP 流量控制

为什么放在一起理解

这五个概念构成了网络层和传输层的基础骨架。IP 负责寻址和路由,ARP 负责将 IP 地址解析为 MAC 地址,ICMP 负责错误报告和诊断,NAT 负责地址转换,TCP 流量控制负责端到端的可靠传输节奏。它们共同支撑了上层所有应用协议的运行。

IP(Internet Protocol,网际协议)

定义

TCP/IP 协议栈中最核心的协议之一,属于网络层。主要作用是定义数据包的格式、对数据包进行路由和寻址,使其能跨网络传播并到达正确的目的地。

IPv4 与 IPv6

维度IPv4IPv6
地址长度32 位(4 字节)128 位(16 字节)
地址数量约 43 亿约 3.4 x 10^38
地址格式点分十进制(192.168.1.1)冒号十六进制(2001:db8::1)
头部长度可变(20-60 字节)固定 40 字节
分片路由器和发送端均可仅发送端
校验和有(头部校验和)无(交给上层)
NAT普遍使用不再需要(地址充足)
状态仍在广泛使用逐步部署中

关键机制

  • 分组转发:路由器根据目的 IP 地址查路由表,逐跳转发
  • 分片与重组:当数据包超过链路 MTU 时分片,目的端重组
  • TTL(Time To Live):每经过一跳减 1,防止环路中的无限转发

ARP(Address Resolution Protocol,地址解析协议)

定义

ARP 解决的是网络层地址(IP)和链路层地址(MAC)之间的转换问题。IP 数据报在物理传输时需要知道下一跳的 MAC 地址,但 IP 地址是逻辑地址,MAC 地址才是物理地址。

工作机制

  1. 主机 A 要发送数据给同一子网的主机 B,知道 B 的 IP 但不知道 MAC
  2. A 广播 ARP 请求:“谁的 IP 是 192.168.1.5?请告诉我你的 MAC”
  3. 子网内所有主机收到请求,只有 B 回复
  4. B 单播 ARP 响应:“192.168.1.5 的 MAC 是 xx:xx:xx:xx:xx:xx”
  5. A 将映射关系缓存到 ARP 表,后续直接查表

关键事实

  • ARP 请求是广播,ARP 响应是单播
  • ARP 缓存有超时时间(通常 20 分钟),过期后重新解析
  • ARP 只在同一子网内工作;跨子网时,解析的是网关的 MAC 地址
  • 免费 ARP(Gratuitous ARP):主机主动广播自己的 IP-MAC 映射,用于检测 IP 冲突
  • ARP 没有认证机制,容易受到 ARP 欺骗攻击

ICMP(Internet Control Message Protocol,互联网控制报文协议)

定义

ICMP 用于在网络设备之间传输控制消息和错误报告,是网络诊断和故障排除的基础协议。

报文类型

类型名称方向用途
0Echo Reply目标 -> 源ping 响应
3Destination Unreachable路由器/目标 -> 源目标不可达(细分为多种代码)
5Redirect路由器 -> 主机建议使用更优网关
8Echo Request源 -> 目标ping 请求
11Time Exceeded路由器 -> 源TTL 超时(traceroute 原理)

关键事实

  • ICMP 运行在 IP 层之上(协议号 1),但不是传输层协议
  • ping 使用 Echo Request/Reply 测试连通性和往返时间
  • traceroute 利用 TTL 递增 + Time Exceeded 消息追踪路径
  • ICMP 错误消息通常包含触发错误的原始数据包头部,便于诊断
  • 部分防火墙会屏蔽 ICMP,导致 ping 不通但服务正常

NAT(Network Address Translation,网络地址转换)

定义

NAT 将内部网络(LAN)的私有 IP 地址转换为外部网络(WAN)的公有 IP 地址,使多个内网设备可以共享一个公网 IP 访问互联网。

工作机制

内网主机 192.168.1.10:12345
  --> NAT 路由器(转换为 203.0.113.1:54321)
    --> 目标服务器 93.184.216.34:80

NAT 路由器维护一张转换表,记录内网地址:端口与外网地址:端口的映射关系。回程数据包根据转换表反向还原。

NAT 类型

类型行为适用场景
静态 NAT一对一固定映射服务器对外暴露
动态 NAT从地址池动态分配中等规模网络
PAT(端口地址转换)多对一,用端口区分家庭/小型网络(最常见)

关键事实

  • NAT 是 IPv4 地址枯竭的临时解决方案,IPv6 理论上不再需要
  • NAT 破坏了端到端通信模型,对 P2P、VoIP 等应用造成穿透难题
  • NAT 穿透技术:STUN、TURN、ICE 用于解决 NAT 后的通信问题
  • NAT 隐蔽性:外部无法直接访问内网主机,提供了一定的安全屏障

TCP 流量控制(Flow Control)

定义

TCP 通过滑动窗口机制调节发送方的发送速率,防止接收方因处理不过来而丢包。

滑动窗口机制

  • 接收方在 ACK 中通告自己的 接收窗口(rwnd),告诉发送方”我还能接收多少字节”
  • 发送方维护一个 发送窗口,大小不能超过接收方通告的 rwnd
  • 窗口随 ACK 动态滑动:收到 ACK 后窗口前移,允许发送新数据
发送方视角:
[已确认] [已发送未确认] [可发送未发送] [不可发送]
          |<--- 发送窗口 --->|

关键概念

  • rwnd(Receive Window):接收方通告的可用缓冲区大小
  • cwnd(Congestion Window):拥塞控制的窗口(与流量控制不同)
  • 实际发送窗口 = min(rwnd, cwnd)
  • 零窗口:接收方通告 rwnd=0 时,发送方暂停发送,定期发探测报文
  • Nagle 算法:减少小包发送,等凑够一定数据量再发(可关闭)

流量控制 vs 拥塞控制

维度流量控制拥塞控制
目的防止淹没接收方防止淹没网络
调节依据接收方通告的 rwnd网络拥塞信号(丢包、延迟)
影响范围点对点全局网络
主要机制滑动窗口慢启动、拥塞避免、快重传、快恢复
创建于 2026/5/27 更新于 2026/5/27