nCompass-IP/ICMP协议
1. IP协议:
- 点对点
- 无连接
- 不可靠
- 尽力传输
- 可分片(大数据包经过MTU数值较小的链路需要数据分片处理)
IP分片,影响高效利用带宽,所以尽量避免IP分片。
两个终端设备数据传输的时候,只知道自己的MTU,不知道中间设备的MTU,传输设备设置DF=0允许分片,当中间设备超出MTU规定值就分片处理,知道终端设备才会IP重组。
如何避免IP分片?
- 猜想链路MTU值,调整发送的MTU值稍微减少一些
- 通过探测的方式(PMTUD),Path MTU Discovery,路径MTU自动发现
PMTUD报文演示:
那么设备是如何知道MTU要更改的值? 如果此时还是只过滤IP数据的话是看不出来,需要加上过滤ICMP数据。
- 先看一下hello数据包
- 查看ICMP数据包,显示不可达,需要分片(hello数据包里面确实显示不可以分片)。
- 查看ICMP数据包:ICMP数据包通告返回时,除了返回ICMP消息本身通告信息(Type、Code、Checksum、MTU of next hop等),同时将发送数据包里面从IP头开始提取28个字节一起内容返回。
2. ICMP控制报文协议
用于在IP主机、路由器之间传递控制信息,控制消息是指网络不通、主机是否可达、路由是否可用等网络本身的消息。
IP层本身没有纠错机制,所以只有到ICMP才能知道。
越是底层的重传越快,比如说以太网的重传比IP层的重传块,IP比TCP重传快。
ICMP演示1:
- 发现FIN数据包发送不过去,一直重传
- 过滤出ICMP数据包们进行分析(是因为FIN序列号不是想要的数据包)
ICMP演示2:
- 发送SYN数据包出不去,重传6次还是没有相应(路由没配置? 防火墙隔断?)
- 过滤出ICMP数据包进行分析(发现TTL=1,说明末端出现环路)
nCompass平台的ICMP差错报文分析:
通告源IP、通告源端口、通告目的IP、通告目的端口是指:是原来那个数据报文的四元组
网关IP、差错接收端IP是指:真正ICMP数据报文的源和目的
表示10.59.0.138发送给10.211.0.168的数据报文,ICMP报文是通过10.59.0.252(应该是个路由器)返回给10.59.0.138的。
所以如果你只过滤IP10.59.0.138和10.211.0.168是看不到ICMP报文,是需要过滤IP10.59.0.252和10.59.0.138才能看到ICMP报文。