概述:
当网络或者路由出现问题时,IP层可以处理的问题:
1. 因路由配置导致的路由回路,可通过设置TTL(Time To Live,目前一般该数值设置为跳转的路由个数)防止循环路由
2. P数据报分片重组时,信宿机会为数据报设置缓冲区,但是当某个分片丢失时,该存储区不会被清楚。因此设置超时机制,防止因上述情况导致的存储区浪费
3. 当信宿机不可达或者关机,或者信宿机无法识别IP首部协议字段时,数据报被丢失
除去上述情况,仍有其他网络或路由问题需要解决。而这些问题正是I CMP(Internet Control Message Protocol)需要解决的。
1. 拥塞控制:路由器处理能力有限,在短时间收到大量IP数据报时,路由器需要通知源端减缓IP数据报发送;
2. 最优路由路径选择
3. 判断信宿机是否可达
4. 同步路由器时钟
报文格式
由首部与数据组成,首部包含类型。
报文封装:
报文类型:
其中需要测试网络联通性时,可以使用回送请求和回送应答报文
ICMP应用
ping程序
ping程序即是基于ICMP回送请求和回送应答,来检测目的站是否可达。
ping还可以制定TTL,超时时间等参数
tracert程序
目前是同的traceroute,利用了IP首部的TTL字段以及ICMP超时报文。将IP数据报首部的TTL字段设置为1时,该数据报经过第一个路由器后TTL字段递减为0,这个路由器会返回一个ICMP超时报文。这个报文封装在IP数据报中,源端可以提取获得源IP地址。只有,TTL以1为单位递增,最终获取路由中所有IP地址。
tracert针对每一跳都侦测三次
当然这种方案,在目标屏蔽了ICMP回送请求报文时,将无法收到ICMP回送应答报文。