ICMP协议详解及尝试用ping和tracert捕抓ICMP报文

news2024/10/7 19:19:21

 一、ICMP协议

1.1、定义

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

1.2、作用

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

1.3、类型

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

常见类型:

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

1.4、报文格式

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)字段,用于匹配请求和应答。

二、ping测试并分析

2.1、实验步骤

2.1.1、步骤一

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

2.1.2、步骤二

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

2.1.3、步骤三

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

2.2、报文分析

        第一个报文的序列号为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本身并不直接测试网络带宽,但通过向目标计算机发送大量数据包,可以间接地评估网络的带宽。如果发送的数据包数量足够大,网络带宽就会被占用,从而限制其他网络活动。

三、tracert测试并分析

3.1、实验步骤

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

3.2、报文分析

序列号和生存周期

请求和应答报文 

总结

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

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

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

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

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

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

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

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

四、IP数据报分片

4.1、概述

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

4.2、分片

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

4.3、分片原理

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

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

4.4、注意事项

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

4.5、实验步骤

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

ping/?

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

4.5.1、步骤一

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

4.5.2、步骤二

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

ipconfig

查看自身网络的网关

4.5.3、步骤三

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

ping 10.225.64.1 -l 6000 -n 1

其中:

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

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

4.6、报文分析

将6000字节分成4个数据包

回声请求报文

回声应答报文

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1902975.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT4深度解析:探索智能对话新境界

大模型chatgpt4分析功能初探 目录 1、探测目的 2、目标变量分析 3、特征缺失率处理 4、特征描述性分析 5、异常值分析 6、相关性分析 7、高阶特征挖掘 1、探测目的 1、分析chat4的数据分析能力,提高部门人效 2、给数据挖掘提供思路 3、原始数据&#xf…

保研复习 | 数据结构

目录 CH1 绪论☆ 数据项、数据元素、数据结构☆ 逻辑结构和存储结构的区别☆ 顺序存储结构和链式存储结构的比较☆ 算法的重要特性☆ 算法的复杂度 CH2 线性表☆ 单链表 CH3 栈、队列和数组☆ 栈和堆是什么?☆ 栈在括号匹配中的应用☆ 栈在表达式求值中的应用☆ …

14-41 剑和诗人15 - RLAIF 大模型语言强化培训

​​​​​​ 介绍 大型语言模型 (LLM) 在自然语言理解和生成方面表现出了巨大的能力。然而,这些模型仍然存在严重的缺陷,例如输出不可靠、推理能力有限以及缺乏一致的个性或价值观一致性。 为了解决这些限制,研究人员采用了一种名为“人工…

3dsMax怎样让渲染效果更逼真出色?三套低中高参数设置

渲染是将精心构建的3D模型转化为逼真图像的关键步骤。但要获得令人惊叹的渲染效果,仅仅依赖默认设置是不够的。 实现在追求极致画面效果的同时,兼顾渲染速度和时间还需要进行一些调节设置,如何让渲染效果更加逼真? 一、全局照明与…

昇思25天学习打卡营第13天|K近邻算法实现红酒聚类

K近邻算法(K-Nearest-Neighbor, KNN)是一种用于分类和回归的非参数统计方法,是机器学习最基础的算法之一。它正是基于以上思想:要确定一个样本的类别,可以计算它与所有训练样本的距离,然后找出和该样本最接…

数据结构基础--------【二叉树基础】

二叉树基础 二叉树是一种常见的数据结构,由节点组成,每个节点最多有两个子节点,左子节点和右子节点。二叉树可以用来表示许多实际问题,如计算机程序中的表达式、组织结构等。以下是一些二叉树的概念: 二叉树的深度&a…

win10使用小技巧二

1. 解决电脑更新后无法连接打印机问题 步骤:右击电脑 → 选择“管理” → 打开“服务和应用程序” → 双击“服务” → 找到“Print Spooler” → 双击打开 → 在“常规”中将“启动类型”改为“自动” → 点击“应用” → 点击“确定” → 重启电脑。 2. 提升电脑…

rocketmq-console可视化界面功能说明

