ARP、DHCP、ICMP_gc8u20gu6zkgp0vh

最后修改于

ARP 协议(MAC 帧)#

当需要通信的两台主机处于同一网段时,A 要发送数据。

  1. 首先,A 会查找自己本地缓存的 ARP 表,确定是否包含目的地对应的 ARP 表项。如果 A 在 ARP 表中找到对应的 MAC 地址,则 A 直接利用 ARP 表中的 MAC 地址,对数据报文进行帧封装,并将数据报文发送。
  2. ARP 表查找失败时,先缓存数据报文,并以广播方式发送一个链路层 ARP 请求报文。交换机收到 ARP 请求报文后,将该 ARP 请求报文在同一广播域内转发。

  1. 同一广播域内的主机都能接收到该 ARP 请求报文,但只有被请求的主机会对该 ARP 请求报文进行处理。比较自己的 IP 地址和 ARP 请求报文中的目的 IP 地址。
  2. 当两者相同时,将 ARP 请求报文中的源 IP 地址和源 MAC 地址存入自己的 ARP 表中。之后以单播方式发送 ARP 应答报文给 A。

  1. 交换机收到 ARP 应答报文后,将该 ARP 应答报文转发给 A。A 收到 ARP 应答报文后,将目的地的 MAC 地址加入到自己的 ARP 表中以用于后续报文的转发,同时将数据报文进行帧封装,并发送数据报文。

当需要通信的两台主机处于不同网段时,此时 A 发送 ARP 请求网关的 MAC 地址。A 收到 ARP 应答报文后,将数据报文封装并发给网关,再由网关将数据报文发送给目的主机。

DHCP 协议(UDP)#

image.png

  1. 需要 IP 的主机先在本网络广播发送 DHCP 发现报文。可能发现多个 DHCP 服务器。
  2. DHCP 服务器广播返回 DHCP 提供报文。返回预提供的 IP,网关等信息。
  3. 主机再次广播,DHCP 请求报文。从多个 Offer 报文中选择一个发送广播请求
  4. DHCP 服务器返回 DHCP 确认报文。
  5. 在 ACK 之后,客户端进行 3 次 以该 IP 为目的 IP 的 ARP 请求,防止重复。
  6. 如果重复,通知 DHCP 服务器,并重新发送。
ICMP(IP 数据报)#

ICMP 报文分类:

ICMP 差错控制报文#
  • 终点不可达
  • 源点抑制,网络拥塞导致丢弃数据报
  • TTL 超时,中途 TTL 或终点限时未收到所有数据报
  • 参数问题,首部有问题
  • 改变路由,下次发送采用更好的路由
ICMP 询问报文#
  • 回送请求和回答
  • 时间戳请求和回答
  • 地址掩码请求和回答
  • 路由器询问和通告

对于部分情况,不发送 ICMP 差错控制报文:

  • 对 ICMP 差错控制报文不发送
  • 对同一个数据报的第一个分片的数据片发送,后续分片不发送
  • 对组播数据报不发送
  • 特殊地址不发送

PING 命令,在应用层直接使用 IP 层,使用 ICMP 回送请求和回答
Traceroute 命令,工作在应用层,使用 ICMP TTL 超时报文