网络层-第三节4:ARPDHCP和ICMP
Posted 快乐江湖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络层-第三节4:ARPDHCP和ICMP相关的知识,希望对你有一定的参考价值。
文章目录
一:IP地址和MAC地址的关系
网络层使用的地址是IP地址,数据链路层则使用的是MAC地址(硬件地址),交付数据时进行数据封装,当把IP数据报分组封装为MAC帧后,数据链路层是看不见数据报分组中的IP地址的
又因为存在路由器的隔离,所以在IP网络中是无法通过广播方式依靠MAC帧地址来完成跨网络的寻址的,因此在IP网络的网络层只能使用IP地址来完成寻址
具体来说:寻址时,每个路由器依据其路由表(依靠静态路由或动态路由协议生成)选择到目标网络(即主机号全为0的网络地址)需要转发的下一跳(路由器的物理端口号或下一网络地址),IP分组通过多次路由转发到达目标网络后,改为在目标LAN中通过MAC地址以广播方式寻址
- 在IP层抽象的互联网上只能看到IP数据报
- 虽然在IP数据报首部中有完整的源IP地址和目的IP地址,但路由器只根据目的IP地址的网络号进行路由选择
- 在局域网的链路层,只能看见MAC帧。而通过路由器转发IP分组时,此IP分组在每个网络中都被路由器解封装和重新封装。因此IP数据报在被路由器转发时,其数据链路层封装所使用的MAC地址是不断改变的。这也决定了无法使用MAC地址跨网络通信
- 尽管互联在一起的网络的硬件地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机与主机或路由器之间的通信
二:ARP(地址解析协议)- 解决下一跳走哪
地址解析协议ARP:无论网终层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址。而ARP就是用来完成IP地址到MAC地址的映射的。每台主机都设有一个ARP高速缓存,用来存放本局域网上各主机和路由器的IP地址到MAC地址的映射表,称ARP表。该协议工作原理如下
- 主机
A
A
A欲向本局域网上的某台主机
B
B
B发送IP数据报时,先在其ARP高速缓存中查看有无主机
B
B
B的IP地址。如果有,就可以查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址;如果没有,那么就通过使用目的MAC地址为
FF-FF-FF-FF-FF-FF
的帧来封装并广播ARP请求分组,使同一个局域网里的所有主机收到ARP请求 - 主机 B B B收到该ARP请求后,向主机 A A A发出响应ARP分组,分组中包含主机B的IP与MAC地址的映射关系,主机 A A A在收到后将此映射写入ARP缓存,然后按查询到的硬件地址发送MAC帧
ARP协议有如下4种典型的情况
- 主机 A A A发给本网络上的主机 B B B:用ARP找到主机 B B B的硬件地址
- 主机 A A A发给另一网络上的主机 B B B:用ARP找到本网络上一个路由器的硬件地址
- 路由器发给本网络上的主机 A A A:用ARP找到主机 A A A的硬件地址
- 路由器发给另一网络上的主机 B B B:用ARP找到本网络上的一个路由器的硬件地址
三:DHCP(动态主机配置协议)- 主机如何获取IP地址
动态主机配置协议DHCP:是应用层协议,使用客户-服务器方式,客户端和服务端通过广播方式进行交互,基于UDP。DHCP提供即插即用联网机制,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址,允许地址重用、支持移动用户加入网络和在用地址续租。交换过程如下
- DHCP客户机广播“DHCP发现”消息,试图找到网络中的DHCP服务器,以便从DHCP服务器获得一个IP地址
- DHCP服务器收到“DHCP发现”消息后,向网络中广播“DHCP提供”消息,其中包含提供DHCP客户机的IP地址和相关配置信息
- DHCP客户机收到“DHCP提供”消息,如果接受DHCP服务器所提供的相关参数,那么通过广播“DHCP请求”消息向DHCP服务器请求提供IP地址
- DHCP服务器广播“DHCP确认”消息,将IP地址分配给DHCP客户机
四:ICMP(网际控制报文协议)- 提高交付成功的几率
网际控制报文协议ICMP:是IP层协议,让主机或路由器报告差错和异常情况以此提高IP数据报交付成功的机会。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。ICMP报文有两种
- ICMP差错报告报文
- ICMP询问报文
ICMP差错报告报文用于目标主机或到目标主机路径上的路由器向源主机报告差错和异常情况。共有以下5种类型:
- 终点不可达:当路由器或主机不能交付数据报时,就向源点发送终点不可达报文
- 源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。
- 时间超过:当路由器收到生存时间(TTL) 为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。
- 参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
- 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)
以下4种情况是不应该发送ICMP差错报文的
- 对ICMP差错报告报文不再发送ICMP差错报告报文
- 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
- 对具有组播地址的数据报都不发送ICMP差错报告报文
- 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文
以上是关于网络层-第三节4:ARPDHCP和ICMP的主要内容,如果未能解决你的问题,请参考以下文章