SS4.4 网际控制报文协议ICMP
ICMP报文作为IP数据报的数据部分,加上IP报文的首部进行发送
一 ICMP报文的种类
1 ICMP差错报告报文
有四种ICMP差错报告报文
①终点不可达,路由器或者主机不能交付数据报时向原点发送
②时间超过,当路由器收到生存时间TTL=0的数据报时,丢弃该报文并向源点发送超时报文
③参数问题,当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,丢弃该报文并向源点参数问题报文
④改变路由(重定向),路由器把改变路由报文发给主机,让主机下次发送给另外的路由器(找到了更好的路由)
ICMP差错检测报文的格式:
不发送ICMP差错报告报文的四种情况
①对ICMP差错报告报文,不再发送ICMP差错报告报文
②对第一个分片的数据报片的所有后续数据报片,都不发送ICMP差错报告报文
③对具有多播地址的数据报,都不发送ICMP差错报告报文
④对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报,不发送ICMP差错报告报文
2 ICMP询问报文
有两种ICMP询问报文
①回送请求或回送回答:ICMP回送请求报文是由主机或路由器向一个特定主机发出的询问,收到回送请求必须给源主机或路由器发送ICMP回送回答报文。常用作连通性测试,测试目的站是否可达以及了解其有关状态。
②时间戳请求或时间戳回答:ICMP时间戳请求报文发送后,能收到对方的时间戳回答报文,利用报文中记录的时间戳(发送时间、接收时间)很容易计算当前网络的往返时延RTT。常用作RTT时延测取。
3 ICMP的应用
1 ping + 主机名/IP地址 用于测试两台主机之间的连通性。属于应用层直接使用网络层ICMP的例子,没有通过TCP或UDP
2 traceroute(Linux)/ tracert(Windows)+ 主机名/IP地址 从源主机向目的主机发送一连串的IP数据报,里面封装着无法交付的UDP用户数据报,第一个数据报的生存时间TTL设置为1,当数据报到达路径上第一个路由器,路由器收下该数据,然后把TTL减去1,由于TTL=0,路由器就把该数据丢弃并向源主机发送ICMP时间超过差错报告报文,这样一直下去,当TTL能够撑到数据报送达目的地址时,由于封装的是无法交付的UDP用户数据报,目的主机向源主机发送ICMP终点不可达差错报告报文。由此可以获得想要的路由信息