全面屏|当你 ping 的时候,你知道背后发生了什么吗?( 二 )
- Ping过程解析
了解了上面的基础概念后 , 我们来分析下抓包的数据 , 其流程如下:
- A 电脑( 192.168.2.135)发起 ping请求 , ping192.168.2.179
- A 电脑广播发起 ARP请求 , 查询 192.168.2.179的 MAC地址 。
- B 电脑应答 ARP请求 , 向 A电脑发起单向应答 , 告诉 A电脑自己的 MAC地址为 90:A4:DE:C2:DF:FE
- 知道了 MAC地址后 , 开始进行真正的 ping请求 , 由于 B电脑可以根据A电脑发送的请求知道 源 MAC地址 , 所以就可以根据源 MAC地址进行响应了 。
观察仔细的朋友可能已经发现 , Ping 4次请求和响应结束后 , 还有一次 B电脑对 A电脑的 ARP请求 , 这是为什么呢?这里我猜测应该是有 2个原因:
- 由于 ARP有缓存机制 , 为了防止 ARP过期 , 结束后重新更新下 ARP缓存 , 保证下次请求能去往正确的路径 , 如果 ARP过期就会导致出现一次错误 , 从而影响测试准确性 。
- 由于 ping命令的响应时间是根据请求包和响应包的时间戳计算出来的 , 所以一次 ARP过程也是会消耗时间 。 这里提前缓存最新的 ARP结果就是节省了下次 ping的 ARP时间 。
为了验证我们的猜测 , 我再进行一次 ping操作 , 抓包看看是不是和我们猜测的一样 。 此时 , 计算机里面已经有了ARP的缓存 , 我们执行 ARP-a 看看缓存的arp列表:
我们看看第二次 ping的抓包
我们看到上图中在真正 ping之前并没有进行一次 ARP请求 , 这也就是说 , 直接拿了缓存中的 ARP来执行了 , 另外当 B计算机进行响应之前还是进行了一次 ARP请求 , 它还是要确认下之前的 ARP缓存是否为正确的 。 然后结束ping操作之后 , 同样再发一次 ARP请求 , 更新下自己的 ARP缓存 。 这里和我们的猜想基本一致 。
弄懂了 ping的流程之后我们来解析下之前解释的 ICMP数据结果是否和抓包的一致 。 我们来点击一个 ping request看看 ICMP协议详情
图中红框内就行 ICMP协议的详情了 , 这里的 Type=8code=0 校验是正确 , 且这是一个请求报文 。 我们再点击Responseframe:57 , 这里说明响应报文在序号 57 。 详情如下:
上图的响应报文 , Type=0code=0 , 这里知道就是响应报文了 , 然后最后就是根据请求和响应的时间戳计算出来的响应延迟 。 3379.764ms-3376.890ms=2.874ms 。
4
总结
我们分析了一次完整的 ping请求过程 , ping命令是依托于 ICMP协议的 , ICMP协议的存在就是为了更高效的转发 IP数据报和提高交付成功的机会 。 ping命令除了依托于 ICMP , 在局域网下还要借助于 ARP协议 , ARP协议能根据 IP地址反查出计算机的 MAC地址 。 另外 ARP是有缓存的 , 为了保证 ARP的准确性 , 计算机会更新ARP缓存 。
【全面屏|当你 ping 的时候,你知道背后发生了什么吗?】---END---
学了这个 , 以后面试再问 ping的详细过程 , 应该就比较稳了吧!!!
- 荣耀|今年过节不乱跑,荣耀智慧屏1499起,和年夜饭一样真香
- 魅族|魅族19配置曝光,天玑9000+三星E5直屏,网友: 来势汹汹!
- 大屏|尺寸直追笔记本 曝国产厂商将推出高刷大屏旗舰平板
- iqoo|iQOO Z5x兼备长续航与优质好屏,无压力畅玩游戏
- iPhone|iphone14价格被曝!“胶囊”挖孔屏+三星4nm芯片,售价或5999起
- iPhone|iPhone14Pro打孔屏你受不了,刘海咋看习惯了?
- 小米科技|从4999跌至2889元,2K曲面屏+IP68防水,小米老款旗舰售价大跳水
- 2599起!曾经破万的折叠屏,现在还有人买吗?
- 触控|iPhone的屏幕触控采样率,揭开了安卓最后一块遮羞布。
- iPhone13用户后悔?14全系列标配120Hz屏幕,可选8GB运行内存!