3. 网络层相关协议

1. ARP 协议

对于数据链路层,通过 MAC 地址找到对应的主机。A 和 B 通信有两种情况:

  • 情况一:A 和 B 在同一局域网内

  • 情况二:A 和 B 不在同一局域网内

对于情况一:主机 1 和主机 3 通信

  • 应用层:递交给传输层

  • 传输层:分组,递交给网络层

  • 网络层:对于第一个分组,加上源 IP 地址和目标 IP 地址,递交给数据链路层

  • 数据链路层:加上源 MAC 地址和目标 MAC 地址,还有 FCS

    对于目标 MAC 地址,有两种情况

    • ARP 高速缓存里中映射,就可以直接知道

    • 如果没有,则源主机就会发送一条广播ARP请求分组,格式如图所示;对于目标主机接收到该请求后,会发送一条单播ARP响应分组给源主机。这样源主机就可以知道其MAC地址。

情况二:主机 H1H_1 和主机 H2H_2 通信

其他过程都一样,单独说明 H1H_1 如何获取 H2H_2 的 MAC 地址

  • 主机 H1H_1 知道主机 H2H_2 不和自己同一网段,直接把数据报发给默认网关

  • 路由器 R1R_1 通过解封装和再封装,把数据报发送给下一跳路由器 R2R_2

  • 路由器 R2R_2 把报文发送给主机 H2H_2 ,封装方法和局域网的一样

ARP协议:完成主机或路由器 IP 地址到 MAC 地址的映射(解决下一跳走哪的问题)

ARP协议使用过程:

  • 检查 ARP 高速缓存,有对应表项则写入 MAC 帧,没有则用目的 MAC 地址为 FF-FF-FF-FF-FF-FF 帧封装并广播 ARP 请求分组,同一局域网中所有主机都能收到该请求。目的主机收到请求后就会向源主机单播一个 ARP 响应分组,源主机收到后将此映射写入ARP 缓存(10 - 20 min 更新一次)

ARP 协议 4 中典型情况:

  1. 主机 A 发给本网络上的主机 B:用 ARP 找到主机 B 的硬件地址

  2. 主机 A 发给另一网络上的主机 B:用 ARP 找到本网络上一个路由器(网关)的硬件地址

  3. 路由器发给本网络的主机 A:用 ARP 找到主机 A 的硬件地址

  4. 路由器发给另一网络的主机 B:用 ARP 找到本网络上的一个路由器的硬件地址

2. DHCP 协议

获取 IP 地址的方法有两种:

  • 静态配置(管理员手动分配 IP 地址)

  • 动态配置(通过 DHCP 服务器自动分配 IP 地址)

动态主机配置协议 DHCP 是应用层协议,使用 客户/服务器 方式,客户端与服务端通过广播方式进行交互,基于 UDP

DHCP 提供即插即用联网的机制,主机可以从服务器动态获取 IP 地址子网掩码默认网关DNS 服务器名称,允许地址重用,支持移动用户加入网络,支持在用地址续租

DHCP 协议过程:

  1. 主机广播DHCP发现报文

    “有没有DHCP服务器呀” 试图找到网络中的服务器,向服务器获得一个IP地址

  2. DHCP服务器广播DHCP提供报文

    “有!有!有!” 服务器拟分配给主机一个IP地址及相关配置,先到先得

  3. 主机广播DHCP请求报文

    “我用你给我的IP地址啦?” 主机向服务器请求提供IP地址

  4. DHCP服务器广播DHCP确认报文

    “用吧!” 正式将IP地址分配给主机

3. ICMP 协议

为了更有效地转发 IP 数据报和提高交付成功的机会

3.1 功能

ICMP 协议支持主机或路由器:

  • 差错(或异常)报告(发送 ICMP差错报文)

  • 网络探询(发送 ICMP 询问报文)

3.2 ICMP 报文

3.3 ICMP 差错报告报文(5种)

  1. 终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。(无法交付

  2. 源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报发送速率放慢。(拥塞丢数据,目前已不使用

  3. 时间超过:当路由器你手动生存时间 TTL=0 的数据报时,除丢弃数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。(TTL = 0

  4. 参数问题:当路由器或目的主机收到数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。(首部字段有问题

  5. 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据发送给另外的路由器。(值得更好的路由

3.4 ICMP 差错报告报文数据字段

3.5 不应发送 ICMP 差错报文的情况

  1. IMCP 差错报告报文不再发送 ICMP 差错报告报文

  2. 对第一个分片数据报片的所有后续数据报片都不发送 ICMP 差错报告报文

  3. 对具有组播地址的数据都不发送 ICMP 差错报告报文

  4. 对具有特殊地址(0.0.0.0 或 127.0.0.0)的数据不发送 ICMP 差错报告报文

3.6 ICMP 询问报文

  1. 发送请求和回报报文

    主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送 ICMP 回送回答报文。

    测试目的站是否可达以及了解其相关状态(ping)

  2. 时间戳请求和回答报文

    请求某个主机或路由器问答当前的日期和时间

    用来进行时钟同步和测量时间

  3. 掩码地址请求和回答报文(×,已不使用)

  4. 路由询问和通告报文(×,已不使用)

3.7 ICMP 应用

1. ping

测试两个主机之间的连通性,使用了 ICMP 回送请求和回答报文

2. Traceroute

跟踪一个分组从源点到终点的路径,使用了 ICMP 时间超过差错报告报文

Last updated