计算机网络 |
您所在的位置:网站首页 › 路由转发原理报文哪些是变的 › 计算机网络 |
文章目录
IP数据包的交换转发 PC1 ping PC2 过程分析IP数据包的路由转发 过程分析
转载自:
p1 ping p2过程分析
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请求包的目的MAC(Dst 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为pc1的ip,目的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就完成了。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |