当前位置: 首页 > news >正文

你了解网络层的 ICMP 吗?

你了解网络层的 ICMP 吗?

    • 一. 什么是 ICMP
    • 二. ICMP 的工作原理
    • 三. ICMP 的结构
    • 四. ICMP 的常见应用
    • 五. ICMP 的局限性与安全性
    • 六. 总结

前言

这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。
作者:神的孩子都在歌唱

一. 什么是 ICMP

ICMP(Internet Control Message Protocol,互联网控制消息协议) 是网络层的一个重要协议,用于在计算机网络中传递控制消息。它是 IP协议 的一部分,主要用于网络设备之间传递错误消息、诊断信息和网络状态,帮助网络管理员和设备了解网络运行情况。

ICMP 的基本功能是对网络通信中的问题进行报告,例如目标不可达、超时等。最常见的应用是 Ping 命令,它利用 ICMP 协议来测试主机之间的连通性。

ICMP报文封装在IP数据报内部

image-20241218234117010

二. ICMP 的工作原理

ICMP 主要通过发送 控制消息 来实现其功能。这些消息可以是以下两类之一:

  1. 错误报告消息:用于报告网络中出现的问题或错误。
  2. 查询消息:用于请求网络状态信息或进行诊断。

ICMP 消息通常由 IP 层产生,并由目的地的主机或路由器响应。

ICMP 错误消息类型

  1. 目的不可达(Destination Unreachable)
    当数据包无法到达目标主机或网络时,路由器或目标主机会发送此消息。它的代码字段指示错误的具体原因,如网络不可达、主机不可达、端口不可达等。

  2. 超时(Time Exceeded)
    当数据包在网络中循环超过了最大传输时间(TTL,Time to Live)时,网络设备(通常是路由器)会返回此消息。TTL 是用来防止数据包在网络中无限循环的。

  3. 源抑制(Source Quench)
    当路由器或主机认为数据发送速率过快,可能导致网络拥堵时,它会返回此消息,要求发送方降低数据发送速度。此消息已经逐渐不常使用。

  4. 参数问题(Parameter Problem)
    当 IP 数据包的头部存在错误时,ICMP 会返回此错误消息,告知发送方数据包格式错误或其他问题。

ICMP 查询消息类型

  1. 回显请求与回显应答(Echo Request and Echo Reply)
    这类消息用于诊断工具,如 Ping。Ping 命令通过向目标主机发送 Echo Request 消息,然后等待目标主机返回 Echo Reply 消息,从而测试主机间的连通性。

  2. 时间戳请求与时间戳应答(Timestamp Request and Timestamp Reply)
    用于网络设备间同步时间戳,通常用于诊断时延和同步问题。

  3. 信息请求与信息应答(Information Request and Information Reply)
    用于查询目标设备的信息。

三. ICMP 的结构

ICMP 消息的格式非常简单,主要由以下几部分组成:

  • 类型(Type):定义消息的类型(如回显请求、目的不可达等)。
  • 代码(Code):进一步细化消息类型,提供具体的错误或状态信息。
  • 校验和(Checksum):用于检测ICMP消息在传输过程中是否发生了错误。
  • 标识符(Identifier):通常用于匹配请求和响应消息,特别是在回显请求/响应中。
  • 序列号(Sequence Number):用于标识发送的消息序列,通常用于 Ping 的应答匹配。

四. ICMP 的常见应用

  1. Ping
    Ping 是利用 ICMP 的 Echo RequestEcho Reply 消息来检测网络连通性的工具。当你在命令行中输入 ping 命令时,它会向目标主机发送一个 ICMP Echo 请求,目标主机响应 Echo 回复。如果目标主机可达,你会看到延迟和其他网络信息。

  2. Traceroute
    Traceroute 是另一个基于 ICMP 的工具,用于诊断数据包从源主机到目标主机经过的路由。Traceroute 通过发送 ICMP 超时(Time Exceeded)消息来逐步揭示路由路径,从而帮助用户识别网络瓶颈或故障。

  3. 网络故障排查
    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个分区&#xf…...

旅游创业,千益畅行,开启新的旅游模式!

