计算机网络之---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:表示数据包生存时间,即数据包在路由过程中可以经过的最大跳数(时间戳)。

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

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

相关文章

电脑之一键备份系统(One Click Backup System for Computer)

电脑之一键备份系统 相信使用电脑的的人都遇到过,电脑系统崩溃,开机蓝屏等原因,这个时候你急着用电脑办公,电脑却给你罢工是多么气人了,其实可以给电脑做一个系统备份。 最近每天都有系统蓝屏崩溃,这个实难…

课题推荐——基于GPS的无人机自主着陆系统设计

关于“基于GPS的无人机自主着陆系统设计”的详细展开,包括项目背景、具体内容、实施步骤和创新点。如需帮助,或有导航、定位滤波相关的代码定制需求,请点击文末卡片联系作者 文章目录 项目背景具体内容实施步骤相关例程MATLAB例程python例程 …

【Excel笔记_2】单元格跳转求累加

需求: 计算当前空格等于某一列1-12的和,下一个空格是13-24的和,每次间隔12 如果起始位置是 A1,并且希望每次计算 12 行的和,每个单元格依次计算不同的 12 行的和,可以使用以下公式: 在 B1 单元…

【小程序】5分钟快速入门抓包微信小程序

期末周无聊,抽点时间看看小程序渗透,先讲下微信小程序的抓包 工具:BurpsuiteProxifier step1 bp先开个端口代理,演示用的8080(懒得再导证书) step2 Proxifier设置好bp的代理 step3 随便启动个微信小程序,任务管理…

腾讯云AI代码助手-公司职位分析AI助手

作品简介 腾讯云AI代码助手是一款智能工具,专注于为公司提供职位分析服务。通过自然语言处理和机器学习技术,它能快速解析职位描述,提取关键信息,并提供数据驱动的洞察,帮助公司优化招聘流程和职位设计。 技术架构 …

【人工智能】基于Python与OpenCV构建简单车道检测算法:自动驾驶技术的入门与实践

随着自动驾驶技术的快速发展,车道检测作为自动驾驶系统中的一个重要组成部分,起着至关重要的作用。本文将介绍如何利用Python与OpenCV库构建一个简单的车道检测算法,帮助读者理解自动驾驶技术的基本原理与实现过程。首先,我们会简…

ubuntu清理磁盘

ubuntu清理磁盘脚本: #!/bin/bash#shell脚本用#作注释行,但是第一行的#!/bin/bash例外sudo apt-get clean sudo rm -rf /tmp/* sudo rm -rf /var/cache/*cd /var/log/ sudo du -h -d 1 rm -rf ./*cd ~/.cache sudo du -h -d 1 rm -rf ./*apt…

网络基础1 http1.0 1.1 http/2的演进史

http1.0 1.1 http/2的演进史😎 (连接复用 队头阻塞 服务器推送 2进制分帧) 概述 我们主要关注的是应用层 传输层 http协议发展历史 http的报文结构:起始行 Header Body http的典型特征 http存在的典型问题 Keep Alive机制 chun…

快速上手:采用Let‘sEncrypt免费SSL证书配置网站Https (示例环境:Centos7.9+Nginx+Let‘sEncrypt)

1 关于Let’s Encrypt与Cerbot DNS验证 Let’s Encrypt 是一个提供 免费证书 的 认证机构。 Cerbot 是 Let’s Encrypt 提供的一个工具,用于自动化生成、验证和续订证书。 DNS验证是 Cerbot 支持的验证方式之一。相比 HTTP 验证或 TLS-ALPN 验证,DNS …

Solidity合约编写(五)

解决问题 编写 FundMe.sol 一个众筹合约,允许用户向合约转账 ETH,并记录每个地址的转账金额。同时,合约还要求每次转账至少为 1 ETH,否则交易失败。最后,合约管理员可以提取资金,并使用 call 函数发送 ETH…

UDP接收和断线重连代码注入案例

问题:下方函数启动了一个UDP监听,在接收到某udp信息时会发生报错 SocketException: Connection reset by peerat System.Net.Sockets.Socket.ReceiveFrom (System.Byte[] buffer, System.Int32 offset, System.Int32 size, System.Net.Sockets.SocketFl…

计算机网络之---物理层标准与协议

常见的物理层标准 1. IEEE 802 标准 IEEE 802 是一系列定义局域网和城域网通信协议的标准,其中许多标准涉及到物理层的技术细节: IEEE 802.3 (Ethernet):定义了以太网的物理层规范,规定了如何通过电缆(例如同轴电缆…

网络安全-XSS跨站脚本攻击(基础篇)

漏洞扫描的原理 1.跨站脚本攻击介绍 xss跨站脚本攻击: xSS 全称(Cross site Scripting )跨站脚本攻击,是最常见的Web应用程序安全漏洞之一,位于OWASP top 10 2013/2017年度分别为第三名和第七名,XSS是指攻…

毕业项目推荐:基于yolov8/yolov5/yolo11的动物检测识别系统(python+卷积神经网络)

文章目录 概要一、整体资源介绍技术要点功能展示:功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出(xls格式)功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…

Kafka 快速实战及基本原理详解解析-01

一、Kafka 介绍 1. MQ 的作用 消息队列(Message Queue,简称 MQ)是一种用于跨进程通信的技术,核心功能是通过异步消息的方式实现系统之间的解耦。它在现代分布式系统中有着广泛的应用,主要作用体现在以下三个方面&…

xtu oj 1614 数字(加强版)

输出格式# 每行输出一个样例的结果&#xff0c;为一个整数。 样例输入# 3 1 10 101 样例输出# 1 2 3 解题思路&#xff1a;这个题不要想复杂了&#xff0c;很容易超时。 首先需要注意的点&#xff0c;n<10的10000次方&#xff0c;用int或者long long都会爆&#xff0c;所…

HTML 音频(Audio)

HTML 音频(Audio) HTML5 引入了新的音频标签 <audio>,使得在网页上嵌入音频文件变得更加简单。在此之前,播放音频通常需要依赖于第三方插件,如 Flash。但随着 HTML5 的普及,浏览器原生支持音频播放,极大地提升了用户体验和网页性能。 基本用法 要使用 HTML5 的音…

解读若依框架中的 @Xss 注解

文章目录 1. 背景与问题定义什么是 XSS 攻击&#xff1f;XSS 的常见类型传统解决方案的局限性 2. Xss 注解详解Xss 注解源码解析注解核心要素 XssValidator 实现解析核心逻辑 3. 应用场景场景一&#xff1a;表单输入校验示例代码 场景二&#xff1a;API 接口参数校验示例代码 4…

unity action委托举例

using System; using UnityEngine; public class DelegateExample : MonoBehaviour { void Start() { // 创建委托实例并添加方法 Action myAction Method1; myAction Method2; myAction Method3; // 调用委托&#xff0c;会依次执…

『SQLite』如何使用索引来查询数据?

前面已经讲过如何创建索引&#xff0c;这里进一步讲解如何通过索引来查询。 INDEXED BY 子句的语法&#xff0c;它可以与 DELETE、UPDATE 或 SELECT 语句一起使用&#xff1a; SELECT|DELETE|UPDATE column1, column2... INDEXED BY (index_name) table_name WHERE (CONDITION…