在同一网段&不同网段下的Ping(史上最详细)


通过direct与adress方式,路由表知道端口4对应的是1.1.1网段及对应的ip地址为1.1.1.2,端口5知道对应的网段是2.1.1网段及其IP地址为2.1.1.2,通过arp表,路由器可以知道自己4.5端口的mac地址对应的ip地址

主机A只知道本身的arp表中仅含有自己的ip地址对应的mac地址,其他B,C中也仅仅知道自己ip对应的mac这一表项

在同一网段下的ping(A---B):
   在A ping B时:1.看主机B与主机A是否在同一网段(通过ip地址与子网掩码相与),此                              时发现A与B在同一网段。
                        2.ping的时候只有知道B的mac地址,A的icmp请求报文才能到达B端,                            由于A的arp表中不知道B的mac地址,则A会发送一个arp广播帧(目的  mac地址为ff-ff-ff-ff-ff-ff,源mac地址为A的mac:00-50-56-c0-00-01,帧类 型为arp0806(arp类型),硬件类型为1(以太网类型),协议类型为0800(ip),硬件地址长度:6(单位字节),协议地址长度为:4(单位字节),发送端以太网地址:A的mac地址,发送端ip地址为A的ip,目的以太网地址为全0(用来存储B的mac地址,目的ip地址为B的ip),arp广播帧到达交换机后,交换机学习了A的mac地址对应的端口为1,并将该arp帧从交换机2,3端口广播, B收到arp帧后,发现帧中目的ip为本身的ip,则将自己的mac地址封装在arp应答数据帧中,同时目的mac地址,源mac,目的ip,源ip等做相应的改变,发送到交换机,交换机查看应答arp帧中源mac地址,发现交换机mac地址表中 并无B的mac表项,则学习B mac地址对应的端口为3端口,查看应答arp帧发现目的mac为已经学到的A与1端口对应的表项,则将arp应答帧从1端口发到A。
                          3.此时A的arp表已经有了B的ip地址对应的mac地址表项,此时发送                                  icmp request报文:二层头部(封装目的mac地址为B的mac,源mac为A的mac)+ip首部+icmp,icmp请求报文到达交换机后,交换机查看源mac地址为A的mac地址,之前已经学习到了该mac地址对应的端口为1,则更新该条的老化时间,
交换机查看arp帧中目的mac地址,之前已经学习到了目的mac地址(B的mac)对应的端口为3,则该icmp answer帧从3端口发送到B
                         4.B收到该帧后去掉二层头部,发现该帧的目的ip就是自己,返回一个icmp answer,将发送一个应答帧:二层头(目的mac变为A的mac,源mac为B的mac)+ip+icmp answer 到达交换机后,交换机查看该应答帧的源mac地址对应的端口3表项已经存在mac地址表中,则更新该表项老化时间,交换机查看帧中目的mac为A对应的端口  1表项,则从1端口发送出去。
5,收到icmp报文,ping成功.


以上已经非常清楚的阐述了交换在此的详细过程,在阐述A-路由器-C这条跨网段的链路ping时将忽略交换机过程。


跨网段的ping:

                 1.主机A查看路由表发现要想到达主机C则其下一跳地址为路由器4端口的ip地址,但此时并不知道端口4的mac地址。
                 2.主机A发送arp请求报文(广播),目的mac地址为ff-ff-ff-ff-ff-ff,源mac地址为A的mac,目的ip为端口4的ip,源ip为主机A的ip,到达端口4后,发现arp请求报文中目的ip地址为端口4自己的ip地址,则返回一个arp应答帧,该帧中存储了4的mac地址,源mac变为端口4的mac,目的mac为A的mac,该应答帧到达A后,A的arp表中就存在了端口4的ip与mac地址的映射表项。
                 3.此时A发送icmp报文,二层头(源mac地址为A的mac,目的mac为端口4的mac)+ip(源ip为A的ip,目的ip为4的ip)首部+icmp request,icmp报文到达路由器端口4后,剥离二层头,通过查询路由表项,发现该数据帧的目的ip为端口5所直连的网段,但不知道C的mac地址,则从端口5向C发送一个arp请求,目的mac为ff-ff-ff-ff-ff-ff,源mac为端口5的mac,目的ip为C的ip,源ip为5的ip地址(通过直连路由得到,在路由表可查),该请求到达C后,C发现数据帧中目的ip就是自己的ip,则将C的ip对应的mac地址存储在arp应答数据帧发送给端口5,此时目的ip为5的ip,源ip为C的ip,目的mac为5的mac,源mac为C的mac.
                  4.端口5获取arp应答数据帧后,就知道C的mac地址,则发送icmp报文,二层头(目的mac为C的mac,源mac为5的mac)+ip+icmp request.C收到该帧后,剥离二层头,发现目的ip就是自己的ip,则返回一个icmp answer,,发送时的数据帧:二层头(目的mac地址为5的mac,源mac为C的mac)+ip+icmp answer
路由器5端口收到该帧的时候,剥离二层头,查找路由表,发现目的ip是路由器4端口所属的网段一致,则从端口4封装二层头发出去,此时二层头中目的mac为A的mac(之前在路由器arp表中已经学到了目的ip对应的mac),源mac为路由器4端口的mac,
                 5. 到达A后,剥离二层头,发现目的ip为本身的ip,收到icmp answer报文,ping成功。



博主原创,一个字一个字敲的,转载请注明来源。


 
  • 18
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值