【计算机网络】ICMP协议

网际控制报文协议ICMP

  • 为了更有效地转发IP数据报和提高交付成功的机会,使用了网际控制报文协议ICMP
  • ICMP是互联网的标准协议
  • ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告
  • 虽然ICMP报文封装在IP数据报的数据部分但是ICMP是IP层的协议
    ICMP报文的种类有两种,ICMP差错报文ICMP询问报文
ICMP报文的格式

在这里插入图片描述

  1. 前四个字节是统一的格式, 类型(0-8)、代码(8-16)、校验和(16-31)。
  2. 紧接着4个字节的内容取决于ICMP报文的类型。 (第1、2条是IP报文的首部)
  3. 最后是ICMP的数据部分(长度也取决于类型)

ICMP差错报告报文:

  1. 终点不可达:不能交付数据报时
  2. 源点抑制: 由于阻塞而丢失数据时(应该数据报发送数据放慢一些)
  3. 时间超时:接收到生存时间为0的数据报时
  4. 参数问题:路由器或目的主机收到的数据报首部中字段不正确时
  5. 改变路由(重定向):把改变的路由传给主机
ICMP差错报文的数据字段的内容

在这里插入图片描述

不应发送ICMP差错报告报文的几种情况
  1. 对ICMP差错报告报文不再发送ICMP差错报告报文
  2. 对第一个分片的数据报片的所有后序数据报都不发送ICMP差错报文
  3. 对具有多播地址的数据报都不发送ICMP差错报告报文
  4. 对具有特殊地址(127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文

ICMP询问报文:

  1. 回送请求和回答报文:向一个特定主机发出询问,收到此报文的主机必须发回送报文。
  2. 时间戳请求和回答报文:(向主机或路由器)请求和回答当前的日期和时间

ICMP的应用举例:

分组网间探测PING
  • ping用来探测两个主机间的连通性
  • ping使用了ICMP回送请求和回送回答报文
  • ping是应用层直接使用网络层ICMP的例子,没有通过运输层的TCP或UDP
Traceroute的应用举例:用tracert命令获得到目的主机的路由信息
  • 在windows操作系统中这个命令是tracert
  • 用来跟踪一个分组从源点到终点的路径
  • 它利用IP数据报中的TTL字段和ICMP时间超过差错报告报文实现对源点到终点的路径的跟踪。

猜你喜欢

转载自blog.csdn.net/weixin_43939593/article/details/105671354