2025年icmp报文格式ping请求(icmp ping报文)

icmp报文格式ping请求(icmp ping报文)ICMP Internet Control Message Protocol 互联网控制消息协议 是一个支持 IP 层数据完整性的协议 主要用于在 IP 主机 路由器之间传递控制消息 这些控制消息用于报告 IP 数据报在传输过程中的错误 或者用于诊断网络问题 错误报告 当 IP 数据报在传输过程中发生错误时 如目标不可达 超时

大家好,我是讯享网,很高兴认识大家。



        ICMP(Internet Control Message Protocol,互联网控制消息协议)是一个支持IP层数据完整性的协议,主要用于在IP主机、路由器之间传递控制消息。这些控制消息用于报告IP数据报在传输过程中的错误,或者用于诊断网络问题。

  1. 错误报告:当IP数据报在传输过程中发生错误时(如目标不可达、超时、参数问题等),ICMP会发送一个错误报告给发送方。这有助于发送方了解问题所在,并采取相应的措施。
  2. 诊断工具:ICMP提供了一些诊断工具,如ping命令和traceroute命令。ping命令通过发送ICMP回显请求报文并等待回显应答报文来测试两台主机之间的连通性。traceroute命令则通过发送具有递增TTL(Time To Live)值的IP数据报来跟踪数据包从源主机到目标主机所经过的路由。

        ICMP报文主要分为两大类:ICMP差错报文和ICMP查询报文。根据ICMP报文中的字段类型和编码字段值的不同,将ICMP报文细分许多不同的类型。如下图:

常见类型:

  • 终点不可达报文(类型3):IP数据报无法到达目的地时,路由器或主机向源主机发送终点不可达报文。
  • 源站抑制报文(类型4):当路由器由于拥塞而丢弃IP数据报时,就发送源站抑制报文,通知源主机降低数据发送速率。
  • 重定向报文(类型5):当有到达目的网络更好的路由时,路由器通过发送重定向报文通知源主机。
  • 超时报文(类型 11):当IP数据报的TTL值减为0时,路由器会向主机发送超时报文;当分片丢失造成主机无法完成IP数据报的重组时,主机会向源主机发送超时报文。
  • 参数出错报文(类型12):当路由器发现IP数据报首部的参数有问题,无法完成对数据报的处理时,就向源主机发送参数出错报文。
  • 回声请求(类型8)和回声应答(类型0)报文:这两个报文成对出现,用来验证两台主机之间的可达性。
  • 时间戳请求(类型13)和时间戳应答(类型14)报文:它们用来向一个主机查询当前的时间。
  • 地址掩码请求(类型17)和地址掩码应答(类型18)报文:它们用来帮助一个主机获得子网掩码。

ICMP协议的报文格式很简单,只有几个字段.

  1. 类型(Type)
    • 占8位,用于指示ICMP报文的类型。
    • 例如,类型8代表Echo Request(回声请求),用于测试网络中的数据包是否能够正确传输;类型0代表Echo Reply(回声应答),是Echo Request的响应。
  2. 代码(Code)
    • 占8位,为ICMP消息类型提供额外的细分信息。
    • 例如,当Type字段为“Destination Unreachable”(目标不可达)时,Code字段可以进一步指示具体的原因,如网络不可达、主机不可达等。
  3. 校验和(Checksum)
    • 占16位,用于检测报文中的错误。
    • 校验和字段对整个ICMP报文进行校验,以确保报文在传输过程中没有被损坏。
  4. 其他字段
    • 根据不同类型的ICMP报文,可能会包含其他字段。
    • 例如,Echo Request和Echo Reply报文包含标识符(Identifier)和序列号(Sequence Number)字段,用于匹配请求和应答。

2.1.1、步骤一

        打开wiresahrk抓包工具,选择WLAN接口并开始抓包


讯享网

2.1.2、步骤二

        win+R调出命令行界面,并输入ping baidu.com(我这里是ping百度,你可以ping其他网站)

2.1.3、步骤三

        返回wireshark工具,停止抓包并以ICMP为筛选字段

        第一个报文的序列号为256的某一个倍数,以后的每个报文的序列号在这个基础上增加256。

ping回声请求报文

ping回声应答报文

总结

        Ping测试是一种网络诊断工具,它利用ICMP协议来检测网络连通性。Ping命令会向目标主机发送一个ICMP Echo请求报文,然后等待目标主机的响应。如果目标主机可以接收到这个请求并回复,那么就可以认为目标主机与源主机之间存在一条可达的网络路径。

1)测试网络的连通性:通过向目标主机发送小数据包,Ping可以判断网络是否连通。如果目标主机能够接收并响应Ping请求,那么网络连接就是正常的;反之,如果无法收到响应,就说明网络存在问题,需要进一步诊断和排除。

2)测试网络延迟:Ping工具会记录从发送数据包到接收响应的时间,根据这个时间可以衡量网络的延迟情况。延迟越低,网络的响应速度就越快。对于实时性要求高的应用,如在线游戏和视频会议,低延迟是非常重要的。

3)排除网络故障:当网络出现故障时,Ping可以帮助系统管理员进行故障诊断和排除。通过比较电脑和目标主机之间的Ping延迟,可以判断网络中存在的问题,如网络阻塞、丢包等。这样可以快速确定故障点,并采取相应的措施来修复网络故障。

4)确定TCP/IP参数设置:Ping测试可以验证TCP/IP参数是否设置正确,以及网络是否正常运行。通过发送ICMP回显数据包并侦听回显回复数据包,可以验证与一台或多台远程计算机的连接。

5)测试网络带宽:虽然Ping本身并不直接测试网络带宽,但通过向目标计算机发送大量数据包,可以间接地评估网络的带宽。如果发送的数据包数量足够大,网络带宽就会被占用,从而限制其他网络活动。

        与ping步骤操作相同,将ping baidu.com 改为tracert 39.156.66.10(这个ip地址为ping百度时的百度地址)

序列号和生存周期

请求和应答报文 

总结

        Tracert测试和ping 一样,都是一种网络诊断工具,主要用于测试数据包从发送方到目的地的路径,并显示消息在转发时所经过的路由器和网络节点。Tracert基于ICMP(Internet控制消息协议)实现,其工作原理:

1、首先,Tracert会向目标主机发送一个ICMP回显请求数据包,该数据包包含一个时间戳。

2、当数据包到达第一个路由器时,该路由器会将数据包的时间戳记录下来,并将数据包向下一个节点转发。

3、下一个节点收到数据包后,同样会记录时间戳并继续向目标主机转发。

4、此过程会一直持续下去,直到数据包最终到达目标主机。

5、当目标主机收到数据包后,它会发送一个ICMP回显应答数据包回源主机。

6、源主机收到应答数据包后,Tracert会显示每个路由器/节点的IP地址和数据包往返时长(即延迟)。

        通过分析显示的路由器IP和延迟信息,可以确定从源主机到目标主机的网络路径及每个节点的性能。同时,Tracert还提供了一些命令行参数,如设置最大跳数、使用特定的数据包大小等,可以更有效地诊断网络问题。

        IP数据报是TCP/IP协议族中用于在因特网上传输的数据包,是互联网协议(IP)的核心组成部分。它基于无连接的服务模式,屏蔽了下层各种物理子网的差异,向上层提供统一格式的IP数据报。IP数据报采用数据报分组传输的方式,提供的服务是无连接、不可靠的,即不保证数据报能成功到达目的地,任何可靠性必须由上层(例如TCP)提供。

        当要传输的IP报文的大小超过目标网络的最大传输单元(MTU)时,就需要进行IP分片。MTU是指数据链路层所能传输的最大数据单元,不同网络环境的MTU可能不同。例如,在以太网环境中,MTU通常为1500字节。如果要传输的数据帧大小超过1500字节,即IP数据报负载长度大于1472字节(1500字节减去IP头部和UDP头部的大小),就需要进行分片。

        IP分片发生在IP层,不仅源端主机会进行分片,中间的路由器也可能对IP数据报进行再次分片。因为不同的网络的MTU是不一样的,如果传输路径上的某个网络的MTU比源端网络的MTU要小,路由器就可能对IP数据报再次进行分片。而分片数据的重组只会发生在目的端的IP层。

        在IP数据报的首部,有特定的字段用于标识和处理分片。其中,16位的标识字段用于唯一记录一个IP包的ID,具有相同ID的IP分片将被重新组装。13位的片偏移字段记录了某IP片相对整个包的位置。3位的标志字段用于表示该分片后面是否还有新的分片,以及是否禁止分片。

  1. 尽可能少分片:过多的分片会增加传输过程中的复杂性和错误率。
  2. 一个最大分片可封装的数据字节数最好是8的倍数:这有助于提高传输效率。
  3. 避免IP分片:在网络编程中,应尽量避免IP分片,因为IP层没有超时重传机制。如果一个分片丢失,将依赖于传输层进行重传,导致所有分片都需要重传,降低传输效率。

        在正式开始前,我们会使用ping来完成数据报分片的实验,可以先查看ping的使用方法。使用win+R调出命令行界面,输入以下命令:

 

讯享网

可以查看ping的具体使用方法,如下图:

4.5.1、步骤一

        打开wireshark抓包工具,进行抓包。

4.5.2、步骤二

        win+R调出命令行界面,在命令行界面上输入以下命令:

讯享网

查看自身网络的网关

4.5.3、步骤三

        将步骤二得到的网关地址进行ping操作,输入以下命令:

 

其中:

这个参数实际上是用于指定 ICMP echo 请求数据包的大小。

这个参数指定了发送的 ICMP echo 请求数据包的次数。

将6000字节分成4个数据包

回声请求报文

回声应答报文

:内容仅为个人意见,有什么不妥或错误的地方,欢迎指出!!!

小讯
上一篇 2025-06-04 07:29
下一篇 2025-04-20 10:50

相关推荐

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