【简介】Ping 包查询网络连通情况是我们最常用的操作之一,通过分析Ping包的内容,我们可以看到更多的东西。
网络环境
为了使测试环境更加真实,我们布置了这样一个网络环境。防火墙是192.168.28.0/24网段,无线AP是192.168.38.0/24网段。
① 防火墙是192.168.28.0/24网段,无线AP是192.168.38.0/24网段。三层交换机与防火墙之间是172.20.1.0/24网段。服务器是172.16.2.0/24网段。工作电脑是172.16.1.0/24网段。
② 连接无线AP的笔记本电脑无线网卡的IP地址是 192.168.38.26 。
③ 笔记本电脑通过无线网卡,可以Ping通IP地址172.16.2.11的服务器。
④ 跟踪路由,可以看到经过无线IP网关后到达三层交换网,再找到服务器IP地址。
Wireshark 抓包
前面我们已经知道有抓包过滤和显示过滤,这里我们都试试。
① 启动 Wireshark ,点击WLAN接口,输入抓包过滤器,点击蓝色图标开始抓包。
② Ping指定服务器IP地址,在 Wireshark 上显示过滤后的抓包内容。
③ 也可以不在抓包过滤器里输入内容,这样会抓WLAN的所有包。在显示过滤器里输入过滤条件,一样可以把需要的包过滤出来。
Ping 包内容
Ping 是因特网包探测器 (Packet Internet Gopher) 的英文缩写,PC 机执行 Ping 是利用了 ICMP (Internet Control Message Protocol 互联网控制报文协议) 的“回响”功能来检查目标主机是否存在、源主机和目标主机间的连接速度是否正常。
当我们执行 Ping 的时候,源主机首先会构建一个 ICMP 请求数据包,ICMP 数据包内包含有多个字段,最重要的是两个,第一个是类型字段,对于请求数据包而言该字段为 8,另外一个是顺序号,主要用于连续Ping的时候,区分发出的多个数据包,一般从 1 开始编号,每发出一个请求数据包,顺序号会自动加一。然后 ICMP 层会将这个 ICMP 数据包连同目标 IP 地址一起交给 IP 层,并在映射表中查出目标 IP 地址所对应的 MAC 地址后,交给数据链路层,最终由数据链路层封装成数据帧并通过物理层发送出去,数据帐发出的同时,源主机会记录该数据帧的发出时刻。
目标主机收到这个数据帧后,经过数据链路层、IP 层和 ICMP 层的层层解析(这个过程其实就是发送的反过程),最终获得源主机发送的 ICMP 数据包中的数据部分,目标主机发现接收到的是一个请求数据包后,会构建一个 ICMP 应答包,应答数据包的类型字段为 0,顺序号为接收到的请求数据包中的顺序号,然后再发送出去。
在规定的时候间内(一般是 0.5S,1S,2S,不同的主机类型有所不同),源主机如果没有接到 ICMP 的应答包,则说明目标主机不可达,如果接收到了 ICMP 应答包,则说明目标主机可达,此时,源主机会检查当前时刻,减去该数据包最初从源主机上发出的时刻,就是 ICMP 数据包的时间延迟。
① 整个ICMP包的长度是74个字节。
② 前面的14个字节为以太网帧头。
③ 跟着的20字节为IP帧头。报文由IP首部(20字节)加ICMP报文(40)字节组成。
④ 再后面8个字节是ICMP信息头,最后32个字节是ICMP数据。ICMP信息头包括:类型(8或0)、代码(0)、检验和、标示符、序号。
⑤ 请求报文的类型为8,应答报文的类型为0。
Ping 包分析
有很多种情况下Ping包Ping不通,我们可以抓包看看Ping不通是什么提示。
① 很多情况下被Ping的电脑软件防火墙是打开的。
② Ping包Ping不通。
③ 抓包可以看到抓到四个请求包。
④ 在ICMP信息里可以看到有提未,没有看到响应。网线没有接、防火墙的策略没有放行等等,都会出现这样的提示。