rocketmq-console可视化界面功能说明 登录界面OPS(运维)Dashboard(驾驶舱)Cluster(集群)Topic(主题)Consumer(消费者)Producer(生产者)Message(消息)MessageTrace(消息轨迹) rocketmq-console是rocketmq的一款可视化工具,提供了mq的使用详情等功能。 本章针对于rock…

css使用伪元素after或者before的时候想要给after设置z-index无效

css使用伪元素after或者before的时候想要给after或者before设置一个层级关系,使该伪类写入的样式在box的下面,发现给box设置z-index无效, 需要找到父级元素,在父级元素上设置z-index值并且将伪类设置z-index:-1

在数字化时代,自助BI是数据价值最大化的必经之路

引言:在数字化时代,数据已成为企业最宝贵的资产之一。然而,仅仅拥有海量数据并不足以带来竞争优势,关键在于如何有效地分析并利用这些数据以指导决策、优化运营、提升客户体验,并最终实现业务的持续增长。在一章里笔者…

实验1 主成分分析

目 录 二、实验环境... 1 三、实验内容... 1 3.1 导入数据... 2 3.2 求相关系数矩阵.. 3 3.3 数据规范化处理.. 3 3.4 主成分分析... 4 四 实验心得... 5 一、实验目的 (1)理解主成分分析的思想; (2)掌握主成分分析方…

昇思25天学习打卡营第19天 | CycleGAN图像风格迁移互换

内容介绍: CycleGAN(Cycle Generative Adversarial Network) 即循环对抗生成网络,该模型实现了一种在没有配对示例的情况下学习将图像从源域 X 转换到目标域 Y 的方法。 该模型一个重要应用领域是域迁移(Domain Adaptation),可以通俗地理解…

常用SQL语句(基础篇)

前言 查询的sql的结构是 select...from...where...group by...having...order by...limit... 写查询sql的时候需要按照如下顺序写 from,where(and,or,!),group by,select&#xf…

文件系统技术架构分析

一文读懂:什么是文件系统 ,有哪几类? ▉ 什么是文件系统? 技术大拿眉头皱了皱,忍住快要爆发的情绪。解释到: 数据以二进制形式存储于介质,但高低电平含义难解。文件系统揭秘这些二进制背后的意…

智能交通(3)——Learning Phase Competition for Traffic Signal Control

论文分享 https://dl.acm.org/doi/pdf/10.1145/3357384.3357900https://dl.acm.org/doi/pdf/10.1145/3357384.3357900 论文代码 https://github.com/gjzheng93/frap-pubhttps://github.com/gjzheng93/frap-pub 摘要 越来越多可用的城市数据和先进的学习技术使人们能够提…

代码随想录 数组部分+代码可在本地编译器运行

代码随想录 数组部分,代码可在本地编译器运行 文章目录 数组理论基础704.二分查找题目:思路二分法第一种写法二分法第二种写法 代码 27.移除元素题目:思路-双指针法代码 977.有序数组的平方题目思路-双指针代码 209.长度最小的子数组题目&am…

《Windows API 每日一练》8.4 edit控件

编辑类是最简单的预定义窗口类,而另一方面却又是最复杂的。当你用“edit”作为类名创建子窗口时,可以基于CreateWindow调用的x坐标、y坐标、宽度和高度参数定义一个矩形。这个矩形包含可编辑的文本。一旦子窗口控件获得输入焦点,你就可以输入…

黑色矩形块检测数据集VOC+YOLO格式2000张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2000 标注数量(xml文件个数):2000 标注数量(txt文件个数):2000 标注…

使用ifconfig命令获取当前服务器的内网IP地址

如何使用ifconfig命令获取当前服务器的内网IP地址呢? ifconfig eth0 | grep inet | awk {print $2}

Zookeeper分布式锁原理说明【简单易理解】

Zookeeper 非公平锁/公平锁/共享锁 。 1.zookeeper分布式锁加锁原理 如上实现方式在并发问题比较严重的情况下,性能会下降的比较厉害,主要原因是,所有的连接都在对同一个节点进行监听,当服务器检测到删除事件时,要通知…