IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> ICMP(网际控制报文协议) -> 正文阅读

[网络协议]ICMP(网际控制报文协议)

ICMP(网际控制报文协议:Internet Control Message Protocol)

作用:为了更有效的转发IP数据报提高交付成功的机会

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VopPiHfX-1644128325372)(C:\Users\user\AppData\Roaming\Typora\typora-user-images\image-20220206125539839.png)]

可以看到ICMP位于网络层,是网络层协议。ICMP作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。在下面的ICMP报文格式图中体现:

报文格式:

ICMP报文的前四个字节是统一的格式,共有三个字段,即类型、代码、检验和,接着的四个字节取决于ICMP报文的类型,然后是数据部分,长度也取决于类型。

类型:在下面会给出常见的几种ICMP数据报的类型表;

代码:ICMP报文的代码字段是为了进一步区分某种类型中的几种不同的情况;

检验和:用来检验整个ICMP报文,IP数据报首部的检验和并不检验IP数据报的内容,但ICMP是存在于IP数据报的数据部分,因此并不能保证传输的ICMP报文不产生差错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-22AmEYYO-1644128325373)(C:\Users\user\AppData\Roaming\Typora\typora-user-images\image-20220206131118193.png)]

ICMP支持主机或路由器报告差错情况和提供有关异常情况的报告

ICMP差错报告报文

  • ICMP差错报告报文

    • 类型的值ICMP报文的类型针对何种问题
      3终点不可达无法交付
      4源点抑制(Source Quench)拥塞丢数据
      11超时TTL=0
      12参数问题首部字段有问题
      5改变路由(Redirect)值得更好的路由

      1.终点不可达(无法交付):当路由器或主机不能交付数据报时就像源点发送终点不可达报文。具体可以根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等

      2.源点抑制:当路由器或主机由于拥塞而丢弃数据包时,就像源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢

      3.超时:当路由器收到一个IP数据报,若目的地址不是自己,会将TTL减1再转发出去,当TTL减为0时(收到TTL为1的IP数据报),除了丢弃改数据报外,还要向源点发送超时差错报告报文。另外当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,会丢弃已收到的数据报报片,也会向源点发送超时差错报告报文。

      TTL(Time To Live)是IPv4报头中的一个8bit字段:生存时间,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量,指ICMP包的转发次数(跳数)

      比如发送端A规定TTL为4,每转发一次会减少1,当一个路由器B接收到TTL为1时,但目的地址并不是自己,再次转发TTL会减至0,也就意味着超时,所以就会直接丢弃掉此数据报,并不会转发,并向A发送超时差错报告报文

      4.参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文

      5.改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应该将数据报发送给另外的路由器(可通过更好的路由)

      ICMP差错报告报文,把收到的需要进行差错报告的IP数据报的首部和数据字段的前8个字节提取出来,作为ICMP报文的数据字段,再加上相应的ICMP差错报告报文的前8个字节,就构成了ICMP差错报告报文。

    * [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XmCp58ZK-1644128325374)(C:\Users\user\AppData\Roaming\Typora\typora-user-images\image-20220206135642287.png)]

    • 不应该发送ICMP差错报文的几种情况

      • 1.对ICMP差错报告报文不再发送ICMP差错报告报文
      • 2.对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
      • 3.对具有组播地址的数据报都不发送ICMO差错报告报文
      • 4.对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文

ICMP询问报文:

  • ICMP询问报文

    • 类型的值ICMP报文的类型目的
      8或0回送(Echo)请求或回答测试目的站是否可达以及了解其相关状态
      13或14时间戳(Timestamp)请求或回答用来进行时钟同步和测量时间
    • 回送请求和回答报文:主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。

    • 时间戳请求和回答报文:请某个主机或路由器回答当前的日期和时间。

  • ICMP的应用:

    • PING:测试两个主机之间的连通性,使用了ICMP回送请求和会送回答报文
    • Traceroute:跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报文
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-02-07 14:01:51  更:2022-02-07 14:02:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/5 11:21:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码