模拟器中PC存在一个小问题,发送的ping是独立的,等于一个包一个独立的标识符,所以抓包看到的有5个不同的标识符,但是在Windows系统里面,一个窗口进程Ping的话,都是相同的标识符的
大家有兴趣的话可以自己电脑用wireshark抓取网卡,然后Ping下看看,上图是博主ping百度,抓包得到的,可以看出来id都是为0x0001,序列号每一组(去跟回都是相同的,每发出一个 1),从窗口回显的内容中还可以得到几个有用的信息
- 时间:看图显示的时间在31~33ms(毫秒),也就是从我的电脑发出,抵达百度服务器,在从百度服务器返回到我电脑总共花费的时间,这个数值越大,表示时间越长,网络质量不好。
- TTL:这个在IP头部字段里面已经了解过了,不同的操作系统默认值不太一样,这里TTL为54,跟64接近,可以判断出百度的服务器的TTL为64(有可能为一台Linux服务器),从TTL也能表示出从我这到百度服务器中间经过了10个三层的网络设备,因为TTL在经过一个三层设备的时候会减1。
- Ping程序使用的ICMP里面的Echo Request(类型8)和Echo Replay(类型为0)
博主经验分享:这个时间怎么去根据数值来判断当前网络的好坏呢?
- 有线网络:通常有线网络在Ping网关的时候,时间值=正常在1~3ms的范围,在Ping互联网的时候(比如百度、163等服务器),时间值=正常在10~80ms的范围(偏远地区测试的结果相对会高些,这个属于正常范围,比如江苏地区的Ping taobao的服务器,可能值就在10多ms,但是新疆地区Ping taobao服务器,可能值就在60~80ms的范围了)
- 无线网络:无线网络测试的话,由于干扰因素比较多,所以相对有线来说值不太一样,Ping内网的话,在干扰较少的情况下通常是1~10多ms范围,偶尔有一个大的值出现,这个属于正常,对于外网的话,通常是10~100ms,偶然一个大的值出现也属于正常。
- 如果说一个网络中,使用有线网络去测试Ping内网的网关在几十、几百ms那说明这个网络存在问题,就需要去解决了,通常我们把这个时间也叫做延时。
差错报文类型:(介绍相对比较重要的)目标不可达消息(类型为3)、超时消息(类型为11),这些在排错篇会有详细的演示。
(1)目标不可达消息(Destiantion Unreachable Message)类型3
这个在排错中非常有用,所以这里详细介绍下几个常见的类型,在网络中,发送的数据包有可能中途设备由于策略或者路由等问题无法将IP发送给目的地址,这个时候中途处理的设备会给发送者主机返回一个目标不可达的ICMP消息,这个消息中包含了具体的原因,通过ICMP的不同代码字段来表示。所以,最终发送者主机也可以根据这些代码知道不可达的具体原因,然后呈现在程序对应的窗口中回显出来,提供给管理者人员。
网络不可达代码 0
这个不常用,因为这个代码是在IP分为A、B、C类的时候,路由器通过类别来区分网络号,如果路由表中没有,就以ICMP协议,通告网络不可达(NetworkUnreachable)告诉主机,后面打破了网络分类后,这个代码就很少见了。
主机不可达代码 1
当一个数据包经过三层设备时,通过查询路由表中发现没有该主机的信息(或者主机没有连接到网络),那么会通过ICMP协议,通告主机不可达(HostUnreachable)告诉主机原因。
协议不可达 代码 2
某个终端使用TCP协议访问对端主机时,数据包已经抵达目的端了,但是由于目的主机的防火墙禁止了该TCP协议的访问,则目标主机会以ICMP协议,通告协议不可达的原因告诉发送者。
端口不可达代码 3
某个终端访问对端主机的9999端口号访问时,数据包已经抵达目的端了,防火墙也没有限制,但是可能对端主机没有开启对应端口号的服务,所以进程没有去监听这个9999端口号,那么该主机会通过ICMP协议,通告端口不可达来告诉发送者原因。
需要分片,但设置了不分片位代码4
某个终端发送了一个IP数据包,将IP位的分片DF位变成1,如果数据包超过了中途设备能够传输的大小时,由于标志位置一,不能处理则直接丢弃,并且通过ICMP协议通告一个不可达消息类型,代码为4,告诉发送终端。
上面这些就是在实际中经常会遇到的一些报错,可以通过这些代码进行区分,可能目前看着有点不太明白,这个没事,在后续的内容中会多次遇到,当遇到后,我会在提及,这样印象会更加深刻。
(2)超时消息(ICMP Time exceeded Message)--类型11
在学习IP协议字段的时候,其中一个字段叫做TTL(Time to Live,生存周期),它的值经过一个三层设备就会减1,直到变成0后被丢弃,丢弃的设备会发送一个ICMP超时消息来通知主机,告知该包已经被丢弃。
这个实验有电脑的都可以操作,在CMD里面,ping www.baidu.com -i 1,这个的意思是访问百度TTL设置成1,中间就被丢弃了,因为TTL经过一个三层设备会减去1,这里为1,过了一台就变成0了,可以看到这个值是192.168.255.254返回告诉TTL 传输中过期,这个就是ICMP的超时消息,只是电脑的进程收到以后,把结果回显在了窗口里面。
(3)traceroute
在ICMP中除了Ping程序以外,还有一个程序使用率非常频繁,就是traceroute(Linux中是这个命令,在wind中叫做tracert,不同网络设备厂家上面也有点差异),那这个有什么作用呢?
探测经过了哪些设备,记录下地址。