使用 wireshark 分析 Ping 通信的具体流程
当网络出现异常时,我们经常使用 ping 命令检查一条通信链路是否还能通信成功。前述我们学习了几种常见网络抓包及协议分析工具,以及 wireshark 的基本使用,今天我们小试牛刀,分析一个面试过程中经常遇到的问题—— ping 命令的触发的网络行为到底是怎样的。
查看本机 ip 地址
在 linux 下输入 ifconfig 或者在 windows 的 cmd 窗口输入 ipconfig /all 命令,查看本机 IP。如下图,本机无线 ip 为“192.168.0.102"。
启动 wireshark
打开 wireshark,设置捕获过滤表达式(host 192.168.0.102)为捕获本机 IP (上一步查询到的 IP)的数据包。然后按下 enter 键,开始抓包。
发起 ping 通信
如下图,在linux 的终端(或者打开 windows 下的 cmd 窗口)输入向百度发起 ping 通信的命令:
查看 ping 通信的抓包数据
如下图,设置显示过滤表达式(ip.addr == 192.168.0.102)为本机 IP,查看 ping 命令触发的实际通信过程。
如上图,输入 ping 命令后,经历了下述几个步骤:
-
192.168.0.102 (本机PC) 向 192.168.1.1 (路由器)发起 DNS 域名解析请求(query) -
路由器将 www.baidu.com 解析为其对应的 IP 地址,并将解析结果返回给PC(reply) -
PC 获取到 www.baidu.com 的 IP 地址 36.152.44.95 后,向该地址发送 ICMP 协议请求(request) -
百度36.152.44.95 向本机 PC 发送 ICMP 响应(reply)
总结:
Ping 的过程,首先是基于 DNS 协议的域名解析,然后是基于 ICMP 协议的请求-响应。
码字不易,谢谢收藏和点赞。
|