当前位置: 首页 > news >正文

【【通信协议之ICMP协议】】

【【通信协议之ICMP协议】】

下面先展示出ICMP协议的数据格式
在这里插入图片描述

用户数据打包在 ICMP 协议中,ICMP 协议又是基于 IP 协议之上的,IP 协议又是走 MAC 层发送的,即从包含关系来说:MAC 帧中的数据段为 IP 数据报,IP 报文中的数据段为 ICMP报文,ICMP 报文中的数据段为用户希望传输的数据内容。

IP数据包格式 如下所示
在这里插入图片描述

  • 版本 : 4位IP版本号(version) ,版本二进制值为0100,IPv4 , 0110 设置为IPv6 ,目前使用最多的IP版本号是4
  • 首部长度:4 位首部长度(IHL,Internet Header Length),表示 IP 首部一共有多少个 32 位(4 个字节)。在没有可选字段时,IP 首部长度为 20 个字节,因此首部长度的值为 5。
  • 服务类型:8 位服务类型(TOS,Type of service),该字段被划分成两个子字段:3 位优先级字段(现在已经基本忽略掉了)和 4 位 TOS 字段,最后一位固定为 0。服务类型为 0 时表示一般服务。
  • 总长度:16 位 IP 数据报总长度(Total Length),包括 IP 首部和 IP 数据部分,以字节为单位。
  • 标识字段:16 位标识(Identification)字段,用来标识主机发送的每一份数据报。通常每发送一份报文它的值就会加 1。
  • 标志字段:3 位标志(Flags)字段,第 1 位为保留位;第 2 位表示禁止分片(1 表示不分片 0:允许分片);第 3 位标识更多分片(除了数据报的最后一个分片外,其它分片都为 1)。
  • 片偏移:13 位片偏移(Fragment Offset),在接收方进行数据报重组时用来标识分片的顺序。
  • 生存时间:8 位生存时间字段,TTL(Time To Live)域防止丢失的数据包在无休止的传播,一般被设置为 64 或者 128
  • 协议:8 位协议(Protocol)类型,表示此数据报所携带上层数据使用的协议类型,ICMP 为 1,TCP 为6,UDP 为 17。
  • 首部校验和:16 位首部校验和(Header Checksum),该字段只校验数据报的首部,不包含数据部分;校验 IP 数据报头部是否被破坏、篡改和丢失等。
  • 源 IP 地址:32 位源 IP 地址(Source Address)
  • 目的 IP 地址:32 位目的 IP 地址(Destination Address)
  • 可选字段:是数据报中的一个可变长度的可选信息,选项字段以 32bit 为界,不足时插入值为 0 的填充字节,保证 IP 首部始终是 32bit 的整数倍。

下面介绍的是对于IP首部校验和的计算方法
在这里插入图片描述

按照上述提到的 IP 首部校验和的方法计算 IP 首部校验和,即:
0x4500 + 0x003C + 0x0000 + 0x4000 + 0x4001 + 0x0000(计算时强制置 0) + 0xc0a8 + 0x010a + 0xc0a8 +
0x0166 = 0x248FD
0x0002 + 0x48FD = 0x000048FF(此种情况并未出现进位)
0x0000+ 0x48FF= 0x48FF(此种情况并未出现进位)
check_sum = ~0x48FF(按位取反)= 0xb700

ICMP报文 全部包含在IP数据包内
在这里插入图片描述

下面是对ICMP数据格式的显示
在这里插入图片描述

ICMP 首部共 8 个字节,同 IP 首部一样,也是一行以 32 位(4 个字节)为单位。

  • 类型(type):占用了 8 bit 位
    (常用类型有:类型 0,代码 0:表示回显应答(ping 应答),类型 8,代码 0:表示回显请求(ping 请求)。类型 11,代码 0:超时;类型 3,代码 0:网络不可达;类型 3,代码 1:主机不可达;类型 5,代码 0:重定向。)
  • 代码(code):占用了 8 bit 位,根据 ICMP 差错报文的类型,进一步分析错误的原因
  • 校验和(checksum):占用了 16 bit 位,校验的方法同上述 IP 首部校验和的方法一致。数据发送到目的地后需要对 ICMP 数据报文做一个校验,用于检查数据报文是否有错误。
  • 标识符(Identifier):占用了 16 bit 位,对于每一个发送的数据报进行标识。
  • 序列号(Sequence number):占用了 16 bit 位,对于发送的每一个数据报文进行编号,比如:发送的第一个数据报序列号为 1,第二个序列号为 2。
  • 数据(Data):要发送的 ICMP 数据

http://www.mrgr.cn/news/26299.html

相关文章:

  • 质量体系和质量过程管理及SCIOT平台质量管理功能简介
  • Java项目: 基于SpringBoot+mybatis+maven宠物咖啡馆平台(含源码+数据库+毕业论文)
  • 《C++PrimerPlus》第10章:类和对象
  • linux-IO-进程-线程(相关函数)
  • linux-L7-linux 查看json文件
  • 在VMware上怎么安装Windows11?看这个教程就足够了
  • MySQL基本查询
  • MySQL EXPLAIN输出信息
  • 高效率免费创作文章,4款ai写作生成器来帮忙
  • wopop靶场漏洞挖掘练习
  • AV1 Bitstream Decoding Process Specification--[4]:语法结构
  • 英文软件汉化中文软件教程asi exe dll 等汉化教程
  • PyTorch安装指南:轻松上手深度学习框架(CUDA)
  • ORCA-3D避障算法解析
  • Python3获取mysql慢sql日志内容并飞书预警
  • 2024数学建模国赛官方评阅标准发布!
  • Linux开发工具的使用
  • 基于SpringBoot+Vue+MySQL的画师约稿平台系统
  • 实际案例(7)你遇到这样的环境,如何解决?(这是一道讨论题)
  • Oozie