简单了解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.mzph.cn/news/65679.shtml

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

相关文章

实力认证!OceanBase获“鼎信杯”优秀技术支撑奖

6 月 30 日,2023 “鼎信杯”信息技术发展论坛在京隆重举办第二届“鼎信杯”大赛颁奖典礼。OceanBase 凭借完全自主研发的原生分布式数据库,以及丰富的核心系统国产数据库升级案例,斩获“优秀技术支撑奖”。 论坛上,国内首个基于在…

ThreeJS 模型中内嵌文字

之前有过模型中内嵌html网页,地址☞threeJS 模型中加载html页面_threejs 加载dom元素_小菜花29的博客-CSDN博客 这次是纯粹的在模型中嵌入文本信息,进行简单的文字展示 展示效果图 1. 使用FontLoader文字加载器 引入文本json文件,代码如下…

数据结构(Java实现)-排序

排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序&#xff…

2022年下半年系统架构设计师真题(下午带答案)

试题一 (25分) 某电子商务公司拟升级其会员与促销管理系统,向用户提供个性化服务,提高用户的粘性。在项目立项之初,公司领导层一致认为本次升级的主要目标是提升会员管理方式的灵活性,由于当前用户规模不大,业务也相对…

数据结构(Java实现)-Map和Set

搜索树 概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值 它的左右子树也…

快速上手GIT命令,现学也能登堂入室

系列文章目录 手把手教你安装Git,萌新迈向专业的必备一步 GIT命令只会抄却不理解?看完原理才能事半功倍! 快速上手GIT命令,现学也能登堂入室 系列文章目录一、GIT HELP1. 命令文档2. 简要说明 二、配置1. 配置列表2. 增删改查3. …

python自动化测试-自动化基本技术原理

1 概述 在之前的文章里面提到过:做自动化的首要本领就是要会 透过现象看本质 ,落实到实际的IT工作中就是 透过界面看数据。 掌握上面的这样的本领可不是容易的事情,必须要有扎实的计算机理论基础,才能看到深层次的本质东西。 …

【C++深入浅出】类和对象上篇(类的基础、类的模型以及this指针)

目录 一. 前言 二. 面向对象与面向过程 2.1 面向过程 2.2 面向对象 三. 类的基础知识 3.1 类的引入 3.2 类的定义 3.3 成员变量的命名规则 3.4 封装 3.5 类的访问限定符 3.6 类的作用域 3.7 类的实例化 四. 类的对象模型 4.1 类对象的大小 4.2 类对象的存储方式 …

从Matrix-ResourceCanary看内存快照生成-ForkAnalyseProcessor(2)

不同于LeakCanary,在Matrix中,主要是通过Resource Canary来监控内存泄漏问题的,且监听的泄漏对象只支持Activity,官方说明如下: 结合分析LeakCanary的经验可知,要实现Activity内存泄漏监听,总体上应该要实现两大功能: Activity生命周期监控查找泄漏对象并得到GC Root P…

【Apollo学习笔记】——规划模块TASK之RULE_BASED_STOP_DECIDER

文章目录 前言RULE_BASED_STOP_DECIDER相关配置RULE_BASED_STOP_DECIDER总体流程StopOnSidePassCheckClearDoneCheckSidePassStopIsPerceptionBlockedIsClearToChangeLaneCheckSidePassStopBuildStopDecisionELSE:涉及到的一些其他函数NormalizeAngleSelfRotate CheckLaneChang…

macOS上制作arm64的jdk17镜像

公司之前一直用的openjdk17的镜像,docker官网可以直接下载,但是最近对接的一个项目,对方用的是jdk17,在对接的时候有加解密异常的问题,为了排查是不是jdk版本的问题,需要制作jdk17的镜像。docker官网上的第…

iOS开发Swift-4-IBAction,group,音乐播放器-木琴App

1.使用素材创建木琴App的UI。 2.连接IBAction。 其余按钮直接拖拽到play里边。 当鼠标置于1处时2处显示如图,表示成功。当用户按下任一按钮都会触发play中的内容。 3.将7个按钮的View中的Tag值分别调为1、2、3、4、5、6、7. 4.将音频文件拖入项目文件中。 Create gr…

Leetcode19 删除链表指定节点

思路:用列表保存链表,然后分情况讨论。 class Solution:def removeNthFromEnd(self, head, n: int):node_list[head]while head.next:headhead.nextnode_list.append(head)remove_loclen(node_list)-n#要移除的位置if len(node_list)1:return Noneif re…

Python小知识 - 一个简单的Python爬虫实例

一个简单的Python爬虫实例 这是一个简单的Python爬虫实例,我们将使用urllib库来下载一个网页并解析它。 首先,我们需要安装urllib库: pip install urllib接下来,我们来看看如何使用urllib库来下载一个网页: import url…

运行命令出现错误 /bin/bash^M: bad interpreter: No such file or directory

在系统上运行一个 Linux 的命令的时候出现下面的错误信息: -bash: ./build.sh: /bin/bash^M: bad interpreter: No such file or directory 这个是在 Windows 作为 WSL 的时候出的错误。 原因和解决 出现问题的原因在于脚本在 Windows 中使用的回车换行和 Linux …

从零开始搭建AI网站(6):如何使用响应式编程

响应式编程(Reactive Programming)是一种编程范式,旨在处理异步数据流和事件流。它通过使用观察者模式和函数式编程的概念,将数据流和事件流抽象为可观察的序列,然后通过操作这些序列来实现各种功能。 在响应式编程中…

Navicat连接数据库报2003错误解决办法

是防火墙还没有开启 查看防火墙管理的端口 设置3306防火墙开启,重载防火墙 连接成功

睿趣科技:抖音开小店大概多久可以做起来

随着移动互联网的快速发展,社交媒体平台成为了人们分享生活、交流信息的主要渠道之一。在众多社交平台中,抖音以其独特的短视频形式和强大的用户粘性受到了广泛关注。近年来,越来越多的人通过在抖音上开设小店来实现创业梦想,这种…

XSS漏洞及分析

目录 1.什么是xss漏洞 1)存储型XSS漏洞 2)反射型XSS漏洞 3)DOM型XSS漏洞 2.什么是domcobble破环 3.案例一 1)例题链接 2)代码展示 3)例题分析 4.案例二 1)例题链接 2)代…

【ArcGIS Pro二次开发】(65):进出平衡SHP转TXT、TXT转SHP

最近一个小伙伴提了这么一个需求,需要把TXT和SHP进行互转。 这种TXT文件其实遇到了好几个版本,都有一点小差异。之前已经做过一个TXT转SHP的工具,但好像不适用。于是针对这个版本,做了互转的2个工具。 【SHP转TXT】 一、要实现的…