根据上图,你会知道 ICMP协议头包含 4个字节,头部主要用来说明类型和校验 ICMP报文。
下图是对应的类型和代码释义列表,后面分析抓包的时候会用到。
简单介绍完了 ICMP,那么抓包过程中出现的 ARP协议是什么呢?同样来简单解释下:
01****ARP协议
我们知道,在一个局域网中,计算机通信实际上是依赖于 MAC地址进行通信的,那么 ARP( AddressResolutionProtocol)的作用就是根据 IP地址查找出对应的 MAC地址。
02****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=8,code=0, 校验是正确,且这是一个请求报文。
我们再点击Responseframe:57,这里说明响应报文在序号 57。详情如下:
上图的响应报文, Type=0,code=0,这里知道就是响应报文了,然后最后就是根据请求和响应的时间戳计算出来的响应延迟。3379.764ms-3376.890ms=2.874ms。
0****3
总结一下,你就知道
你看,上面的文章其实是分析了一次完整的 ping请求过程。
ping命令是依托于 ICMP协议的, ICMP协议的存在就是为了更高效的转发 IP数据报和提高交付成功的机会。
ping命令除了依托于 ICMP,在局域网下还要借助于 ARP协议, ARP协议能根据 IP地址反查出计算机的 MAC地址。
另外 ARP是有缓存的,为了保证 ARP的准确性,计算机会更新ARP缓存。
学了这个,以后面试再问 ping的详细过程,应该就比较稳了吧
如何入门学习网络安全
零基础入门
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
视频配套资料&国内外网安书籍、文档&工具
当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!