【计算机网络】网络层实验:ARP协议和ICMP协议

ARP协议

背景知识

(1)什么是ARP

ARP,即地址解析协议。TCP/IP网络使用ARP实现IP地址到MAC地址的动态解析。由于IP地址只是一个逻辑地址,它实现了对互联网进行统一编址,但物理网络仍然是采用自身的物理地址(也称MAC地址)来唯一识别设备。因此,在物理网络中传输数据单元时,最终还是需要使用MAC地址来标识目标地址。

(2) ARP工作原理

每个主机和路由器的内存中都设有一个ARP高速缓存,用于存放其他设备的IP地址到物理地址的映射表。当主机欲向其他主机发送IP包时,先在本地ARP缓存中查看是否有对方的MAC地址信息。如果没有,则ARP会在网络中广播一个ARP请求,拥有该目的IP地址的设备将自动发回一个ARP回应,对应的MAC地址将被记录到主机的ARP缓存中。考虑到一个网络可能经常有设备动态加入或者撤出,并且设备也可能更改IP地址,因此,ARP协议将会删除过期未更新的ARP条目,具体时间因设备而异。如有些 Windows 系统的ARP有效时间为2min。ARP缓存可以提高工作效率。如果没有缓存,每当有数据帧进入网络时,ARP都必须不断请求地址转换,这样会延长通信延时,甚至造成网络拥塞。反之,保存时间过长也可能导致离开网络或者更改第3层地址的设备出错。
ARP可解决同一个局域网上IP地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。

拓扑图配置

【计算机网络】网络层实验:ARP协议和ICMP协议_第1张图片

实验过程

首先在清空arp的情况下,利用ping给192.168.1.2即PC1发送一个ICMP,此时PC0会首先广播一个ARP包,获知PC1的IP对应的MAC地址。之后再进行ICMP包的发送。
【计算机网络】网络层实验:ARP协议和ICMP协议_第2张图片
在已经拥有PC1的ARP缓存的情况下,PC0就可以通过交换机的交换表直接发送到PC1上。
【计算机网络】网络层实验:ARP协议和ICMP协议_第3张图片

【计算机网络】网络层实验:ARP协议和ICMP协议_第4张图片
查看PC0发送的第一个ARP查询包,ARP帧中封装的目的地址是全1的广播地址。
【计算机网络】网络层实验:ARP协议和ICMP协议_第5张图片
PC1发送的第一个ARP应答包,返回给PC0。

思考

(1) 任务一完成后,哪些PC的ARP缓存拥有PC0的MAC地址记录?哪些PC新添加了PC1的MAC地址记录?
PC1的ARP缓存拥有了PC0的MAC地址。
PC0新添加了PC1的MAC地址记录。

(2) ARP缓存的作用是什么?缓存中记录的保存时间是否越长越好?请解释理由。
考虑到一个网络可能经常有设备动态加入或者撤出,并且设备也可能更改IP地址,因此,ARP协议将会删除过期未更新的ARP条目,具体时间因设备而异。如有些 Windows 系统的ARP有效时间为2min。ARP缓存可以提高工作效率。如果没有缓存,每当有数据帧进入网络时,ARP都必须不断请求地址转换,这样会延长通信延时,甚至造成网络拥塞。反之,保存时间过长也可能导致离开网络或者更改第3层地址的设备出错。
(3) 主机使用ARP能查询到其他网段的MAC地址吗?为什么?
不能,ARP协议只能访问同一个广播域下的主机,如果要查询其他网段,则需要交给网关解决。
(4) 在任务二的步骤3中,ARP被执行了几次?
2次,一次是查询包,一次是路由返回的应答包。

ICMP协议

背景知识

(1)什么是ICMP协议

ICMP是** “Internet Control Message Protocol”(Internet控制报文协议)**的缩写。它是TCP/IP协议族中的一个子协议,用于在IP主机、路由器之间传递网络通不通、主机是否可达、路由是否可用等控制消息。这些控制消息虽然并不传输用户数据,但对于保证TCP/IP协议的可靠运行是至关重要的。
IP协议只提供无连接的、尽力而为的数据报服务;TCP协议在IP基础上建立有连接的传输服务,解决了网络底层的数据报丢失、重复、延迟或乱序等问题,但仍无法解决因网络故障所导致的分组无法传输的问题。因此,ICMP提供了一种IP包无法传输的差错报告机制,可以帮助发送方了解为什么无法传递,网络发生了什么问题,以便解决网络故障问题。
ICMP协议报文使用IP数据报封装(IP分组的协议字段为1),ICMP报文类型包括有5种差错报告报文和4种询问报文。

(2)PING命令和Tracert命令

为了观察ICMP协议,本实验用到Ping命令和Tracert命令,它们都是基于ICMP协议实现的,具体功能和原理分别如下:
Ping程序是一个应用层直接使用ICMP协议的例子。该程序使用了 ICMP协议的回送请求与应答报文,用来测试目的主机或路由器是否能够到达。网络管理员或用户常使用该命令来诊断网络故障。
Tracert程序是Windows自带的一个路由跟踪实用小程序,用于跟踪一个IP数据包从源点到终点的路径。Tracert命令利用IP生存时间(TTL)字段和ICMP错误报告消息来确定从一个主机到网络上其他主机的路由。Tracert从源主机向目标主机发送一连串的IP包,数据包封装的是回送请求的ICMP报文;第一个数据包的TTL设置为1,第二个设置为2,依此类推;路由器转发数据包时将TLL减1,如果TTL等于0时,则丢弃数据包并向源主机发送一个ICMP超时的差错报告;当有数据包到达目的主机时,目的主机也会向源主机发送一个ICMP应答报告。依据各路由器和目标主机报告的消息,源主机即可获得到达目标主机所经过的路由器的IP地址以及所需的往返时间。

实验配置

【计算机网络】网络层实验:ARP协议和ICMP协议_第6张图片

实验过程

首先由PC0向PC1发送一条ICMP,表示ping通。
【计算机网络】网络层实验:ARP协议和ICMP协议_第7张图片
ping任意一个无法ping通的地址,路由器会丢弃数据包并返回一个错误报告。
【计算机网络】网络层实验:ARP协议和ICMP协议_第8张图片
【计算机网络】网络层实验:ARP协议和ICMP协议_第9张图片
在PDU Details可以观察到两个ICMP报文,一个是原先的回送请求报文,另一个为错误报告报文。

【计算机网络】网络层实验:ARP协议和ICMP协议_第10张图片
在PC0上运行tracert命令,每个节点均会测试三遍。
【计算机网络】网络层实验:ARP协议和ICMP协议_第11张图片
【计算机网络】网络层实验:ARP协议和ICMP协议_第12张图片
【计算机网络】网络层实验:ARP协议和ICMP协议_第13张图片
在PDU Details中可以观察到依次发送了TTL为1、2、3的ICMP包。

思考

(1) 在tracert命令中,为什么源主机对于每个TTL值都要重复进行多次探测?
重复检测,避免丢包。
(2) ICMP协议是否会给Internet带来安全隐患?
ICMP作为网络层控制协议,可以对网络主机进行探寻,那么必然也会带来一定的隐患。

你可能感兴趣的:(计算机网络)