转载▼:http://blog.sina.com.cn/s/blog_71a6f3f10101lfzq.html
分类: 每天学习一点点 |
以往在网上学习过网友的讲解,自己也总结了一下。
图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对应蓝色端点)
图2
a) 对ICMP请求回显报文(Ping 请求报文)进行IP封装;
图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请求报文,如下;
图4
a) 对ARP请求报文进行以太网封装,并将MAC帧传输;
图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帧传递;
如下:
<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交由链路层,封装为帧进行发送;
如下:
<4> 重新回到Router0端
a) 检查MAC帧的DMAC(是自己的MAC,要接收);
b) 检查MAC帧的Type(是IP报文,要交由IP协议处理);
c) 检查IP报文的DIP(不是自己的IP,要查找路由表);
d) 查找路由器中的路由表,方法类似主机路由表查询,将IP报文转发到Router1端;(Note: TTL需要减1,SIP/DIP不变)
如下:
图8
<5> 在Router1端(可理解为IP4,MAC4对应蓝色端点)
a) 查看ARP表中DIP所对应的DMAC(若有,直接获得;否则,发送ARP Request);
<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帧传递;
如下:
<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交由链路层,封装为帧进行发送;
如下:
<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。