当前位置:C++技术网 > 资讯 > TCP/IP网络协议之ARP与ICMP协议实现并控制IP数据报传递

TCP/IP网络协议之ARP与ICMP协议实现并控制IP数据报传递

更新时间:2016-11-07 22:25:23浏览次数:1+次

之所以写这篇文章,是因为TCP/IP课上老师布置的,并且会在考试中会出现,因此,自己跑了一遍,总结下来。
ARP协议:地址解析协议,通过此协议来获取硬件mac地址。这是很重要的协议.
ICMP协议:网际控制报文协议,通过此协议来控制IP数据报传输的正确性

然后,我们在Cisco Packet Tracer软件中布置路由器与主机:

然后,我们为PC机分配IP地址:
PC0:192.168.1.228 网关:192.168.1.10
PC1:192.168.1.229 网关:192.168.1.10
PC2:192.168.2.228 网关:192.168.2.10
PC3:192.168.2.229 网关:192.168.2.10

然后为路由器的两个接口配置地址:
F0/0:192.168.1.10
F0/1:192.168.2.10

然后,我们选择

只显示ARP与ICMP协议:
然后,我们在PC0与PC3上测试一遍,得出下面的测试结果:

下面,我们来一个一个分析一遍:
首先要说明一点,如果你之前在某两台主机上跑过了,然后之后你在测试就不会显示ARP报文数据,因为IP数据包在第一次传输时,会高速缓存每个主机,路由器的mac地址,而正是因为,我们在第一次传输数据报时,不知道目标主机的mac地址,才需要ARP报文,而每台主机的数据缓存都是在ARP那会。好了,下面我们来分析:
首先我们查看At PC0时的ICMP报文数据:

可以看到,我们的目的IP与源IP地址.
然后我们查看下At PC0的ARP数据:

可以看到,此时的目的mac地址是FFFF,源mac地址是PC0的mac地址,而目的IP地址是路由器接口F0的地址

看到图3,你会发现PC1也在里面,这是因为IP数据报在传输时是广播询问,单播回应。这也就解释了为什么目的mac地址是FFFF。

可以看到此时目的IP变成了PC0,源mac地址变成了路由器接口F0的mac地址.接着看:

此时在路由器这里,我们可以看到,源IP没变,源mac地址是路由器接口F1的mac地址,而目的IP没变,目的mac是我们要的PC2的mac地址。这也就差不多完成了IP数据包的传输了。
接下来的的分析也就没有必要的,我们可以猜测出,在此之后的传输,源,目的IP不会变。源mac地址是路由器接口F1,目的mac地址还是PC2的mac地址。等到PC2接到数据报后再回传回去,分析步骤就是相反的了。
不过在这里有个疑问,当IP数据报第一次传输到了路由器之后为什么要回去?回到PC0,我猜是这样的,路由器中的路由表存储了每个主机的IP,mac地址,当IP数据请求广播到了路由器就开始查找路由表,来对比是否在此路由表中,结果查到了,就回去告诉PC0,请求的主机在另一块网络中,如果没有查到,那么也要回去告诉PC0,没有在此路由表中,那也就是说,所请求的主机并不存在(仅限于本实验,因为只有一个路由器).路由器中的路由表存储了与其接口直接或间接相连的主机的Mac,Ip地址。当主机的请求到了路由器就开始查路由表,通过ARP将IP地址转换成mac地址来核对其请求的主机.