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

 一、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.mzph.cn/bicheng/40160.shtml

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

相关文章

C++ 语法

一、头文件与源文件 头文件用于声明函数,类似于java中service层的接口; 源文件用于实现头文件函数,相当于java中serviceImpl层的实现类; 定义接口 实现接口 使用接口 二、指针概述 定义与使用 定义一个指针p用于存a变量的内存地址,即指针就是地址; 解引用可以获取或修改…

40岁以上的中年人很难找到工作

关注卢松松,会经常给你分享一些我的经验和观点。 你们有没有发现,90%的40岁以上的中年人,为了多挣钱,几乎除了吃饭和睡觉之外,都在拼命加班劳作,只要一停下来,心里就有一种内疚感,…

【Elasticsearch】Elasticsearch动态映射与静态映射详解

文章目录 📑前言一、Elasticsearch 映射概述1.1 什么是映射?1.2 映射的分类 二、动态映射2.1 动态映射的定义2.2 动态映射的优点2.3 动态映射的缺点2.4 动态映射的应用场景2.5 动态映射的配置示例 三、静态映射3.1 静态映射的定义3.2 静态映射的优点3.3 …

机器学习简介--NLP(二)

机器学习简介 机器学习简介机器学习例子机器学习分类有监督学习有监督学习的应用 无监督学习 机器学习常见概念数据集k折交叉验证过拟合欠拟合评价指标 机器学习简介 机器学习例子 问题: 2,4,6,8,?&#…

【CV炼丹师勇闯力扣训练营 Day22:§7 回溯1】

CV炼丹师勇闯力扣训练营 代码随想录算法训练营第22天 回溯法其实就是暴力查找,回溯的本质是穷举,穷举所有可能,然后选出我们想要的答案,一般可以解决如下几种问题: 组合问题:N个数里面按一定规则找出k个数的集合切割…

Ubuntu18.04新安装--无网络连接、重启黑屏解决教程

一、安装Ubuntu Ubuntu安装需要U盘作为启动盘,在目前教新的电脑中选中GPT作为分区,制作启动盘,其中在安装双系统Ubuntu时,以自定义格式作为存储空间。详细安装过程以以及如何分区请参考下列链接:内含详细安装过程&…

VS Code 常用快捷键大全

Visual Studio Code 是目前最好用的代码编辑器之一。它提供了许多开箱即用的功能以及丰富的第三方扩展,本文将分享常用的 VS Code 快捷键,助你提高开发效率! 代码导航 跳转指定行:快速跳转到文件中的指定行,只需按下快…

Unity 数据持久化【PlayerPrefs】

1、数据持久化 文章目录 1、数据持久化PlayerPrefs基本方法1、PlayerPrefs概念2、存储相关3、读取相关4、删除数据思考 信息的存储和读取 PlayerPrefs存储位置1、PlayerPrefs存储的数据在哪个位置2、PlayerPrefs 数据唯一性思考 排行榜功能 2、Playerprefs实践1、必备知识点-反…

解决 Layout Inspector无法查看Component Tree 布局层级信息 | Android Studio Koala

问题描述 Tool -> Layout Inspector 显示下图,无法生成.li文件查看Component Tree,变成实时的Preview并功能点击操作,跟模拟器一样。 原因:默认勾选了"Enable embedded Layout Inspector",启用了嵌入式…

SpringCloud进阶篇

文章目录 网关快速入门创建模块引入依赖修改启动类配置路由路由过滤(一般不用) 自定义GlobalFilter登录校验登录校验过滤器 微服务获取用户信息保存用户信息到请求头拦截器获取用户信息 OpenFeign传递用户信息配置共享添加共享配置拉取共享配置 配置热更新添加配置到Nacos配置热…

数据结构初阶 堆的问题详解(三)

题目一 4.一棵完全二叉树的节点数位为531个,那么这棵树的高度为( ) A 11 B 10 C 8 D 12 我们有最大的节点如下 假设最大高度为10 那么它的最多节点应该是有1023 假设最大高度为9 那么它的最多节点应该是 511 所以说这一题选B 题目二 …

指挥中心操作台的形状及空间布局

在现代化的指挥中心,操作台的形状设计至关重要,它不仅影响着操作人员的工作效率和舒适度,还关系到整个指挥系统的运行效果。常见的指挥中心操作台形状多种多样,以满足不同的功能需求和空间布局。 直线型操作台 直线型操作台是最为…

C语言 | Leetcode C语言题解之第212题单词搜索II

题目&#xff1a; 题解&#xff1a; class Solution { public:struct Node{int id;Node* son[26];Node(){id -1;for(int i 0; i < 26; i) son[i] NULL;}}* root;vector<vector<char>> g;unordered_set<int> ids;vector<string> res;int dx[4] …

Windows编程原理-消息驱动的机制

Windows为每一个输入事件产生一个输入消息&#xff0c;如&#xff1a; 移动鼠标按键…… 从程序角度看待Windows消息处理 Windows使用一个窗口前必须&#xff1a; 填充一个结构&#xff1a;WNDCLASS注册窗口创建窗口使用窗口撤销窗口 从这个机制看&#xff0c;windows操作系统…

console 报错 之 Uncaught (in promise) RangeError: Maximum call stack size exceeded

1. 背景 demo 环境报错。。。 2. 报错问题 3. 问题原因 vue 报错: “RangeError: Maximum call stack size exceeded” 报错通常是由于无限的递归 导致的。当使用 Vue 路由时&#xff0c;如果设置不当&#xff0c;会导致无限的递归&#xff0c;最终导致栈溢出&#xff0c;即…

yolov8 目标检测快速streamlit可视化界面

参考&#xff1a; https://github.com/ultralytics/ultralytics/blob/2330caa50a8a8e0bb61408df8dca0721fb350dbe/ultralytics/solutions/streamlit_inference.py 版本&#xff1a; ultralytics 8.2.27 # Ultralytics YOLO &#x1f680;, AGPL-3.0 licen…

网络安全--计算机网络安全概述

文章目录 网络信息系统安全的目标网络安全的分支举例P2DR模型信息安全模型访问控制的分类多级安全模型 网络信息系统安全的目标 保密性 保证用户信息的保密性&#xff0c;对于非公开的信息&#xff0c;用户无法访问并且无法进行非授权访问&#xff0c;举例子就是&#xff1a;防…

用StartAI文生图做电商设计 AI服装面料设计教程

AI电商设计需要考虑以下多个问题&#xff0c;面面俱到即可小成本做电商 步骤&#xff1a;电商选品确定文生图关键 理解面料特性&#xff1a;了解不同面料的特性&#xff0c;如透气性、弹性、耐用性等&#xff0c;以便更好地利用AI进行设计。色彩搭配&#xff1a;利用AI分析流…

java项目总结2

3.了解Java的内存分配 4.重载 定义&#xff1a;在一个类中&#xff0c;有相同名的&#xff0c;但是却是不同参数&#xff08;返回类型可以不一样&#xff09; 重载的优点&#xff1a; 1.减少定义方法时使用的单词 2.减少调用方法时候的麻烦&#xff08;比如sum的返回两个数的…

《UDS协议从入门到精通》系列——图解0x84:安全数据传输

《UDS协议从入门到精通》系列——图解0x84&#xff1a;安全数据传输 一、简介二、数据包格式2.1 服务请求格式2.2 服务响应格式2.2.1 肯定响应2.2.2 否定响应 Tip&#x1f4cc;&#xff1a;本文描述中但凡涉及到其他UDS服务的&#xff0c;将陆续提供链接跳转方式以便快速了解他…