你了解网络层的 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
转载说明:务必注明来源,附带本人博客连接。

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

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

相关文章

uniapp使用百度地图配置了key,但是显示Map key not configured

搞了我两天的一个问题。 hbuilderx版本:4.36 问题介绍: 我的项目是公司的项目,需要在H5端使用百度地图,使用vue-cli创建的uniapp,就是uni代码在src里的目录结构。就是使用这种方式才会遇到这个问题。 问题原因&#xf…

【Qt】drawText字体大小问题探究

背景 软件的一个功能是: 打开图片在图片上绘制序号,序号的样式是圆圈内包含数字将带有序号的图片打印出来 实现思路也很简单,在屏幕上显示时重写paintEvent函数,利用QPainter完成图片和序号的绘制。打印时只需要将QPainter对应…

Win11安装安卓子系统WSA

文章目录 简介一、启用Hyper-V二、安装WSA三、安装APKAPK商店参考文献 简介 WSA:Windows Subsystem For Android 一、启用Hyper-V 控制面板 → 程序和功能 → 启用或关闭 Windows 功能 → 勾选 Hyper-V 二、安装WSA 进入 Microsoft Store,下拉框改为 …

数据结构 ——二叉树转广义表

数据结构 ——二叉树转广义表 1、树转广义表 如下一棵树&#xff0c;转换为广义表 root(c(a()(b()()))(e(d()())(f()(j(h()())())))) (根&#xff08;左子树&#xff09;&#xff08;右子树&#xff09;) 代码实现 #include<stdio.h> #include<stdlib.h>//保存…

企业车辆管理系统(源码+数据库+报告)

一、项目介绍 352.基于SpringBoot的企业车辆管理系统&#xff0c;系统包含两种角色&#xff1a;管理员、用户,系统分为前台和后台两大模块 二、项目技术 编程语言&#xff1a;Java 数据库&#xff1a;MySQL 项目管理工具&#xff1a;Maven 前端技术&#xff1a;Vue 后端技术&a…

ubuntu20.04复现 Leg-KILO

这里写目录标题 opencv版本问题下载3.2.0源代码进入解压后的目录创建构建目录运行 CMake 配置 配置时指定一个独立的安装目录&#xff0c;例如 /opt/opencv-3.2&#xff1a;出错&#xff1a; 使用多线程编译错误1&#xff1a; stdlib.h: 没有那个文件或目录错误2&#xff1a;er…

基于SpringBoot+vue的高校学生成绩管理系统

目录 一、绪论1.1 开发背景1.2 系统开发平台1.2.1 Vue简介1.2.2 IDEA简介1.2.3 MySQL简介 1.3 系统开发环境 二、需求分析2.1 系统需求分析2.2 系统数据流图 三、概要设计3.1 业务流程分析 四、详细设计4.1 系统功能结构图4.2 E-R模型4.3 数据库表设计 五、模块实现5.1 管理员主…

Docker--Docker Image(镜像)

什么是Docker Image&#xff1f; Docker镜像&#xff08;Docker Image&#xff09;是Docker容器技术的核心组件之一&#xff0c;它包含了运行应用程序所需的所有依赖、库、代码、运行时环境以及配置文件等。 简单来说&#xff0c;Docker镜像是一个轻量级、可执行的软件包&…

RabbitMQ的核心组件有哪些?

大家好&#xff0c;我是锋哥。今天分享关于【RabbitMQ的核心组件有哪些&#xff1f;】面试题。希望对大家有帮助&#xff1b; RabbitMQ的核心组件有哪些&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 RabbitMQ是一个开源的消息代理&#xff08;Messag…

[OpenGL] Transform feedback 介绍以及使用示例

一、简介 本文介绍了 OpenGL 中 Transform Feedback 方法的基本概念和代码示例。 二、Transform Feedback 介绍 1. Transform Feedback 简介 根据 OpenGL-wiki&#xff0c;Transform Feedback 是捕获由顶点处理步骤&#xff08;vertex shader 和 geometry shader&#xff0…

