ARP

如何根据网络层的 IP 地址得到数据链路层的 MAC 地址,这是 ARP 协议需要解决的问题。
无论网络层的 IP 路由怎么搞,数据始终是通过数据链路层进行传送的,每台主机都需要知道邻接机器的 MAC 地址。

ARP 是网络层的协议,分组封装在以太网帧中。ARP 协议是借助局域网广播来工作的。

ARP 的原理
每台主机都维护一个 IP-MAC 的缓存,叫做 ARP 表

  • 如果主机需要向本地网络的其他主机发送信息,就根据目的主机的 IP 查询ARP 表,得到 MAC 地址后封装成数据链路层帧。
  • 如果不能在 ARP 表中查到目的主机 IP 和 MAC 的对应关系,就向局域网发送 ARP 广播;目的主机收到广播后,向当前主机发起单播的 ARP 响应。

如果主机需要向其他网络的主机发送信息,会将数据链路层帧发送给路由器。

从 IP 地址到 MAC 地址的转换是自动进行的,用户只需要知道目的 IP 地址即可。

路由器也需要通过 ARP 协议来获得邻接路由器的 MAC 地址。

ICMP

ICMP 用于让主机和路由器报告差错和异常情况

ICMP 是网络层的协议,ICMP 报文封装于 IP 数据报中

报文类型

ICMP 报文种类 ICMP 报文的类型 作用
差错报告报文 终点不可达 路由器无法交付数据时
源点抑制 因拥塞而丢弃报文时;让源主机降低发送速率
时间超过 TTL 减小到 0
参数问题 IP 首部字段有问题
改变路由 有更好的路由
询问报文 (Echo) 回送请求 或 回送回答
(Timestamp) 时间戳请求 或 时间戳回答

不发送 ICMP 差错控制报文的情形(只是差错控制报告报文,不是询问报文):

  • ICMP 报文自身出错了
  • IP 数据报分片时,只针对第一个分片发送 ICMP 差错报告报文
  • 组播时
  • 特殊地址(127.0.0.1)

ICMP 的应用:PING

PING 工作在应用层,但是它直接使用网络层的 ICMP 协议,使用了 ICMP 询问报文的“Echo 回送请求和回答报文”

ICMP 的应用:Traceroute

Traceroute 可以用于跟踪分组经过的路由。
使用了 ICMP 差错报告报文的时间超过报文。(发送多个数据报,分别设置 TTL 为 1,2,3 等)
以及终点不可达的差错报告报文(使用的是 UDP 的非法端口,目标主机收到后,会返回终点不可达的报文。)
Tracert的过程.PNG

DHCP

DHCP 是应用层的协议,基于 UDP

该协议是用于为新加入的主机分配 IP 地址的。由于该协议工作在应用层,新加入的主机 IP 未知,所以通信全程使用广播方式。

新加入的主机为客户端,网络中存在至少一个 DHCP 服务器,协议的工作过程如下:
image.png

DHCP 发现报文的 IP 分组源 IP 为: 0.0.0.0 ,目的 IP 为: 255.255.255.255

注:IPv6 即插即用,不需要 DHCP