在当今旅游市场蓬勃发展的时代,旅游卡项目如一颗新星闪耀登场,而千益畅行旅游卡服务更是其中的佼佼者,为广大旅游爱好者带来了全新的旅游体验与机遇。 一、旅游卡项目是如何运作的呢? 千益畅行旅游卡服务的运作模式犹如一部精心…...

集成自然语言理解服务,让应用 “听得懂人话”

如今,应用程序智能化已成趋势,开发者想要实现智能化,那么首先需要赋予应用理解自然语言的能力,使其能够准确地听懂人话,进而响应用户需求,并提供一系列智能化服务。比如用户语音控制应用程序帮忙订票&#…...

利用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)&#xf…...

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…...

python pandas 优化内存占用(一)

最近我用python处理excel,使用的是pandas库,我发现pandas库非常占用内存,一直想研究下如何优化pandas的内存占用,但一直没腾出空来,最近终于有时间研究一把了,我先把优化方法写上,如果你想了解更…...

FutureCompletableFuture实战

1. Callable&Future&FutureTask介绍 直接继承Thread或者实现Runnable接口都可以创建线程,但是这两种方法都有一个问题就是:没有返回值,也就是不能获取执行完的结果。因此java1.5就提供了Callable接口来实现这一场景,而Fu…...

Loki 微服务模式组件介绍

目录 一、简介 二、架构图 三、组件介绍 Distributor(分发器) Ingester(存储器) Querier(查询器) Query Frontend(查询前端) Index Gateway(索引网关&#xff09…...

peerDependencies对等依赖

在 package.json 中平时常用的有字段有 dependencies 和 devDependencies,但 peerDependencies 平时都没咋看到过,今天具体讲讲 peerDependencies 的作用 一、什么是对等依赖 peerDependencies 可以翻译为“对等依赖”或“同行依赖”。这个术语在 npm …...

贪心算法 part01

class Solution { public:int maxSubArray(vector<int>& nums) {int result INT32_MIN;int count 0;for (int i 0; i < nums.size(); i) {count nums[i];if (count > result) { // 取区间累计的最大值&#xff08;相当于不断确定最大子序终止位置&#xff…...

java开发入门学习二 - 变量

目录 一 关键字 ​编辑 二 标识符 三 变量 变量数据类型 变量注意点 四 数据类型 前置知识 - 计算机存储单位 整型数据类型 浮点数据类型 字符数据类型 布尔数据类型 五 数据类型间的计算 基本数据类型之间的计算 自动类型提升 强制类型转换 引用数据类型 Sti…...

Qt Q_ENUM enum 转 QString 枚举字符串互转; C++模板应用

Part1: Summary 项目中我们常用到命名&#xff0c;使用 enum 转成 string &#xff0c;方便简洁&#xff1b;Qt给我们提供了一个很方便的功能 Q_ENUM&#xff0c;可以实现枚举字符串互转&#xff1b; Q_ENUM宏将枚举注册到元对象系统中&#xff1b; QMetaEnum::fromType获取枚…...

0004.基于springboot+elementui的在线考试系统

适合初学同学练手项目&#xff0c;部署简单&#xff0c;代码简洁清晰&#xff1b; 愿世界和平再无bug 一、系统架构 前端&#xff1a;vue| elementui 后端&#xff1a;springboot | mybatis-plus 环境&#xff1a;jdk1.8 | mysql | maven 二、登录角色 1.管理员 2.老师 …...

基于 iAP2 协议 的指令协议,用于对安防设备的 MCU 进行操作

协议设计目标 1. 安全性&#xff1a;通过 iAP2 协议与 MCU 设备进行安全通信。 2. 通用性&#xff1a;支持对安防设备的常见功能进行操作&#xff0c;如状态查询、设备控制、参数配置等。 3. 高效性&#xff1a;数据结构简洁清晰&#xff0c;易于解析和扩展。 4. 扩展性&#x…...

02-5.python入门基础一控制流(while)

Python 控制流是指控制程序执行顺序的机制&#xff0c;它允许程序根据不同的条件和情况执行不同的代码块或重复执行某些代码。 while 循环的用法与示例 语法结构及要点 在 Python 中&#xff0c;while循环是一种基于条件判断的循环结构&#xff0c;其语法构成如下&#xff1a;…...