3. 网络层相关协议
Last updated
Last updated
对于数据链路层,通过 MAC 地址找到对应的主机。A 和 B 通信有两种情况:
情况一:A 和 B 在同一局域网内
情况二:A 和 B 不在同一局域网内
对于情况一:主机 1 和主机 3 通信
应用层:递交给传输层
传输层:分组,递交给网络层
网络层:对于第一个分组,加上源 IP 地址和目标 IP 地址,递交给数据链路层
数据链路层:加上源 MAC 地址和目标 MAC 地址,还有 FCS
对于目标 MAC 地址,有两种情况
ARP 高速缓存里中映射,就可以直接知道
如果没有,则源主机就会发送一条广播ARP请求分组,格式如图所示;对于目标主机接收到该请求后,会发送一条单播ARP响应分组给源主机。这样源主机就可以知道其MAC地址。
情况二:主机 和主机 通信
其他过程都一样,单独说明 如何获取 的 MAC 地址
主机 知道主机 不和自己同一网段,直接把数据报发给默认网关
路由器 通过解封装和再封装,把数据报发送给下一跳路由器
路由器 把报文发送给主机 ,封装方法和局域网的一样
ARP协议:完成主机或路由器 IP 地址到 MAC 地址的映射(解决下一跳走哪的问题)
ARP协议使用过程:
检查 ARP 高速缓存,有对应表项则写入 MAC 帧,没有则用目的 MAC 地址为 FF-FF-FF-FF-FF-FF 帧封装并广播 ARP 请求分组,同一局域网中所有主机都能收到该请求。目的主机收到请求后就会向源主机单播一个 ARP 响应分组,源主机收到后将此映射写入ARP 缓存(10 - 20 min 更新一次)
ARP 协议 4 中典型情况:
主机 A 发给本网络上的主机 B:用 ARP 找到主机 B 的硬件地址
主机 A 发给另一网络上的主机 B:用 ARP 找到本网络上一个路由器(网关)的硬件地址
路由器发给本网络的主机 A:用 ARP 找到主机 A 的硬件地址
路由器发给另一网络的主机 B:用 ARP 找到本网络上的一个路由器的硬件地址
获取 IP 地址的方法有两种:
静态配置(管理员手动分配 IP 地址)
动态配置(通过 DHCP 服务器自动分配 IP 地址)
动态主机配置协议 DHCP 是应用层协议,使用 客户/服务器 方式,客户端与服务端通过广播方式进行交互,基于 UDP。
DHCP 提供即插即用联网的机制,主机可以从服务器动态获取 IP 地址、子网掩码、默认网关、DNS 服务器名称,允许地址重用,支持移动用户加入网络,支持在用地址续租。
DHCP 协议过程:
主机广播DHCP发现报文
“有没有DHCP服务器呀” 试图找到网络中的服务器,向服务器获得一个IP地址
DHCP服务器广播DHCP提供报文
“有!有!有!” 服务器拟分配给主机一个IP地址及相关配置,先到先得
主机广播DHCP请求报文
“我用你给我的IP地址啦?” 主机向服务器请求提供IP地址
DHCP服务器广播DHCP确认报文
“用吧!” 正式将IP地址分配给主机
为了更有效地转发 IP 数据报和提高交付成功的机会
ICMP 协议支持主机或路由器:
差错(或异常)报告(发送 ICMP差错报文)
网络探询(发送 ICMP 询问报文)
终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。(无法交付)
源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报发送速率放慢。(拥塞丢数据,目前已不使用)
时间超过:当路由器你手动生存时间 TTL=0 的数据报时,除丢弃数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。(TTL = 0)
参数问题:当路由器或目的主机收到数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。(首部字段有问题)
改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据发送给另外的路由器。(值得更好的路由)
对 IMCP 差错报告报文不再发送 ICMP 差错报告报文
对第一个分片数据报片的所有后续数据报片都不发送 ICMP 差错报告报文
对具有组播地址的数据都不发送 ICMP 差错报告报文
对具有特殊地址(0.0.0.0 或 127.0.0.0)的数据不发送 ICMP 差错报告报文
发送请求和回报报文
主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送 ICMP 回送回答报文。
测试目的站是否可达以及了解其相关状态(ping)
时间戳请求和回答报文
请求某个主机或路由器问答当前的日期和时间
用来进行时钟同步和测量时间
掩码地址请求和回答报文(×,已不使用)
路由询问和通告报文(×,已不使用)
测试两个主机之间的连通性,使用了 ICMP 回送请求和回答报文
跟踪一个分组从源点到终点的路径,使用了 ICMP 时间超过差错报告报文