CS168:ARP、DHCP 与 NAT
设备连上局域网后,要先获得网络配置,再找到下一跳的链路层地址。以新加入校园 Wi-Fi 的笔记本为例:DHCP 帮它取得 IP 配置;要发送第一个数据包时,ARP 帮它查出默认网关的 MAC 地址。
DHCP:取得网络配置
DHCP 通常通过 DORA 流程分配租约:客户端广播 Discover,服务器回复 Offer,客户端 Request 选择一份配置,服务器用 Acknowledge 确认。配置通常包括 IP 地址、子网掩码、默认网关和 DNS 解析器。IPv4 DHCP 使用 UDP,服务器监听端口 67,客户端使用端口 68。
IPv6 有邻居发现(Neighbor Discovery)和 SLAAC(无状态地址自动配置)等机制。路由器可以通告网络前缀,主机据此生成本地 IPv6 地址;IPv6 的邻居解析也由 ICMPv6 邻居发现完成,而不是使用 IPv4 的 ARP。
ARP:找到同一链路上的 MAC 地址
发送主机先判断目的 IP 是否在本地子网。如果在,就查询目的主机的 MAC;如果不在,就查询默认网关的 MAC,把以太网帧交给网关,再由路由器继续转发。
以太网广播中的 ARP 请求会询问“谁拥有这个 IPv4 地址?”。拥有该地址的主机单播回复自己的 MAC 地址,发送方随后缓存这组对应关系。ARP 只解决本地链路上的地址解析,不负责寻找跨互联网的路径。
NAT:共享公网地址
家庭路由器常用网络地址转换(NAT),让多台使用私有 IPv4 地址的设备共享公网地址。常见的端口地址转换(PAT)还会改写传输层端口,并记录连接映射,以便把返回流量送回正确的内部主机。
这能节省公网 IPv4 地址,但也让外部主机通常无法直接发起到内部设备的连接;需要端口转发或其他穿透机制。NAT 本身不是完整的防火墙,也不等同于加密。
下面的映射表展示了 PAT 如何利用不同端口区分两台内部主机发往同一服务器的连接。

