计算机网络之---ICMP协议与Ping命令

ICMP 协议

ICMP (Internet Control Message Protocol) 是一种网络层协议,主要用于在 IP 网络中传递控制消息。ICMP 主要用于网络设备之间的故障报告和诊断,帮助设备检测网络连接问题。它是 IP 协议的核心部分之一,用于发送错误消息和操作信息。

ICMP 的主要功能
  1. 错误报告:当路由器或目标主机发现网络传输中的问题时,ICMP 会发送错误消息。例如,目标不可达、超时等。
  2. 诊断功能:ICMP 提供了许多网络诊断功能,如 Ping 命令,用于检测网络连通性。
  3. 路由重定向:ICMP 也可以发送路由重定向消息,通知源主机更合适的路由。
  4. 网络拥塞通知:某些 ICMP 消息用于告知发送方网络存在拥塞问题。
ICMP 的局限性
  • ICMP 消息本身并不提供加密或身份验证,因此容易被滥用,例如进行 Ping of Death 攻击或 ICMP Flood 攻击。
  • 由于 ICMP 本身属于网络层,无法保证传输过程中的可靠性。
  • 某些网络设备或防火墙可能会阻止 ICMP 消息,以增加安全性。
ICMP 的常见消息类型

ICMP 消息通常由一个 报头数据部分 组成。常见的 ICMP 消息类型包括:

  1. Echo Request 和 Echo Reply(回显请求和回显应答):这些是 Ping 命令使用的类型,用于测试网络设备之间的连通性。

    • Echo Request (类型 8)
    • Echo Reply (类型 0)
  2. Destination Unreachable(目标不可达):当路由器无法转发数据包到达目标地址时发送。

    • 类型 3(目标不可达)有多个代码,表示不同的不可达原因,如网络不可达、主机不可达、协议不可达等。
  3. Time Exceeded(超时):当数据包在传输过程中经过的时间超过了设定的 TTL(生存时间)时发送,通常用来检测路由环路或路由延迟。

    • 类型 11(超时)
  4. Redirect(重定向):用于提示源主机更好的路由路径。

    • 类型 5(重定向)
  5. Source Quench(源抑制):用来通知发送方减少数据包发送速率(此功能现在已废弃,很多设备不再使用)。

    • 类型 4
ICMP 报文结构

ICMP 报文的基本结构包含:

  • 报文头:包括类型、代码和校验和。
  • 数据部分:根据不同类型,数据部分的结构有所不同,例如回显请求的消息部分包含了发送方的时间戳信息。

Ping 命令

Ping 是一种基于 ICMP 协议的网络诊断工具,广泛用于测试网络连接性。Ping 命令通过发送 Echo Request(回显请求)消息并等待目标主机返回 Echo Reply(回显应答)消息来检查网络是否畅通。

Ping 命令的工作原理
  1. 发送 Echo Request: Ping 命令向目标 IP 地址发送一个 ICMP Echo Request 数据包,包含发送的时间戳信息。

  2. 接收 Echo Reply: 如果目标设备在线并且能够接收 ICMP 请求,它会返回一个 Echo Reply 数据包,其中包含目标设备接收到请求时的时间戳。

  3. 计算往返时间: Ping 命令会根据回显应答的时间戳来计算往返时间(RTT,Round Trip Time),即从发送请求到接收到应答的时间。

  4. 报告结果: Ping 命令会显示每次请求的结果,包括往返时间、丢包率等信息。通常每次请求发送 4 个数据包,并显示每个数据包的 RTT。

Ping 命令的使用场景
  1. 测试网络连接性:最常见的用途是测试计算机或路由器是否能够通过网络到达另一台设备(如另一个主机、路由器、DNS 服务器等)。

  2. 网络故障排除:在网络出现问题时,使用 Ping 可以检查连接问题的原因,比如网络丢包、延迟过高等。

  3. 延迟检测:Ping 命令的 RTT 时间可以帮助判断网络的响应速度和延迟。

  4. 检查丢包情况:通过统计丢失的 Ping 数据包,可以检测网络的丢包情况,有助于定位故障。

Ping 命令的常用选项
  • -t:在 Windows 中,使用 ping -t 可以持续不断地 Ping 目标,直到手动停止。
  • -c:在 Linux/Mac 中,使用 ping -c 4 可以指定 Ping 的次数。
  • -l:在 Windows 中,ping -l 1000 可以设置数据包的大小。
  • -i:指定 Ping 数据包的间隔时间。
