简单了解ICMP协议

目录

一、什么是ICMP协议?

二、ICMP如何工作?

三、ICMP报文格式

四、ICMP的作用

五、ICMP的典型应用

5.1 Ping程序

5.2 Tracert(Traceroute)路径追踪程序


一、什么是ICMP协议?

ICMP因特网控制报文协议是一个差错报告机制,通常被IP层或更高层的协议(TCP或UDP)使用属于网络层协议,应用在三层网络设备上。主要用于在IP主机和路由器之间传递控制消息,用于报告主机是否可达、路由是否可用等。

二、ICMP如何工作?

当三层网络设备如路由器在处理转发数据包出现错误时,会使用ICMP向数据包的源端设备报告这个差错,它既不会纠正这个差错,也不会通知中间的网络设备。因为ICMP报文被封装在IP数据包内部,作为IP数据包的数据部分通过互联网传递。IP数据包中的字段包含源端和最终的目的端,并没有记录报文在网络传递中的全部路径(除非IP数据包中设置了路由记录选项)。因此当设备检测到差错时,它无法通知中间的网络设备,只能向源端发送差错报告。

源端主机设备在收到差错报告后,它虽然不能判断差错是由中间哪个网络设备所引起的,但是却可以根据ICMP报文类型字段确定发生错误的类型,并确定如何才能更好地重发传递失败的数据包。

 

三、ICMP报文格式

  • Type字段表示ICMP消息的类型
  • Code字段表示ICMP消息类型细分的子类型
  • Checksum字段表示ICMP报文的校验和

根据ICMP协议的Type和Code字段可以判断数据包经路由设备处理转发过程中可能出现的错误情况。

四、ICMP的作用

1.重定向----------解决数据包在转发过程中的次优路径问题。

当主机A要访问服务器A时,由于默认网关指向RTB,数据包就不会直接去找服务器A,而是先通过RTB,在由RTB把数据包返回发给服务器A,就会造次优路径;面对此情况路由器RTB此时会给主机A发送一个ICMP的重定向报文,告诉主机A下次在访问20.0.0.0/24网段时,直接找RTA网关(指定网段有效)。

2.差错检测-------通过ping命令来判断目标主机是否可达、数据包在收发端的往返时延、数据包丢失情况。

3.错误报告-------数据包在网络某个三层设备无法转发时,此节点如路由器就会给原主机发送一个ICMP类型为3的错误报告报文。

五、ICMP的典型应用

5.1 Ping程序

可以根据ping命令发送的ICMP-request报文的其对应ICMP-echo消息来判断IPv4或IPv6网络设备如主机是否可达。

-a----------指定源IP地址

-c----------指定发包数量

-h----------指定ttl值

5.2 Tracert(Traceroute)路径追踪程序

原理:由于路由器每接收一个数据包对其进行三层查路由表后、其ttl值就会减-1后在对数据包进行处理,当ttl为0时就会丢包,不在进行查表后转发。tracert在进行跳数检查时,就是结合ttl来实现。

当检查第一跳时,主机便会向目的主机发送报文,并把ttl值置位1,当网络路由器收到报文并进行处理时,由于ttl减-1后为0,就会丢包;此时就会触发标有自身源IP的ICMP错误报告报文,发给源主机,此时源主机根据报文源IP就会得知第一跳路由。当检测第二跳时,ttl值置为2;就这样每检查第几跳时ttl值就为几,直到收到的报文源地址为目的IP,追踪结束。链路故障根据错误报告终止探测。

@声明:“山月润无声”博主知识水平有限,以上文章如有不妥之处,欢迎广大IT爱好者指正,小弟定当虚心受教!

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

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

相关文章

【【萌新的STM32学习-18 中断的基本概念3】】

