1. ICMP报文种类

  ICMP报文的种类分为两种:一种是差错报告报文,另一种是查询报文。

  对于差错报告报文来说,ICMP总是把差错报文报告给发送数据源端(源主机)。比如:主机A给主机发送一个数据,结果这个数据在网络传输过程中出错了,然后ICMP协议的机制就会返回一个差错报告给主机A(相当于把数据在传输过程中出错的信息发回给主机A)。

2. 差错报告报文

差错报告报文常见有以下几类:

  类型3:终点不可达,当数据包不能发送到目标主机或路由时,就会丢弃该数据包向源点发送终点不可达报文。出错的原因有很多,具体参考错误代码。

  类型4:源点抑制,也就是数据在传输过程中,如果源点发送数据很快,而目的地接收数据慢,造成拥塞,这时就会向源点发送源点抑制报文,告知源点应该降低发送数据包的速率。比如主机A给主机B发送数据,可能主机A每次发送数据都比较快,而主机B每次接收数据比较慢,导致主机B可能会造成数据拥塞,这时主机B会发送一个源点抑制的ICMP数据报文告诉主机A:你发送的数据太快,我这边接收的很慢。

  类型11:超时,当路由器收到TTL值为0的数据包时,会丢弃该数据包并向源点发送超时报文,也有可能数据分片在进行重组超过规定时间也会丢弃已收到的报文然后向源点发送超时报文。

  类型为11,code值为0,说明该数据包在发送时超时原因是TTL值为0造成的,也就是说该数据包可能造成路由环路了,通俗来说就是数据在传输过程中一直在路 由器之间转圈。而Time to live exceeded in transit这句话的大意就是生存时间超时的意思。

  类型12:参数问题,可能是IP首部有的字段值是错误的或者IP首部被修改,破坏都有可能,因为IP数据报文有一个首部校验和的字段会对IP首部进行校验。

  类型5:改变路由(路由重定向)。主机A在给主机B发送数据时,数据在传输过程中选择的传输路线不是最优的,这时主机B会发送一个改变路由的ICMP数据报文告知主机A下次发送数据时选择另外的路线。

3.查询报告报文

查询报文常见有以下几类:
  类型8或0:类型8表示请求,类型0表示回答。比如:经常使用ping命令来ping一个网络是否连通。

  类型13或14:类型13表示时间戳请求,类型14表示时间戳回答,。记录数据报文的发送时间和接收时间,一般来说发送时间和接收时间是一样的,比如主机A发送的时间是14点,那么主机B接收的时间是16点,说明这两个时间不同步,是有问题的。

  类型17或18:类型17表示地址码请求,类型18表示地址码回答,地址码一般指的是子网掩码,如果主机A不知道自己的子网掩码会发送一个地址码请求,收到请求的主机会发送一个地址码回答,告诉主机A的子网掩码是多少。

c类型10或9:路由器查询通告,一般指的是返回路由的状态信息

4. ICMP数据抓包

  下面,我们通过wireshark来抓一个icmp包,如下图所示:request表示这是一个ICMP请求报文,reply表示这个是一个ICMP回答报文。


图1-ICMP请求和响应

  图中ICMP数据报的Type字段时8,表示这是一个请求报文,Type字段为0的表示这是一个回答报文。

5.关于ICMP报文的几点

1.对于携带ICMP差错报文的数据报,不再产生ICMP差错报文。
  如果主机A发送了一个ICMP的数据报文给主机B,数据在传输过程中经过其中一个路由器出现错误,由于该路由器已经接收到一个ICMP数据报文,所以不会再产生一个ICMP差错报文。

2.对于分片的数据报,如果不是第一个分片,则不产生ICMP差错报文
  对于主机A发送了一个分片的数据,如果路由设备或主机接收到的分片数据不是第一个分片数据,不会产生ICMP差错报文。

3.对于具有多播地址的数据报,不产生ICMP差错报文
  如果一个ip地址是一个广播地址的话,不会产生ICMP差错报文。

4.对于具有特殊地址如(127.0.0.0或0.0.0.0)的数据报,不产生ICMP差错报文