Ping 命令的常见输出
PING www.baidu.com (110.242.70.57): 56 data bytes
64 bytes from 110.242.70.57: icmp_seq=0 ttl=50 time=24.960 ms
64 bytes from 110.242.70.57: icmp_seq=1 ttl=50 time=16.367 ms
64 bytes from 110.242.70.57: icmp_seq=2 ttl=50 time=24.184 ms
64 bytes from 110.242.70.57: icmp_seq=3 ttl=50 time=16.960 ms
64 bytes from 110.242.70.57: icmp_seq=4 ttl=50 time=17.882 ms
64 bytes from 110.242.70.57: icmp_seq=5 ttl=50 time=27.531 ms
64 bytes from 110.242.70.57: icmp_seq=6 ttl=50 time=18.157 ms
64 bytes from 110.242.70.57: icmp_seq=7 ttl=50 time=20.231 ms
64 bytes from 110.242.70.57: icmp_seq=8 ttl=50 time=16.918 ms
64 bytes from 110.242.70.57: icmp_seq=9 ttl=50 time=16.276 ms
64 bytes from 110.242.70.57: icmp_seq=10 ttl=50 time=18.593 ms
64 bytes from 110.242.70.57: icmp_seq=11 ttl=50 time=17.677 ms
  • Reply from:表示收到了目标设备的回应。
  • bytes:显示数据包的字节数,通常为 32 字节。
  • time:表示从发送请求到接收到应答的往返时间(以毫秒为单位)。
  • TTL:表示数据包生存时间,即数据包在路由过程中可以经过的最大跳数(时间戳)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4G、5G移远模块SIM卡热插拔问题解决

4G、5G移远模块SIM卡热插拔问题解决 1、开发环境2、问题阐述3、开启模块热插拔功能4、问题解决5、quectelCM工具(热插拔)6、思路1、开发环境 系统: ubuntu20.04 拨号工具:quectelCM 模块型号:ec20、rm500u 开发平台:RK35XX系列 2、问题阐述 SIM卡热插拔功能已开启,拔掉…

Win11家庭版转专业版

Win11家庭版转专业版(亲测有效) 第一步 【断网】输入这个密钥: R8NJ8-9X7PV-C7RCR-F3J9X-KQBP6 第二步 点击下一步会自动重启 第三步 【联网】输入这个密钥: F3NWX-VFMFC-MHYYF-BCJ3K-QV66Y 注意 两次输入密钥的地方一致 …

浅析大语言模型安全和隐私保护国内外标准和政策

过去两年,大模型技术已经普及并逐步渗透到各行各业,2025年注定是大模型应用井喷式发展的一年,AI在快速发展的同时,其带来的安全风险也逐渐凸显。人工智能系统的安全性和隐私保护已经成为社会关注的重点。 附下载:600多…

GelSight Mini视触觉传感器凝胶触头升级:增加40%耐用性,拓展机器人与触觉AI 应用边界

马萨诸塞州沃尔瑟姆-2025年1月6日-触觉智能技术领军企业Gelsight宣布,旗下Gelsight Mini视触觉传感器迎来凝胶触头的更新。经内部测试,新Gel凝胶触头耐用性提升40%,外观与触感与原凝胶触头保持一致。此次升级有效满足了客户在机器人应用中对设…

使用 Docker 安装 Maven 私服 Nexus3

在现代软件开发中,私有仓库是企业管理和分发内部依赖的重要工具,能够提高开发效率、加强依赖管理并确保构建的稳定性。Nexus Repository Manager 作为市场上常见的私服解决方案,不仅支持 Maven,还支持 npm、PyPI 等多种格式&#…

opencv 学习(3)

文章目录 画直线画圆画矩形画多边形文字绘制画板 本部分图形绘制 本节内容比较简单 直接上代码 画直线 import cv2 import numpy as np## 本节画直线## line 参数介绍 ## image 在那个图像上面 画线 ## 开始点借宿点 指定先的开始和结束的位置 ## 颜色 线宽 线性 ## shift…

Java-数据结构-栈与队列(StackQueue)

