Cisco ping命令在网络层,数据链路层的转发过程记录

平台:Cisco packet track。
要点:ping命令过程的熟悉。
简单网络拓扑:
Cisco ping命令在网络层,数据链路层的转发过程记录_第1张图片
IP分配,如上图。PC0为192.168.1.1,网关为192.168.1.100。PC1为192.168.3.1,网关为192.168.3.100。
PC4为192.168.4.1,网关为192.168.4.110。
可以发现配置PC的网关即为路由器相应端的IP,这就是为什么平时上网要配置网关。就是把数据交给路由器来转发出去,通常用路由器来充当网关。而且必须把网关和PC设为同一个网段,不然PC发送不到网关。
路由器R0的基本配置,如下图,(特权模式下show running-config命令)
Cisco ping命令在网络层,数据链路层的转发过程记录_第2张图片
路由器R2的基本配置,如下图
Cisco ping命令在网络层,数据链路层的转发过程记录_第3张图片
路由器和PC的连线用交叉线。
基本配置完成后,尝试pingPC之间(PC0pingPC1)是否能够ping通,如下图,发现是主机不可达的。
Cisco ping命令在网络层,数据链路层的转发过程记录_第4张图片
这就涉及到路由器的配置路由表问题了。先讨论ping这个命令的过程。ping是属于ICMP包的,在网络层上。利用软件的捕捉功能,捕捉数据包的流程。如下图:ICMP包的Type和Code组合是0x80,0x00代表请求回显之意,经过网络层后封装IP包头,IP的pro为0x01,代表它的”上一层”是ICMP包,然后再到数据链路层EthernetII的Type为0x0800代表上一层是IP包。
Cisco ping命令在网络层,数据链路层的转发过程记录_第5张图片
其实从上图发现
EthernetII层的Dest MAC地址居然是路由器R0的地址,为什么一开始PC0就知道R0的MAC地址呢?其实PC0是不知道的,发送ICMP包之前会触发ARP包的发送,ARP为于二层网络。用于寻找其MAC地址。其目的地址是全F,为广播。当相应的路由器找到时拆包,发现ARP里面的target IP是自己,路由器就会把地址和端口的对应关系记录进去ARP表。然后回发一个ARP包给PC0,同样,PC0也会记录信息进去ARP表中。
Cisco ping命令在网络层,数据链路层的转发过程记录_第6张图片
下面2个图分别为发送arp后路由器和PC的arp表信息:
Cisco ping命令在网络层,数据链路层的转发过程记录_第7张图片
Cisco ping命令在网络层,数据链路层的转发过程记录_第8张图片
了解ARP后,回到问题,ICMP包从PC0到PC1为什么是不可达的。
我们知道PC0和PC1之间有两个路由器,也就是R0一开始是没有R2的信息的,至少R0路由表中没有R2的对应信息。看下图:用show ip route(特权模式下)。只有两条直连的路由信息(C为直连的意思)
Cisco ping命令在网络层,数据链路层的转发过程记录_第9张图片
所以要为R0添加R2的信息,DHCP?OSPF?,先用静态配置方法吧。进入全局模式,命令格式:ip route 目标ip的网段 子网掩码 下一跳ip 。即:ip route 192.168.3.0 255.255.255.0 192.168.2.200(R2与R0相连的接口ip为200),配置完成后可以show ip route查看会发现多了一条S型的路由信息。如下图:
Cisco ping命令在网络层,数据链路层的转发过程记录_第10张图片
这时R0有了R2的路由表的静态信息。但是R2还是没有R0的路由信息。所以情况是R0发送的ICMP包R2能够收到(当然第一次的时候R2还是没有PC1的ARP信息,需要发送ARP信息)。但是R2不能把PC1的ICMP包转发出去。而且会发送回PC1,告知其目的IP不可达。看下图:type0x03和code0x01代表主机不可达。
Cisco ping命令在网络层,数据链路层的转发过程记录_第11张图片
所以还需要同样的方法配置R2路由器信息表。
Cisco ping命令在网络层,数据链路层的转发过程记录_第12张图片
最后成功:
Cisco ping命令在网络层,数据链路层的转发过程记录_第13张图片

你可能感兴趣的:(网络互连)