介绍
为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP(Internet Control Message Protocol)
ICMP是互联网的标准协议
ICMP允许主机或路由器报告差错情况和提供有关异常的报告。
但ICMP不是搞成协议(看起来好像是高层协议,因为ICMP报文是装在IP数据报中,作为其中的数据部分),而是IP层协议。
ICMP报文作为IP层数据报的数据,加上数据包的首部,组成IP数据报发出去。
ICMP报文作为IP层数据报的数,加上数据报的首部,组成IP数据报发送出去。ICMP报文格式如下
1 ICMP报文的种类
ICMP报文的前4个字节是统一的格式,共有三个字段:
类型、代码和校验和
接着的4个字节的内容与ICMP类型有关
1.1 ICMP差错报告报文
1、终点不可达
2、时间超过
3、参数问题
4、改变路由(重定向)(Redirect)
不同发送ICMP差错报告报文的几种情况
1、对ICMP差错报告报文不在发送ICMP差错报告报文
2、对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
3、对具有多播地址的数据报都不发送ICMP差错报告报文。
4、对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文
1.2 ICMP询问报文
有两种:
1、回送请求和回答报文
2、时间戳请求和回答报文
下面集中的ICMP报文不在使用
1、信息请求与回答报文
2、掩码地址请求和回答报文
3、路由器询问和通告报文
4、源点抑制报文
2 ICMP应用举例
2.1 ping
PING (Packet InterNet Group)
1、ping用来测试两个主机之间的连通性
2、ping使用了ICMP回送请求与回送回答报文
3、ping是应用层直接使用网络层ICMP的例子,它没有通过运输层的TCP会UDP
ping测试主机的性
2.2 Tracetoute
1、在Windows操作系统各种这个命令是tracert
2、用来跟踪一个分组从源点到终点的路径
3、它利用IP数据报中的TTL字段和ICMP时间超过差错报告报文实现对源点到终点路径的跟踪。