【Linux】—简单实现一个shell(myshell)

大家好呀&#xff0c;我是残念&#xff0c;希望在你看完之后&#xff0c;能对你有所帮助&#xff0c;有什么不足请指正&#xff01;共同学习交流哦&#xff01; 本文由&#xff1a;残念ing原创CSDN首发&#xff0c;如需要转载请通知 个人主页&#xff1a;残念ing-CSDN博客&…

什么是Apache日志?为什么Apache日志分析很重要?

Apache是全球最受欢迎的Web服务器软件&#xff0c;支持约30.2%的所有活跃网站。凭借其可靠性、灵活性和强大的功能&#xff0c;Apache数十年来一直是互联网的中坚力量。 一、Apache Web服务器的工作原理 Apache Web服务器的工作原理如下&#xff1a; 接收HTTP请求&#xff1…

Spring Security 6 系列之一 - 开篇入门

之所以想写这一系列&#xff0c;是因为之前工作过程中使用Spring Security&#xff0c;但当时基于spring-boot 2.3.x&#xff0c;其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0&#xff0c;结果一看Spring Security也升级为6.3.0&#xff0c;关键是其风…

docker 搭建自动唤醒UpSnap工具

1、拉取阿里UpSnap镜像 docker pull crpi-k5k93ldwfc7o75ip.cn-hangzhou.personal.cr.aliyuncs.com/upsnap/upsnap:4 2、创建docker-compose.yml文件&#xff0c;进行配置&#xff1a; version: "3" services:upsnap:container_name: upsnapimage: crpi-k5k93ldwf…

7.Linux - 安装MySQL、Tomcat、Nginx、RabbitMQ、Redis

Linux - 安装MySQL 文章目录 Linux - 安装MySQL一、MySQL 5.71.1 安装1.2 配置 二、MySQL 8.x2.1 安装2.2 配置 三、Tomcat安装3.1 安装 JDK3.2 Tomcat&#xff08;整的不行&#xff09; 四、Nginx4.1 安装 五、RabbitMQ5.1 安装 六、Redis6.1 安装 一、MySQL 5.7 1.1 安装 我…

python | linux | ModuleNotFoundError: No module named ‘WFlib‘ |找不到模块

问题&#xff1a; (base) beautyby521-7:~/Website-Fingerprinting-Library-master$ bash scripts/NetCLR.sh Traceback (most recent call last):File "/home/beauty/Website-Fingerprinting-Library-master/exp/pretrain.py", line 8, in <module>from WFli…

AI Agent:重塑业务流程自动化的未来力量(2/30)

《AI Agent&#xff1a;重塑业务流程自动化的未来力量》 摘要&#xff1a;整体思路是先介绍 AI Agent 的基本情况&#xff0c;再深入阐述其实现业务流程自动化的方法和在不同领域的应用&#xff0c;接着分析其价值和面临的挑战&#xff0c;最后得出结论&#xff0c;为读者全面…

机器学习之 K-Means

1. 什么是 K-Means&#xff1f; K-Means 是一种常用的无监督学习算法&#xff0c;主要用于聚类分析任务。其目标是将数据集划分为 K 个不同的簇&#xff0c;使得同一簇内的数据点之间的相似性更高&#xff0c;而不同簇的数据点差异更大。K-Means 算法使用了一个简单而有效的迭…

上传文件时获取音视频文件时长和文本文件字数

获取音视频文件时长和文本文件字数 一、获取音视频文件时长二、计算文本文件字数 最近有个需求&#xff0c;要求上传文件时获取音视频文件时长和文本文件字数&#x1f436;。 发现这样的冷门资料不多&#xff0c;特做个记录。本文忽略文件上传功能&#xff0c;只封装核心的工具…

【AIGC】与模型对话:理解与预防ChatGPT中的常见误解

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;模型的工作原理和用户期望差异人工智能模型的基本工作原理认知上的局限与误解用户期望与模型实际能力的差距精确理解用户意图的重要性实际应用中的建议 &…