当你ping的时候,你知道背后发生了什么吗?( 二 )
由于ping命令的响应时间是根据请求包和响应包的时间戳计算出来的 , 所以一次ARP过程也是会消耗时间 。 这里提前缓存最新的ARP结果就是节省了下次ping的ARP时间 。
为了验证我们的猜测 , 我再进行一次ping操作 , 抓包看看是不是和我们猜测的一样 。 此时 , 计算机里面已经有了ARP的缓存 , 我们执行ARP-a看看缓存的arp列表:
文章图片
我们看看第二次ping的抓包
文章图片
【当你ping的时候,你知道背后发生了什么吗?】我们看到上图中在真正ping之前并没有进行一次ARP请求 , 这也就是说 , 直接拿了缓存中的ARP来执行了 , 另外当B计算机进行响应之前还是进行了一次ARP请求 , 它还是要确认下之前的ARP缓存是否为正确的 。 然后结束ping操作之后 , 同样再发一次ARP请求 , 更新下自己的ARP缓存 。 这里和我们的猜想基本一致 。
弄懂了ping的流程之后我们来解析下之前解释的ICMP数据结果是否和抓包的一致 。 我们来点击一个pingrequest看看ICMP协议详情
文章图片
图中红框内就行ICMP协议的详情了 , 这里的Type=8,code=0,校验是正确 , 且这是一个请求报文 。 我们再点击Responseframe:57 , 这里说明响应报文在序号57 。 详情如下:
文章图片
上图的响应报文 , Type=0,code=0 , 这里知道就是响应报文了 , 然后最后就是根据请求和响应的时间戳计算出来的响应延迟 。 3379.764ms-3376.890ms=2.874ms 。
4
总结
我们分析了一次完整的ping请求过程 , ping命令是依托于ICMP协议的 , ICMP协议的存在就是为了更高效的转发IP数据报和提高交付成功的机会 。 ping命令除了依托于ICMP , 在局域网下还要借助于ARP协议 , ARP协议能根据IP地址反查出计算机的MAC地址 。 另外ARP是有缓存的 , 为了保证ARP的准确性 , 计算机会更新ARP缓存 。
学了这个 , 以后面试再问ping的详细过程 , 应该就比较稳了吧!!!
---END---
- 京东|裁员不忘膈应人,这家互联网大厂送的离职礼物恶心到我了!
- iPhone14|准大学生的数码装备推荐
- 有人觉得中暑就是热出来的,吃一些退烧药就好了,这种做法 蚂蚁庄园今日答案6月28日
- 浮甘瓜于清泉,沉朱李于寒水”描述的是什么场面 蚂蚁庄园今日答案6月28日
- 个头大的车厘子比小樱桃营养价值更高,对吗 蚂蚁新村6月28日答案最新
- 位于广东省阳江市的海陵岛自然资源丰富,景色优美,该岛没有 神奇海洋6月28日答案
- 哪种水果横着切开像星星的形状 蚂蚁庄园今日答案6月29日
- 为验证人类和黑猩猩,是否会产生新的后代,科学家找来5位姑娘!
- 喜马拉雅山出现的“雪人”是何生物?目击者:智商高、攻击性强
- 为什么科学家表示人类“灭绝”的可能性极低?这些理由你赞同吗?