一、栈(Stack) ① 栈的概念 栈是一种特殊的线性表,它只允许固定一端进行"插入元素"和"删除元素"的操作,这固定的一端被称作"栈顶",对应的另一端就被称做"栈底"。 📚 栈中的元素遵循后…

带格式 pdf 翻译

支持 openAI 接口,国内 deepseek 接口兼容 openAI 接口, deepseek api 又非常便宜 https://pdf2zh.com/ https://github.com/Byaidu/PDFMathTranslate

【如何从0到1设计测试用例使用Fiddler完成弱网测试】

🌈个人主页:努力学编程’ ⛅个人推荐: c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 ⭐⭐⭐测试用…

基础项目实战——贪吃蛇(c++)

目录 前言一、 游戏总体框架二、地图绘制三、光标隐藏四、地图定义五、蛇体定义六、蛇体绘制七、蛇体移动八、频率控制九、边界检测十、游戏失败十一、蛇体转向十二、食物生成十三、食物碰撞十四、整体代码十五、结语 前言 各位小伙伴们好久不见,前段时间非常的忙很…

排序:插入、选择、交换、归并排序

排序 :所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性 :假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,…

Windows service运行Django项目

系统:Windows Service 软件:nssm,nginx 配置Django项目 1、把Django项目的静态文件整理到staticfiles文件夹中 注:settings中的设置 STATIC_URL /static/ STATIC_ROOT os.path.join(BASE_DIR, staticfiles/) STATICFILES_DI…

comfyui精准作图之gligen

简介 在 Stable Diffusion(SD)中,GLIGEN 是一种用于增强文本到图像生成模型可控性的技术。它通过在现有的预训练扩散模型(如 Stable Diffusion)基础上,引入额外的定位输入(如边界框、关键点或参…

【学习资源】MBSE和工业软件

工业软件从业者,需要学习与应用MBSE方法论,解决复杂问题的有效手段。笔者做一个简单介绍。 1 什么是MBSE? MBSE(Model-Based Systems Engineering,基于模型的系统工程)是一种系统工程方法论,其…

ue5 蒙太奇,即上半身动画和下半身组合在一起,并使用。学习b站库得科技

本文核心 正常跑步动画端枪动画跑起来也端枪 正常跑步动画 端枪动画的上半身 跑起来也端枪 三步走: 第一步制作动画蒙太奇和插槽 第二步动画蓝图选择使用上半身动画还是全身动画,将上半身端枪和下半身走路结合 第三步使用动画蒙太奇 1.开始把&a…

【Docker】docker compose 安装 Redis Stack

注:整理不易,请不要吝啬你的赞和收藏。 前文 Redis Stack 什么是? 简单来说,Redis Stack 是增强版的 Redis ,它在传统的 Redis 数据库基础上增加了一些高级功能和模块,以支持更多的使用场景和需求。Redis…

视频转码对画质有影响吗?视频融合平台EasyCVR支持哪些转码格式?

视频转码过程是将视频文件从一种编码格式转换为另一种格式的过程,这一过程在现代数字媒体中扮演着至关重要的角色。众所周知,视频转码不仅仅是简单的格式转换,它涉及多个关键参数的改变,例如视频编码格式、比特率、分辨率以及帧率…

vscode开启调试模式,结合Delve调试器调试golang项目详细步骤

1.前期准备 (1).在vs code中的扩展程序中搜索并安装Go扩展程序 (2).安装 Delve 调试器 go install github.com/go-delve/delve/cmd/dlvlatest (3).打开vs code的命令面板,输入Go: Install/Update Tools,并单击该命令执行,安装或更新Go语…

springboot和vue配置https请求

项目场景: 代码发布到线上使用https请求需要配置ssl证书,前后端都需要修改。 问题描述 如图,我们在调用接口时报如下错误,这就是未配置ssl但是用https请求产生的问题。 解决方案: 前端:在vite.config.js文…

每日学习30分轻松掌握CursorAI:Cursor基础设置与配置

Cursor基础设置与配置 一、基础设置概览 1. 设置项分类表 设置类别主要功能重要程度语言设置界面及AI交互语言配置★★★★★快捷键配置自定义操作快捷键★★★★☆外观设置主题、字体、颜色方案★★★☆☆编辑器设置缩进、换行、代码风格★★★★☆AI功能设置AI响应灵敏度、…