萌新的STM32学习-18 中断的基本概念3 EXTI和IO映射的关系 AFIO简介(F1) Alternate Function IO 复用功能IO 主要用于重映射和外部中断映射配置 1.调试IO配置 来自AFIO_MAPR[26:24] , 配置JTAG/SWD的开关状态 (这个我们并不用太过深刻的关注&…

腾讯云网站备案详细流程_审核时间说明

腾讯云网站备案流程先填写基础信息、主体信息和网站信息,然后提交备案后等待腾讯云初审,初审通过后进行短信核验,最后等待各省管局审核,前面腾讯云初审时间1到2天左右,最长时间是等待管局审核时间,网站备案…

【易售小程序项目】修改“我的”界面前端实现;查看、重新编辑、下架自己发布的商品【后端基于若依管理系统开发】

文章目录 “我的”界面修改效果界面实现界面整体代码 查看已发布商品界面效果商品数据表后端上架、下架商品ControllerMapper 界面整体代码back方法 编辑商品、商品发布、保存草稿后端商品校验方法Controller 页面整体代码 “我的”界面修改 效果 界面实现 界面的实现使用了一…

DevOps理念:开发与运维的融合

在现代软件开发领域,DevOps 不仅仅是一个流行的词汇,更是一种文化、一种哲学和一种方法论。DevOps 的核心理念是通过开发和运维之间的紧密合作,实现快速交付、高质量和持续创新。本文将深入探讨 DevOps 文化的重要性、原则以及如何在团队中实…

Python入门教程 - 基本语法 (一)

目录 一、注释 二、Python的六种数据类型 三、字符串、数字 控制台输出练习 四、变量及基本运算 五、type()语句查看数据的类型 六、字符串的3种不同定义方式 七、数据类型之间的转换 八、标识符命名规则规范 九、算数运算符 十、赋值运算符 十一、字符串扩展 11.1…

Ubuntu20.04下安装搜狗输入法Linux版

Ubuntu20.04下安装搜狗输入法Linux版 参考搜狗输入法的官网安装指南; 第一步:打开搜狗输入法官网; https://shurufa.sogou.com/ 点击X86_64后将会自动跳转到搜狗输入法的安装指南中; 安装指南 Ubuntu搜狗输入法安装指南 搜狗…

iOS开发Swift-7-得分,问题序号,约束对象,提示框,类方法与静态方法-趣味问答App

1.根据用户回答计算得分 ViewController.swift: import UIKitclass ViewController: UIViewController {var questionIndex 0var score 0IBOutlet weak var questionLabel: UILabel!IBOutlet weak var scoreLabel: UILabel!override func viewDidLoad() {super.viewDidLoad()…

如何停止一个正在运行的线程

使用共享变量的方式 在这种方式中,之所以引入共享变量,是因为该变量可以被多个执行相同任务的线程用来作为是否中断的信号,通知中断线程的执行。 使用interrupt方法终止线程 如果一个线程由于等待某些事件的发生而被阻塞,又该怎样…

Vavido IP核Independent Clocks Block RAM FIFO简述

文章目录 1 FIFO(先入先出)1.1 概念1.2 应用场景1.3 FIFO信号1.4 FIFO读写时序1.4.1 FIFO读时序1.4.2 FIFO写时序 参考 1 FIFO(先入先出) 1.1 概念 FIFO(First in First out)即先入先出队列,是…

2023年高教社杯 国赛数学建模思路 - 案例:最短时间生产计划安排

文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 最短时…

2023应届生java面试紧张失误之一:CAS口误说成开心锁-笑坏面试官

源于:XX网,如果冒犯,表示歉意 面试官:什么是CAS 我:这个简单,开心锁 面试官:WTF? 我:一脸自信,对,就是这个 面试官:哈哈大笑&#xff…

React原理 - React New Component Lifecycle

目录 扩展学习资料 React New Component Lifecycle【新生命周期】 React 组件新生命周期详解 React组件老生命周期 v15.x 为什么Fiber Reconciler要有新的生命周期函数呢? 新的组件生命周期 getDerivedStateFromProps 挂载阶段 更新阶段 卸载阶段 异常捕…

基于grpc从零开始搭建一个准生产分布式应用(6) - 02 - MapStruct数据转换

一、基础转换 1.1、基础类型 基本类型、包装类、BigDecimal转String默认使用DecimalFormat格式化,Mapping#numberFormat可以指定格式,Date转String默认使用SimpleDateFormat格式化,如默认格式不符要求,可以用,Mapping…

53 个 CSS 特效 3(完)

53 个 CSS 特效 3(完) 前两篇地址: 53 个 CSS 特效 153 个 CSS 特效 2 这里是第 33 到 53 个,很多内容都挺重复的,所以这里解释没之前的细,如果漏了一些之前的笔记会补一下,写过的就会跳过。…

Error: PostCSS plugin autoprefixer requires PostCSS 8 问题解决办法

报错:Error: PostCSS plugin autoprefixer requires PostCSS 8 原因:autoprefixer版本过高 解决方案: 降低autoprefixer版本 执行:npm i postcss-loader autoprefixer8.0.0

【配置环境】Visual Studio 配置 OpenCV

目录 一,环境 二,下载和配置 OpenCV 三,创建一个 Visual Studio 项目 四,配置 Visual Studio 项目 五,编写并编译 OpenCV 程序 六,解决CMake编译OpenCV报的错误 一,环境 Windows 11 家庭中…

Super Resolve Dynamic Scene from Continuous Spike Streams论文笔记

摘要 近期,脉冲相机在记录高动态场景中展示了其优越的潜力。不像传统相机将一个曝光时间内的视觉信息进行压缩成像,脉冲相机连续地输出二的脉冲流来记录动态场景,因此拥有极高的时间分辨率。而现有的脉冲相机重建方法主要集中在重建和脉冲相…

C语言入门 Day_12 一维数组0

目录 前言 1.创建一维数组 2.使用一维数组 3.易错点 4.思维导图 前言 存储一个数据的时候我们可以使用变量, 比如这里我们定义一个记录语文考试分数的变量chinese_score,并给它赋值一个浮点数(float)。 float chinese_scoe…

解决WebSocket通信:前端拿不到最后一条数据的问题

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

CTFhub-SSRF-内网访问

CTFHub 环境实例 | 提示信息 http://challenge-8bf41c5c86a8c5f4.sandbox.ctfhub.com:10800/?url_ 根据提示,在url 后门添加 127.0.0.1/flag.php http://challenge-8bf41c5c86a8c5f4.sandbox.ctfhub.com:10800/?url127.0.0.1/flag.php ctfhub{a6bb51530c8f6be0…