ICMP协议

徘徊边缘 提交于 2020-02-05 04:23:26

ICMP协议

简介

ICMP–INTERNET CONTROL MESSAGE PROTOCOL 网络控制信息协议
ICMP负责传递IP协议或更高层协议的差错报文以及其他需要注意的信息,正式规范在RFC792
ICMP报文在IP数据报内部被传输
在这里插入图片描述

ICMP报文格式与类型

在这里插入图片描述
类型字段有15个不同的值,描述不同类型的ICMP报文,同一个类型下用代码字段描述不同报文
检验和是整个ICMP报文的检验和,不只是针对头部

下面是ICMP报文的类型

在这里插入图片描述

最后两列描述了ICMP报文是查询报文还是差错报文,下面重点讲述差错报文

ICMP差错报文

ICMP差错报文格式

发送一份ICMP差错报文时,报文始终包含IP的首部和产生ICMP差错报文的IP数据报的前八个字节
举个例子,UDP端口不可达时返回的ICMP差错报文如下
在这里插入图片描述

根据产生差错的数据报IP首部可以让接收ICMP差错报文的主机知道IP的上层协议是什么,例子中就是UDP协议,然后就可以知道后面8个字节是UDP首部,从UDP首部中主机可以知道UDP的源端口号和目的端口号,进而把数据传输给端口对应的进程程序。

ICMP差错报文产生条件

下面的情况不会导致产生ICMP差错报文

  • ICMP差错报文不会导致ICMP差错报文,单ICMP查询报文可以
  • 目的地址是广播地址或者多播地址的IP数据报
  • 作为链路层广播的数据报
  • 不是IP分片的第一片
  • 源地址不是单个主机的数据报

这是为了防止ICMP差错报文对广播分组响应导致的广播风暴

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!