不同网段PC通过路由器互Ping过程分析

时间:2024-05-21 13:20:03

 

转载http://blog.sina.com.cn/s/blog_71a6f3f10101lfzq.html

  分类: 每天学习一点点

以往在网上学习过网友的讲解,自己也总结了一下。

不同网段PC通过路由器互Ping过程分析

                                         

                                            图1

 

Known:

IP1: 192.168.0.2/24

IP2: 192.168.1.2/24

IP3: 192.168.0.1/24

IP4: 192.168.1.1/24

MAC1, MAC2, MAC3, MAC4

路由器左端口为PC1默认网关 ( IP3 )

路由器右端口为PC2默认网关 ( IP4 )

 

PC1 ping PC2

 

<1> 在主机PC1(可理解为IP1,MAC1对应蓝色端点)

不同网段PC通过路由器互Ping过程分析

图2

a) 对ICMP请求回显报文(Ping 请求报文)进行IP封装;

不同网段PC通过路由器互Ping过程分析
 

图3

 

a) 查看PC1的IP路由表;(在cmd中输入route print可查看IP路由表。根据“最长匹配路由”和“最低跃点数”原则选择下一跳地址和端口)

b) 不是本网段IP,需将数据报发给默认网关(192.168.0.1);

c) 查询ARP表;(ARP表为本网段的IP-MAC映射关系表)

d) 若ARP表中有默认网关MAC地址(MAC3),就可直接得知此MAC地址。若无,需发送ARP请求报文,如下;

不同网段PC通过路由器互Ping过程分析
 

                                              图4

a) 对ARP请求报文进行以太网封装,并将MAC帧传输;

不同网段PC通过路由器互Ping过程分析
 

                                                图5

 

 

<2> Router0(可理解为IP3,MAC3对应蓝色端点)

a) 检查MAC帧的DMAC(广播帧,要接收);

b) 检查MAC帧的Type(ARP报文,要交由ARP协议处理);

c) 检查ARP Request报文的DIP(是自己的IP,要接收);

d) 检查ARP Request报文的Operation Code (是ARP请求报文);

e) 将ARP Request报文的SIP---SMAC映射放入本路由器的ARP表中;

f) 回应ARP Response报文,并封装为MAC帧传递;

如下:

不同网段PC通过路由器互Ping过程分析
                                          图6

 

<3> 重新回到PC1

a)  检查MAC帧的DMAC(是自己的MAC,要接收);

b)  检查MAC帧的Type(ARP报文,要交由ARP协议处理);

c)  检查ARP Response报文的DIP(是自己的IP,要接收);

d)   检查ARP Response报文的Operation Code (是ARP应答报文);

e)  将ARP Response报文的SIP---SMAC映射放入本机的ARP表中;

f)   将之前暂存的IP数据报和MAC3交由链路层,封装为帧进行发送;

如下:

 

不同网段PC通过路由器互Ping过程分析
                                         图7

 

<4> 重新回到Router0

a) 检查MAC帧的DMAC(是自己的MAC,要接收);

b) 检查MAC帧的Type(是IP报文,要交由IP协议处理);

c) 检查IP报文的DIP(不是自己的IP,要查找路由表);

d) 查找路由器中的路由表,方法类似主机路由表查询,将IP报文转发到Router1端;(Note: TTL需要减1,SIP/DIP不变)

如下:

                    不同网段PC通过路由器互Ping过程分析

                                        图8

 

<5> Router1(可理解为IP4,MAC4对应蓝色端点)

a)        查看ARP表中DIP所对应的DMAC(若有,直接获得;否则,发送ARP Request);

 

不同网段PC通过路由器互Ping过程分析                                   图9

 

<6> PC2(可理解为IP2,MAC2对应蓝色端点)

a) 检查MAC帧的DMAC(广播帧,要接收);

b) 检查MAC帧的Type(ARP报文,要交由ARP协议处理);

c) 检查ARP Request报文的DIP(是自己的IP,要接收);

d) 检查ARP Request报文的Operation Code (是ARP请求报文);

e) 将ARP Request报文的SIP---SMAC映射放入本路由器的ARP表中;

f) 回应ARP Response报文,并封装为MAC帧传递;

如下:

不同网段PC通过路由器互Ping过程分析
                                        图10

<7> 重新回到Router1

a) 检查MAC帧的DMAC(是自己的MAC,要接收);

b) 检查MAC帧的Type(ARP报文,要交由ARP协议处理);

c) 检查ARP Response报文的DIP(是自己的IP,要接收);

d) 检查ARP Response报文的Operation Code (是ARP应答报文);

e) 将ARP Response报文的SIP---SMAC映射放入本机的ARP表中;

f)  将之前暂存的IP数据报和MAC2交由链路层,封装为帧进行发送;

如下:

 

不同网段PC通过路由器互Ping过程分析
                                       图11

 

<8> 重新回到PC2

a) 检查MAC帧的DMAC(是自己的MAC,要接收);

b) 检查MAC帧的Type(是IP报文,要交由IP协议处理);

c) 检查IP报文的DIP(是自己的IP,要接收);

d) 检查IP报文的协议号(是ICMP报文,要交由ICMP协议处理);

e) 检查ICMP的类型和代码(是ICMP请求回显报文,要发送ICMP回显应答报文)。

 

PC2发送到PC1的ICMP回显应答(Ping 应答)报文的过程,和以上所介绍的Ping请求

报文的发送是一样的,但更为简单。因为此时PC1,PC2,Router的ARP表中已经存有

需要的IP-MAC映射关系,不需要再进行ARP Request与ARP Response了。另外需要注

意的是,ICMP回显应答(Ping应答)报文的类型与代码均为0。