查看: 13556|回复: 0

从ICMP报错中主动发现网络异常

[复制链接]
发表于 2012-11-22 14:09:13 | 显示全部楼层 |阅读模式
本帖最后由 long_323 于 2012-11-22 14:14 编辑


ICMP是(Internet Control Message ProtocolInternet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。以上是百科名片中对ICMP的解释,ICMP包头虽然只有4个字节,却有多种类型和代码,不管我们是进行网络安全评估、故障排查还是进行业务性能优化,ICMP都不可忽视。
本文不打算详细解释ICMP的各种类型的具体意义,只是从最近一次对客户网络评估时发现的ICMP报错,来展现ICMP在我们进行网络分析时的价值。ICMP虽有多种类型和代码,但目前的网络分析工具都能对各种ICMP进行解释,不太需要我们一条条的去详细了解每个代码的意义,当然并不意味着我们就可以对ICMP一无所知。
1.发现ICMP报错

分析工具大家可以按照自己的习惯选择,目前不管是wirsharksniffer科来都可以支持对ICMP的智能分析。
首先从海量数据中,定位出异常数据,明确异常主机和会话。

上图分3个板块:诊断条目、诊断发生地址和诊断时间,网络层诊断中的ICMP目的不可达+诊断发生地址107.198+诊断事件第一个数据包,结合3个板块,找出其中一个故障数据包。

从解码的数据来看,该ICMP报错是目的不可达报错(类型3),原因是需要分片但设置了不分片比特DF(代码4),并显示了产生报错的设备(*.27.232)的MTU1500。从上面能得出的结论是:主机*.27.232收到了一个数据包大于1500字节,但转发这个数据包的出口MTU1500,这样需要对该大包进行分片;但该大包DF位置1了,不允许进行分片,故主机*.27.232把数据包丢弃了,同时发出了此ICMP报错。
什么样的大包导致了这个ICMP报错呢?
ICMP报错中携带了该大包的原始IP包头+TCP包头+部分应用层数据。

红色标出部分,该大包总长度为2223字节,并且不允许分段。该数据包是HTTPGET请求数据,会话是*.107.1982101---*.172.232:80,发送时间是2012/11/12 14:10:54。基于这些特征,我们很容易从原始的海量数据中找出该“肇事包

2.定位故障时原始数据
基于时间定位时,时间范围要稍微大些。



ICMP报错时的相关数据提取出来后,并未发现长度为2223字节的大包。
TCP在握手期间会有一个TCP最大报长的协商操作,这个协商可以有助于避免MTU丢包。

在解码字段中,可以清晰的看到客户端与服务器支持的最大端长都为1460,按理论来说不应该出现2223字节的大包。
继续分析TCP交易图,客户端在完成TCP三次握手后,发出了Http Get操作,并且有两个数据包,大小分别为1518781字节,而在3秒后重传了这两个数据包,并都得到了服务器端的ACK
整个过程并没有发现2223字节的大包,那服务器端为什么“凭空收到了这样一个包呢,让我们大胆设想一下。在客户端这边发出了2HTTP数据包,分别为146072314601518字节大包的HTTP层数据)+723781小包的HTTP层数据)+20TCP包头)+20IP包头)正好等于2223
如果上面的设想是正确的,可能在服务器端网络或中间网络存在一些性能优化的设备把两个数据包整合成一个大包,从而导致了丢包。

3.故障影响

客户端在GET请求失败3秒后,进行了重传,该次重传得到了服务器操作系统的ACK。不过应用层数据的响应却在24.8秒后发出。

不过服务器应用层响应后即直接关闭了该TCP会话。而更多的HTTP响应后,紧接着会有数据发出。那为什么本次服务器响应没有发出数据,而直接关闭会话呢?
打开HTTP响应的数据包,一探究竟:

原来,该HTTP响应的数据只有12个字节,在该数据包中就已经把数据传过来了,故没有看到后续的HTTP响应数据。响应内容为:"type":"1",那此内容具体代表什么,也许只有该应用的相关开发人员清楚吧。
但从客户端和该服务器后续的数据中的数据,能大致了解该响应数据的效果。该请求的信息是:
http://mpp.******/buildconnection.do?nkh=daiian&t=1352702985410,从14:4514:5510分钟时间,客户端一直在重复该请求,很明显服务器提供的响应数据,并没有达到客户端的预期目的。


4.总结

该网络异常的具体现象,我们并不清楚,而且也并未收到主机107.198的使用者的故障投诉。但是却从中主动发现了一些网络异常,这主要是ICMP提供了还原异常现象的重要线索,才有机会把问题给透明化。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?CSNA会员注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | CSNA会员注册

本版积分规则

快速回复 返回顶部 返回列表