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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 用代码设置 RelativeLayout.LayoutParams

    用代码设置 RelativeLayout.LayoutParams1.注意不能在RelativeLayout容器本身和他的子元素之间产生循环依赖,比如说,不能将RelativeLayout的高设置成为WRAP_CONTENT的时候将子元素的高设置成为ALIGN_PARENT_BOTTOM。如果parent是wrap_content的话,alignParentRight就意味着要求parent的layout_width=”match_par…

  • Android进阶-第三方框架使用汇总「建议收藏」

    Android进阶-第三方框架使用汇总「建议收藏」imageloading框架:1.1Glide1.1Glide:一、Glide-GettingStartedGlide:Glide就像Picasso,能从许多资源上加载和显示图片,也照顾了缓存和做图片操作的时候保持一个低的内存影响,它已经被官方谷歌应用程序(如GoogleI/O的应用程序2015)和Picasso一样受欢迎,在本系列中,我们将探索Glide在Picas

  • totalcmd工具的主要功能_windows cmd 命令大全

    totalcmd工具的主要功能_windows cmd 命令大全一、Totalcmd配合7-Zip进行压缩、解压缩下载7z文件。可去官网下载安装版文件,再解压,只提取其中的7z.dll文件和7zG.exe文件再将其放在totalcmd\Utilities\7-Zip目录下。(注Utilities是我自己建的一个文件夹,用来存放一些可直接调用的小工具。)说明:虽说7-Zip有个叫7za.exe的命令行工具,但显示效果不佳…

    2022年10月24日
  • python把数字转换成字符串(字符串是什么)

    数字转为字符串这个相对比较简单我们可以使用Python中的str函数直接转换例如将123转换为’123’print(str(123))或者使用格式化print(‘%s’%123)字符串转为数字这个相对比较复杂一点因为Python没有提供类似于str函数的int函数如果转换的是0-9的一个数,那么只采用字典就可实现defchar2num(s):…

  • 老电脑玩游戏又卡又慢,怎么办?

    老电脑玩游戏又卡又慢,怎么办?电脑玩游戏反应慢,这里收集了网上网友们提供的方法。如果您在电脑玩游戏时也遇到反应慢的问题,可以尝试用这些办法解决。网友方案一如果电脑玩游戏反应慢,可以通过将电脑的独显打开、更改电池模式或是调整画面分辨率等方法来解决,具体的操作方法可以参考下面的内容。1、将电脑的独显打开,打开控制面板,选择左侧的管理3D设置,在全局设置界面中将自动选择改为你的NVIDIA显卡。然后选择程序设置界面将你…

  • burp suite的安装与基本使用

    burp suite的安装与基本使用1.burpsuite的下载可以在官网上下载,https://portswigger.net/burp/,除了这个社区版还有专业版,不过需要付费但是会给你一个月的试用期。安装burp会用到jdk,所以必须先配置好jdk,下载安装自行百度。2.对于初学者如果想用专业版可以在网上找激活成功教程版本,或者购买正版,社区版和专业版之间的主要区别如下:1)BurpScanner…

发表回复

您的电子邮箱地址不会被公开。

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