ICMP(网际控制报文协议)
- ICMP允许主机或者路由器报告差错情况。ICMP是互联网的协议标准。但ICMP并不是高层协议。因为ICMP报文是封装在IP数据报中,ICMP报文作为IP数据报的数据部分。加上IP数据报的首部,组成了IP数据报。ICMP报文格式如图所示:
- ICMP报文种类分为两类:
- ICMP差错报告报文
- ICMP询问报文
- ICMP报文的前4个字节是统一的,共有三个字段:
- 中间4个字节决定ICMP类型,最后是数据字段
- ICMP差错报告报文有四种
- (3)终点不可达:当路由器或者主机不能交付数据报时就向源点发送终点不可达报文。
- (11)时间超时:当路由器收到TTL=0IP数据报,除了丢弃这个数据报,还要向源地点发送时间超时报文。
- (12)参数问题:当路由器或者目的主机接收到的数据报的首部有的字段不正确时候,就丢弃这个报文,并向源地点发送参数问题报文。
- (5)改变路由(重定向):路由器把改变路由报文发送给主机,让主机下一应该将数据报发送给另外的路由器(可能是有更好的路由器)。
- ICMP询问报文有两种
- (8/0)回送请求和回答:ICMP回送请求报文是路由器或者主机向一个特定的目标主机发送的询问。收到报文的主机必须向源主机或者路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达等相关信息。
- (13/14)时间戳的请求与回答:ICMP时间戳请求报文是请某台主机或者路由器回答当前的日期和时间,在ICMP时间戳回答报文里一共有32个位的字段,其中写入的整数代表从1900年1月1日到当前时刻一共有多少秒,时间戳请求与回答可用于时钟同步和时间测量。
- ICMP应用举例
- 一个重要作用就是ping(packet Internet Groper)用来测试两台主机的连通性。ping使用了ICMP回送请求与回送回答报文。ping 是应用层直接使用网络层ICMP的一个例子
- 另一个命令是tracert命令,他用来跟踪一个分组从源点到终点的路径
ICMP协议