9-ICMP报文种类相关推荐

  1. ICMP报文的格式和种类

    各种ICMP报文的前32bits都是三个长度固定的字段:type类型字段(8位).code代码字段(8位).checksum校验和字段(16位) 8bits类型和8bits代码字段:一起决定了ICMP ...

  2. 4.4.1 ICMP报文的种类

    ICMP报文分为两种: 1.ICMP差错报告报文 2.ICMP询问报文 ICMP差错报告报文 1.终点不可达:路由器或主机不能交付数据报时就向源点发送终点不可达报文 2.时间超过:当路由器收到生存时间 ...

  3. 使用WireShark简单分析ICMP报文

    ICMP协议介绍 1.ICMP是"Internet Control Message Protocol"(Internet控制消息协议)的缩写. 它是TCP/IP协议族的一个子协议. ...

  4. ICMP报文分析(转)

    ICMP报文分析 一.概述: 1.   ICMP允许主机或路由报告差错情况和提供有关异常情况.ICMP是因特网的标准协议,但ICMP不是高层协议,而是IP层的协议.通常ICMP报文被IP层或更高层协议 ...

  5. wireshark中抓取ICMP报文

    为了更有效地转发IP数据报和提高交付成功的机会,在网络层使用了网际控制报文协议ICMP(Internet Control Message Protocol)[RFC 792].它是TCP/IP协议族的 ...

  6. icmp报文_用侦察兵的故事趣讲ICMP和Ping,看完想忘都难!

    无论是在宿舍,还是在办公室,或者运维一个数据中心,我们常常会遇到网络不通的问题.那台机器明明就在那里,你甚至都可以通过机器的终端连上去看.它看着好好的,可是就是连不上去,究竟是哪里出了问题呢? ICM ...

  7. icmp报文格式_TCP/IP(二):IP报文格式详解

    1. IP 报文格式 0bit是指位于最左边的最高位,31bit是指位于最右边的最低位,4个字节的32bit按照 bigendian(大端格式:低字节位于高地址)字节序传输:首先是0~7bit,其次 ...

  8. ICMP有哪些消息类型?常见的ICMP报文有哪些?

    什么是ICMP? ICMP(Internet 控制消息协议)可以看作是IP协议的一种辅助协议,每当我们新搭建一个网络,首先就需要先测试一下网络是否联通,但是IP协议并没有能力判断是否丢失数据包以及分析 ...

  9. ICMP报文格式详解

    1 引言 2 ICMP报文的类型 3 ICMP地址掩请求与应答 4 ICMP时间戳请求与应答 5 ICMP端口不可达差错 1 引言 ICMP经常被认为是IP层的一个组成部分.它传递差错以及其他需要注意 ...

最新文章

  1. R语言层次聚类(hierarchical clustering):特征缩放、抽取hclust中的聚类簇(cutree函数从hclust对象中提取每个聚类簇的成员)、基于主成分分析的进行聚类结果可视化
  2. DQN 处理 CartPole 问题——使用强化学习,本质上是训练MLP,预测每一个动作的得分...
  3. python 程序运行插件_如何使Python插件在Pluma中运行?
  4. OC基础1:一些基本概念
  5. [转载]了解Linux的进程与线程
  6. 为什么我的U盘传到一半速度会变成0然后过一会儿才回继续
  7. ubuntu使用VNC实现远程桌面
  8. customErrors与错误页面
  9. C++ 入门2 ---- 类型转换
  10. opencv学习之------在算法设计中使用策略模式
  11. JavaScript制作日历
  12. pythonmath库阶乘函数_Python--math库
  13. 大白话式粗浅地聊聊NLP语言模型
  14. 纯css画一个月亮的天气图标
  15. springboot项目启动报错Parameter 4 of constructor in com.ffkj.platform.mainstay.controller.MerchantControll
  16. 银行从业如何备考,有什么刷题的APP?
  17. 快速学习Java8新特性第七讲——Optional类
  18. 物尽其用,数码相机兼职摄像头!
  19. 微程序控制器之微程序控制器构成
  20. Veins文档(中文)

热门文章

  1. 判断给定的一串字符是否为“回文”。所谓“回文”是指顺读和倒读都一样的字符串。
  2. ZYNQ学习之pl和ps接口
  3. CVE-2022-22916
  4. 是面试官放水,还是公司实在是太缺人?这都没挂,字节原来这么容易进...
  5. 2.9CSS table属性
  6. 项目管理的10大知识领域之范围管理
  7. Python:图像处理中img[:,:,::-1]是什么意思?
  8. 推荐一款MySQL开源客户端,免费+跨平台+使用便捷
  9. IDEA创建的项目,包名重叠在一起,如何分开展示的问题?
  10. 如何判断一个字符串是否为数字或日期?