你了解网络层的 ICMP 吗?
你了解网络层的 ICMP 吗?
- 一. 什么是 ICMP
- 二. ICMP 的工作原理
- 三. ICMP 的结构
- 四. ICMP 的常见应用
- 五. ICMP 的局限性与安全性
- 六. 总结
前言
这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。
作者:神的孩子都在歌唱
一. 什么是 ICMP
ICMP(Internet Control Message Protocol,互联网控制消息协议) 是网络层的一个重要协议,用于在计算机网络中传递控制消息。它是 IP协议 的一部分,主要用于网络设备之间传递错误消息、诊断信息和网络状态,帮助网络管理员和设备了解网络运行情况。
ICMP 的基本功能是对网络通信中的问题进行报告,例如目标不可达、超时等。最常见的应用是 Ping 命令,它利用 ICMP 协议来测试主机之间的连通性。
ICMP报文封装在IP数据报内部

二. ICMP 的工作原理
ICMP 主要通过发送 控制消息 来实现其功能。这些消息可以是以下两类之一:
- 错误报告消息:用于报告网络中出现的问题或错误。
- 查询消息:用于请求网络状态信息或进行诊断。
ICMP 消息通常由 IP 层产生,并由目的地的主机或路由器响应。
ICMP 错误消息类型:
-
目的不可达(Destination Unreachable)
当数据包无法到达目标主机或网络时,路由器或目标主机会发送此消息。它的代码字段指示错误的具体原因,如网络不可达、主机不可达、端口不可达等。 -
超时(Time Exceeded)
当数据包在网络中循环超过了最大传输时间(TTL,Time to Live)时,网络设备(通常是路由器)会返回此消息。TTL 是用来防止数据包在网络中无限循环的。 -
源抑制(Source Quench)
当路由器或主机认为数据发送速率过快,可能导致网络拥堵时,它会返回此消息,要求发送方降低数据发送速度。此消息已经逐渐不常使用。 -
参数问题(Parameter Problem)
当 IP 数据包的头部存在错误时,ICMP 会返回此错误消息,告知发送方数据包格式错误或其他问题。
ICMP 查询消息类型:
-
回显请求与回显应答(Echo Request and Echo Reply)
这类消息用于诊断工具,如 Ping。Ping 命令通过向目标主机发送 Echo Request 消息,然后等待目标主机返回 Echo Reply 消息,从而测试主机间的连通性。 -
时间戳请求与时间戳应答(Timestamp Request and Timestamp Reply)
用于网络设备间同步时间戳,通常用于诊断时延和同步问题。 -
信息请求与信息应答(Information Request and Information Reply)
用于查询目标设备的信息。
三. ICMP 的结构
ICMP 消息的格式非常简单,主要由以下几部分组成:
- 类型(Type):定义消息的类型(如回显请求、目的不可达等)。
- 代码(Code):进一步细化消息类型,提供具体的错误或状态信息。
- 校验和(Checksum):用于检测ICMP消息在传输过程中是否发生了错误。
- 标识符(Identifier):通常用于匹配请求和响应消息,特别是在回显请求/响应中。
- 序列号(Sequence Number):用于标识发送的消息序列,通常用于 Ping 的应答匹配。
四. ICMP 的常见应用
-
Ping
Ping 是利用 ICMP 的 Echo Request 和 Echo Reply 消息来检测网络连通性的工具。当你在命令行中输入ping命令时,它会向目标主机发送一个 ICMP Echo 请求,目标主机响应 Echo 回复。如果目标主机可达,你会看到延迟和其他网络信息。 -
Traceroute
Traceroute 是另一个基于 ICMP 的工具,用于诊断数据包从源主机到目标主机经过的路由。Traceroute 通过发送 ICMP 超时(Time Exceeded)消息来逐步揭示路由路径,从而帮助用户识别网络瓶颈或故障。 -
网络故障排查
ICMP 协议经常用于排查网络故障,尤其是在目标不可达、延迟等问题的诊断中。网络管理员通常通过 ICMP 消息了解网络状态,迅速定位问题所在。
五. ICMP 的局限性与安全性
虽然 ICMP 对于网络诊断非常有用,但它也存在一些潜在的安全风险:
- ICMP 洪水攻击(Ping Flood):通过大量发送 ICMP 请求,攻击者可以消耗目标系统的带宽和处理能力,导致拒绝服务(DoS)攻击。
- ICMP 重定向攻击:攻击者可能通过伪造 ICMP 重定向消息,将数据流量重定向到恶意主机,从而进行中间人攻击。
- ICMP 监控:ICMP 消息能够透露网络拓扑信息,这可能被攻击者用来收集网络信息,因此许多防火墙和路由器对 ICMP 流量有一定的限制。
六. 总结
ICMP 是网络层的一个重要协议,提供了网络故障诊断和报告功能。它用于错误报告、网络状态查询以及测试网络连通性等。ICMP 在工具如 Ping 和 Traceroute 中得到了广泛应用,是网络管理和故障排查的重要工具。然而,ICMP 也存在一些安全隐患,因此在网络管理中需要谨慎使用。
作者:神的孩子都在歌唱
本人博客:https://blog.csdn.net/weixin_46654114
转载说明:务必注明来源,附带本人博客连接。
相关文章:
你了解网络层的 ICMP 吗?
你了解网络层的 ICMP 吗? 一. 什么是 ICMP二. ICMP 的工作原理三. ICMP 的结构四. ICMP 的常见应用五. ICMP 的局限性与安全性六. 总结 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神…...
清理C盘小记
突然C盘就爆满了,想当初还是给他预留了120G的空间,感觉到现在也不够用了,担心出现死机的情况就赶紧进行了清理。有一说一,清理回收站是真的有用。 参考:C盘清理指南,清理出30G起,超详细总结&am…...
Excel中如何消除“长短款”
函数微调可以可以实施,简单且易于操作的气球🎈涨缩更妙。 (笔记模板由python脚本于2024年12月17日 06:19:13创建,本篇笔记适合用Excel操作数据的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Fre…...
超越 RAG 基础:AI 应用的高级策略
作者:来自 Elastic Elastic Platform Team 我们最近与 Cohere 举办的虚拟活动深入探讨了检索增强生成 (retrieval augmented generation - RAG) 的世界,重点讨论了在概念验证阶段之后构建 RAG 应用程序的关键注意事项。我们的演讲者是 Elastic 的首席解…...
[shader]【图形渲染】【unity】【游戏开发】 Shader数学基础2-认识点和矢量
在计算机图形学和Shader编程中,点和矢量是两种常见且基础的数学对象。它们在空间中的作用和性质是理解图形渲染的关键。本篇文章将深入探讨点(Point)和矢量(Vector)的定义、特性以及它们之间的关系。 1. 点(Point)的定义 在数学和计算机图形学中,**点(Point)**用于…...
微软开源Python Markdown转换工具
分享一个microsoft开源的Python工具——markitdown,轻松将各类文件转换为Markdown格式。 markitdown支持的文件格式 PDF(.pdf)PowerPoint(.pptx)Word(.docx)Excel(.xlsx)图片(支持EXIF元数据和OCR识别)音频(支持EXIF元数据和语音转录)HTML(包括对Wikipedia...
安装与配置MongoDB 6.0以支持远程连接
安装与配置MongoDB 6.0以支持远程连接 目录 安装curl工具下载并导入MongoDB 6.0 PGP密钥向APT导入MongoDB 6.0版软件包的资源链接安装MongoDB依赖libssl1.1安装MongoDB启动并检查MongoDB服务状态进入MongoDB Shell交互式执行环境设置MongoDB开机自启配置MongoDB允许远程连接 …...
零衍门户国际化:助力拓展全球视野
概述 零衍系统管理平台统一门户管理,支持门户看板灵活配置,同时提供场景化的门户模板,丰富的门户组件,可协助用户快速搭建企业专属门户。 随着零衍产品的不断成熟,国际化需求日益增多,客户期望零衍门户可…...
mysql免安装版配置教程
一、将压缩包解压至你想要放置的文件夹中,注意:绝对路径中要避免出现中文 二、在解压目录下新建my.ini文件,已经有的就直接覆盖 my.ini文件内容 [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录 basedirD:\\tools\\mysql-8.1.0-win…...
kafka的处理的一些问题 消费延迟
kafka的处理的一些问题 消费者客户端不但没有背压而且内存充足,但产生的消费延迟越来越大在Kafka的Leader副本宕机时 消费者客户端不但没有背压而且内存充足,但产生的消费延迟越来越大 比如我们这个kakfa集群一共有3个Broker节点 TOp1有5个分区…...
旅游创业,千益畅行,开启新的旅游模式!
在当今旅游市场蓬勃发展的时代,旅游卡项目如一颗新星闪耀登场,而千益畅行旅游卡服务更是其中的佼佼者,为广大旅游爱好者带来了全新的旅游体验与机遇。 一、旅游卡项目是如何运作的呢? 千益畅行旅游卡服务的运作模式犹如一部精心…...
集成自然语言理解服务,让应用 “听得懂人话”
如今,应用程序智能化已成趋势,开发者想要实现智能化,那么首先需要赋予应用理解自然语言的能力,使其能够准确地听懂人话,进而响应用户需求,并提供一系列智能化服务。比如用户语音控制应用程序帮忙订票&#…...
利用notepad++删除特定关键字所在的行
1、按组合键Ctrl H,查找模式选择 ‘正则表达式’,不选 ‘.匹配新行’ 2、查找目标输入 : ^.*关键字.*\r\n (不保留空行) ^.*关键字.*$ (保留空行)3、替换为:(空) 配置界面参考下图: …...
[HNOI2002] 营业额统计 STL - set集合
文章目录 [HNOI2002] 营业额统计题目描述样例输入 #1样例输出 #1 提示题解相关知识点set [HNOI2002] 营业额统计 STL - set解题 题目描述 Tiger 最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger 拿出…...
fastAPI接口(普通流式响应和大模型流式响应)
1. 流式输出和非流失输出: 大模型的流式输出(Streaming Output)和非流式输出(Non-streaming Output)是指在生成文本或其他输出时,如何将结果返回给用户或下游系统。 流式输出 (Streaming Output)…...
Linux系统安装node.js
一、node官网下载想要的node版本 https://nodejs.org/en/download/package-manager 二、将tar.xz文件解压 tar -xvf node-vxxx.tar.xz 三、改文件夹的名字,改成nodejs mv node-xxx nodejs 四、复制nodejs文件,并上传到linux 服务器 /usr/local 目录下…...
《解决两道有趣的编程问题:交替数字和与简单回文》
在编程的世界里,算法和逻辑的挑战无处不在。今天,我们将用 Python 来解决两道有趣的编程问题,分别是计算交替数字和以及生成简单回文。 一、交替数字和(Alternating Sum of Numbers) 1. 问题描述 给定一系列整数&am…...
2412d,d的8月会议
原文 总结 替换D的逃逸分析 Rikki说,他一个月前曾与Dennis讨论过简化D的逃逸分析,但没有结果.在BeerConf上,他再次提起了它,Dennis说他一直在考虑它. Rikki也与Walter谈过这件事,Walter曾说过DIP1000并没有完全如期工作,且有点太复杂了. 因此,Rikki想讨论按D逃逸分析方法替…...
WEB自动化测试(selenium工具)框架、面试题
一、什么是web自动化测试 让程序员代替人为去验证web项目功能的过程 二、什么web项目适合自动化测试 1)需求变动不频繁 测试脚本的稳定性决定了自动化测试的维护成本。如果软件需求变动过于频繁,测试人员需要根据变动的需求来更新测试用例以及相关的测试脚本&…...
前端自动化部署之ssh2和ssh2-sftp-client
ssh2-sftp-client 本身是一个专门用于处理 SFTP文件操作的库,它不直接提供执行远程命令的功能。但是可以通过它的底层依赖库 ssh2 实现执行命令的功能。 以下是实现方法和示例代码: 方法一:使用 ssh2 执行远程命令 ssh2 是 ssh2-sftp-client…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
