icmp简介

  • Post author:
  • Post category:其他




icmp是ip层的一部分,虽然从形式上看icmp被包装在ip的数据部中,感觉和tcp、udp同一层,但实际上icmp被划分到网络层。icmp的主要作用在于传递差错报文。icmp报文的结构为:










8位类型+8位代码+16位检验和+特有内容


icmp报文分为查询报文和差错报文,其

所表示的含义随着

类型字段和代码字段不同而不同,比如类型为3的icmp报文全都是目的不可达报文。具体细节可自行查询。


icmp差错报文有着特殊的限制,下面几种情况是不会导致产生icmp差错报文的:





1.ICMP差错报文(但是,ICMP查询报文可能会产生ICMP差错报文)




2.目的地址是广播地址或多播地址的IP数据报




3.作为链路层广播的数据报




4.不是IP分片的第一片




5.源地址不是单个主机的数据报。即源地址不能为零地址、环回地址、广播地址或多播地址。


这些规则是为了防止过去允许ICMP差错报文对广播分组响应所带来的广播风暴。



下面主要说一下icmp差错报文的结构(icmp查询报文本文不进行介绍):





其结构如上图所示,由图可知,icmp差错报文必须包括生成该差错报文的数据报IP首部,还必须至少包括跟在IP首部后面的前8个字节。



以上是对icmp的大致介绍,下面我们对ping程序进行简单介绍。



Ping程序主要就是为了测试另一台主机是否可达。该程序发送一份icmp回显请求报文给主机,并等待返回icmp回显应答。



我们称发送回显请求的ping程序为客户,而被ping的主机称为服务器。而大多数的TCP/IP实现都在内核中直接支持ping服务器——这种服务器不是用户进程。



icmp回显请求和回显应答报文如下:

































版权声明:本文为qq_35985044原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。