一、ICMP作用
ICMP被主机和路由器用来彼此沟通网络层信息。
ICMP作用:
(1)支持主机或路由器进行差错报告,例如当运行一个Telent、FTP、或HTTP会话时,我们有时会遇到“目的网络不可达”之类的错误报文。这种报文就是在ICMP中产生的。
(2)支持主机或路由器进行网络探寻。
二、ICMP类型
两类ICMP报文:
(1)差错报告报文,有5种,目的不可达、源抑制、超时/超期、参数问题、重定向都属于差错报告报文。
(2)网络探寻报文,有两组,分别为回声请求与应答报文、时间戳请求与应答报文。
上图为详细报文类型,ICMP有一个类型字段和一个编码字段,并且包含引起该ICMP报文首次生成的IP数据报的首部和前8字节内容。
我们都知道的ping程序发送一个ICMP类型为8,编码为0的报文到指定主机。看到该回显请求,目的主机发回一个类型为0,编码为0的ICMP回显回答。
源抑制报文最初目的是进行拥塞控制,即使得拥塞的路由器向一台主机发送一个ICMP源抑制报文,以强制该主机减小其发送速率,但是TCP有自己在运输层操作的拥塞控制机制,所以此报文作用不大。
几种不发送ICMP差错报告报文的特殊情况
(1)对ICMP差错报告报文不再发送 ICMP差错报告报文 。
(2)除第1个IP数据报分片外,对所有后续分片均不发送ICMP差错报告报文。
(3)对所有多播IP数据报均不发送 ICMP差错报告报文 。
(4)对具有特殊地址(如127.0.0.0 或 0.0.0.0)的IP数据报不发送 ICMP 差错报告报文。
三、ICMP报文的格式
ICMP报文封装到IP数据报中传输。
差错报告报文数据分装在IP数据报首部。