目录
一、ICMP(Internet Control Message Protocol)概述
1、互联网的IP层提供的是一种尽最大努力交付的数据报服务。
2、互联网控制报文协议ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
3、ICMP报文作为IP层数据报的数据进行传输。
4、ICMP不是高层协议,而是IP层的协议。
ICMP报文的种类有两种,即ICMP差错报文和ICMP询问报文
常用的差错报告报文主要包括5种:终点不可达、源点抑制、TTL超时、参数问题、路由重定义
当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。具体可再根据ICMP的代 码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知以及需要分片但DF置位等。
当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。(目前已不再使用)
当路由器收到一个IP数据报, 若目的地址不是自己,会将其TTL减1再转发出去,但当TTL减为零时(收到TTL 为1的IP数据报),除丢弃该数据报外, 还要向源点发送超时差错报告报文。
另外,当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会向源点发送超时差错报告报文。
当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
路由器把路由重定向报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可 通过更好的路由)。
不应发送 ICMP 差错报告报文的几种情况
1、对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
2、对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
3、对具有多播地址的数据报都不发送 ICMP 差错报告报文。
4、对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。
即回送请求和回送应答报文、时间戳请求和时间戳应答报文
下面的几种ICMP报文不再使用:信息请求与应答报文、掩码地址请求与应答报文、路由器询问与通告报文
ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。
收到此报文的主机必须给源主机或路由器发送ICMP回送应答报文, 将询问报文中携带的数据原封不动回送回去。
这种询问报文用来测试目的站是否可达及了解其有关状态。
ICMP时间戳请求报文是请某个主机或路由器应答当前的日期和时间。
ICMP时间戳应答报文中有一个32位的字段,其中写入的整数代 表从1900年1月1日起到当前时刻一共有多少秒。
时间戳请求与应答可用来进行时钟同步和测量时间。