PC1 ping PC2 过程分析

一、IP数据包的交换转发     PC1 ping PC2       过程分析

pc1的ip地址为1.1.1.1,pc2的ip地址为1.1.1.2,两者通过交换机sw1连接

在pc1上ping pc2,即pc1向 pc2发起icmp请求此时pc1上生成一个icmp请求报文,来判断pc2的存在性根据数据包封装原理,要生icmp请求需要有目的IP地址和目的MAC地址,此处即pc2的地址,其中pc2的ip地址是pc1上发起ping时我们写入的。因此需要找到pc2的MAC地址即可。 

即:pc1若要将这个ICMP协议封装的请求发送给目标主机pc2就必须要使用IP协议来“运输”该请求。这样,IP协议这个时候就充当了一个邮差的角色,将ICMP这个数据包写上发送者(pc1)的IP地址和接收者(pc2)的IP地址,然后就可以根据这个目标地址(pc2的地址)来“投递”这个数据包了

在pc1封装的时候pc1会查看自己的arp表中是否有pc2的MAC地址,由于是一个新连接的网络,pc1发现自己没有pc2的MAC地址,但是icmp请求报文又必须需要

 

1)pc1会生成一个arp请求包,请求pc2的MAC地址pc1触发ARP协议来请求pc2的MAC地址补全自己的arp表项)。arp请求包的目的MACDst MAC为全f,全f的MAC地址是广播MAC,能在自己的广播域中达到任何一个网口上,arp请求包广播出去后到达交换机sw1

 

2)sw1收到arp请求包

先把pc1的mac地址,添加到自己的mac表中以方便转发需要交换转发属于链路传输层转发,主要依靠mac表,让到达不同mac地址的数据包在对应的接口上转达出去)。

然后发现此arp请求中目的mac为广播mac,sw1将报文从除feth10口之外的其余接口广播出去到达pc2

 

3)pc2收到arp请求包,对此数据包进行解析查看arp数据部分

pc1的mac,加入自己的arp表中。

查看arp请求包的请求数据部分

被请求mac(Target MAC address)对应的ip地址(Target IP address)是自己的,pc2生成对应的arp应答包以单播方式回应pc1的arp请求

PC2查看到收到的请求地址不是自己PC2只更新自己的arp表不进行回应。

 

4)pc2发出的arp应答包到达sw1将此arp应答包从feth10发送出去

首先sw1更新自身mac表添加pc2的mac地址。

然后sw1需要转发此arp应答包此包为单播包,sw1需要查自身的mac表找到对应的接口转发由于在arp请求包经过sw1时已经添加了pc1的mac地址,在mac表项中能够找到对应的转发接口feth10

 

5)pc1收到目的mac地址为自身的此arp应答包,进行解封装

首先pc1记录pc2的mac地址加到自身的arp表中

没有完成的icmp请求包就可以在自身的arp表中找到pc2的mac地址从而继续封装icmp请求报文

 

6)sw1收到pc1发来的icmp请求包,从feth11发送出去给pc2

sw1查找自己的arp表

发现目的mac在自己的arp表中对应的接口为feth11

将icmp请求包发出去

 

7)pc2收到icmp请求包,回应pc1的询问

pc2查看icmp请求包

发现目的mac为自己,将包解封装,发现目的ip是自己的

继续解封装,发现这是一个icmp请求包,查看自己是否存在。

pc2作为一个正常电脑生成对应的icmp应答包回应pc1。

 

8)sw1查找自己的arp表,将icmp请求包从feth10发送出去到达pc1

 

9)pc1收到icmp应答包

查看icmp应答包,发现目的mac为自己的地址,将包解封装,发现目的ip也是自己

继续解封装,查看数据部分正是pc2对自己的icmp请求包发出的icmp应答包。

10)pc1获取应答数据产生屏幕显示,告诉我们探测结果。

此时PC1 ping PC2就完成了。

 

二、IP数据包的路由转发    过程分析  

pc1的ip地址为1.1.1.1   默认网关为1.1.1.254

pc2的ip地址为1.1.2.2   默认网关为1.1.2.254  网关地址均位于路由器r1上。

 

1)pc1向pc2发出ping即pc1向 pc2发起icmp请求此时需要pc1上封装成一个icmp请求报文判断pc2的存在性)。

 

2)pc1会生成一个arp请求包,请求pc2的MAC地址(新组的网络pc1上没有pc2的mac地址,因此需要发出arp请求)。

对于pc1发出的arp请求包来说,Dst MAC为全f,全f的MAC地址是广播MAC,能在自己的广播域中达到任何一个网口上此时的组网是路由环境,pc1和pc2的掩码运算后发现不是同一网段的地址,全f的Dst MAC到达r1上,r1是不支持转发扩散。

需要pc1(发起端)对于探测不同网段ip地址时做出一定的判断,pc1的icmp请求报文的目的mac只要封装成网关的就足够(体现出路由转发环境端机要设置网关的必要性)。

 

3)pc1添加了路由器r1上feth10接口的mac(通过arp协议),封装完成了icmp请求包

icmp请求包的源地址自身的mac和ip,目的地址是网关的mac和pc2的ip。

 

4)r1收到pc1发来的icmp请求包,然后发一个ARP请求包

r1查看icmp请求包,发现目的mac为自己的mac地址

将包解封装,发现探测的目的ip是pc2。

r1通过自己的直连路由转发出去(r1上配置有pc2同网段的ip地址)

但r1并不知道pc2的mac,r1首先要发一个ARP请求包,询问pc2的mac地址。

 

5)pc2收到r1的arp请求包,pc2发出arp应答包到达r1

首先添加r1的mac到自己的arp表中。

然后查看此arp请求包发现是要请求自己的mac地址

于是pc2封装对应的arp应答包给r1基于arp协议规则 

 

6)r1收到arp应答包,对pc1发出的icmp询问包进行路由转发封装

首先添加pc2的mac到自己的arp表中。

然后根据生成的对应arp表项继续对pc1发出的icmp询问包进行路由转发封装。需要通过pc2的直连路由从feth11发出到pc2根据路由器r1的路由表可知

此时该icmp询问包的源地址是pc1的mac和ip,目的ip是pc2的ip不会变,目的mac成了pc2的mac。

 

7)pc2收到icmp请求包,解封装查看自己是否存活向pc1发送icmp应答包

查看icmp请求包,发现目的mac为自己

将包解封装,发现目的ip也是自己

继续解封装,发现这是一个icmp请求包,查看自己是否存活。

pc2向pc1发送icmp应答包(目的ip为pc1ip,目的mac为网关mac源ip为自己的ip源mac是自己的mac)。

 

8)r1收到icmp应答包(pc2发来的),封装好通过直连路由转发给pc1

此时arp缓存表中已经有了pc2的mac。

然后查看icmp请求包,发现目的mac为自己的mac地址

将包解封装,发现目的ip为pc1的ip地址,通过自己的直连路由转发出去。

r1将icmp应答包封装好以后再转发给pc1。

9)pc1收到icmp应答包

发现目的mac为自己的mac地址

开始将包解封装,发现目的ip是自己的ip

继续解封装,发现pc2对自己发出的icmp请求包对应的icmp应答包。10)pc1产生屏显告知pc2的探测结果。

10)此时PC1 ping PC2就完成了。

猜你喜欢

转载自blog.csdn.net/sinat_34285843/article/details/81475012
PC:
今日推荐