9-ICMP报文种类「建议收藏」

9-ICMP报文种类「建议收藏」1.ICMP报文种类  ICMP报文的种类分为两种:一种是差错报告报文,另一种是查询报文。  对于差错报告报文来说,ICMP总是把差错报文报告给发送数据源端(源主机)。比如:主机A给主机发送一个数据,结果这个数据在网络传输过程中出错了,然后ICMP协议的机制就会返回一个差错报告给主机A(相当于把数据在传输过程中出错的信息发回给主机A)。2.差错报告报文差错报告报文常见有以下…

大家好,又见面了,我是你们的朋友全栈君。

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差错报文

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133257.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • axios如何跨域请求_前端跨域请求

    axios如何跨域请求_前端跨域请求axios跨域请求详情写这篇文章的背景是因为之前遇到的,在跨域的情况下通过axios发起的get请求正常,post请求会在正式请求发送之前先发送一个opstions请求,而后端接口没有兼容options,导致404的情况。而在解决这个问题时带着好奇心顺带查了一下,给自己补充了些知识点跨域请求分两种简单讲,从JavaScript代码发起的XMLHttpRequest请求可以分为两种:不会触发CORS预检的请求,而是直接向服务端发送请求,什么是CORS预检咱们后面

    2025年10月27日
    3
  • 深入理解iso七层模型_网络模型的七层结构

    深入理解iso七层模型_网络模型的七层结构ISO七层模型是国际标准化组织用于计算机或者通信系统间相互联系的标准体系.他是一个七层的,抽象的模型体.应用层(Application):网络服务与最终用户的一个接口。协议有:HTTPFTPTFTPSMTPSNMPDNSTELNETHTTPSPOP3DHCP表示层(PresentationLayer):数据的表示、安全、压缩。(

    2025年5月23日
    3
  • 计算机网络之ip、子网掩码、网络号、主机号等概念解析

    计算机网络之ip、子网掩码、网络号、主机号等概念解析在工作中谈论到计算机网络时,有几个经常出现的术语,比如:ip、子网掩码、网段等等。之前对这些概念的理解都比较模糊,只知其大概意思,随着工作中遇到的网络问题越来越多,有必要详细理解一下计算机网络的基础知识了。这篇文章就先介绍几个计算机网络领域的专业术语。IP地址ip这个词是计算机网络中出现频率最高的了,甚至只要使用过电脑的人都知道这个词。IP地址全程是互联网协议地址(英文:InternetPr…

    2022年6月24日
    38
  • Android Studio 怎样打JAR包[通俗易懂]

    Android Studio 怎样打JAR包

    2022年2月6日
    48
  • MMC卡的文件系统及其实现方法

    MMC卡的文件系统及其实现方法引言多媒体卡MMC(MultiMediaCard)是由美国SanDisk公司和德国Simens公司于1997年共同开发推出的一种多功能存储卡。内置控制电路,可以使用在手机、数码相机、MP3、PDA等多种数字设备上,可反复记录30万次。现在市场上的主流容量有128MB~2GB。文中首先介绍单片机对SPI协议下的MMC卡的底层读写操作,然后分析MMC卡文件系统的结构,最…

    2022年6月5日
    29
  • 单片机中0x00什么意思_单片机中0x01什么意思

    单片机中0x00什么意思_单片机中0x01什么意思0x00=0,0×01=1,比如说P1=0x00,也就是给P1.0~P1.7端口赋低电平,P1=0x01,是P1.0为高电平,P1.1~P1.7为低电平.这是十六进制的表示方法,转换成二进制分别是:0x00=00000000;0x01=00000001,也就是单片机P口的八位P1.7~P1.0从低位到高位输出的电平。…

    2025年8月1日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号