ICMP详解

3 ICMP

ICMP(Internet Control Message Protocol,因特网控制报文协议)是一个差错报告机制,是TCP/IP协议簇中的一个重要子协议,通常被IP层或更高层协议(TCP或UDP)使用,属于网络层协议,主要用于在IP主机和路由器之间传递控制消息,用于报告主机是否可达、路由是否可用等。这些控制消息虽然并不传输用户数据,但是对于收集各种网络信息、诊断和排除各种网络故障以及用户数据的传递具有至关重要的作用。

2.3.1 ICMP报文

     ICMP报文格式如图2-7所示,每一个ICMP消息都将包含引发这条ICMP消息的数据包的完全IP包头,ICMP报文则作为IP数据包的数据部分封装在IP数据包内部。ICMP包头中包含的三个固定字段就是源端设备确定发生错误的类型的主要依据。

图2-7 ICMP报文格式

ICMP字段解析如下:

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

不同的Type和Code值表示不同的ICMP报文类型,对应了数据包处理过程中可能出现的不同错误情况,常见的报文分类如图2-8所示

     图2-8  常见的ICMP报文

在文章最后加作者VX:可以免费领取以下资料

2.3.2 ICMP重定向

     ICMP 重定向消息用于支持路由功能。如图2-9所示,主机A希望发送报文到服务器A,于是根据配置的默认网关地址向网关RB发送报文。网关RB收到报文后,检查报文信息,发现报文应该转发到与源主机在同一网段的另一个网关设备RA,因为此转发路径不是最优的路径,所以RB会向主机A发送一个Redirect消息,通知主机直接向另一个网关RA发送该报文。主机A收到Redirect消息后,会向RA发送报文,然后RA会将该报文再转发给服务器A。

图2-9 ICMP重定向

2.3.3 ICMP应用-Ping

     Ping是检测网络连通性的常用工具。用户可以在Ping命令中指定不同参数,如ICMP报文长度、发送的ICMP报文个数、等待回复响应的超时时间等,设备根据配置的参数来构造并发送ICMP报文,进行Ping测试。

Ping常用的配置参数说明如下:

  • -a 指定发送ICMP ECHO-REQUEST报文的源IP地址。如果不指定源IP地址,将采用出接口的IP地址作为ICMP ECHO-REQUEST报文发送的源地址。
  • -c 指定发送ICMP ECHO-REQUEST报文次数。缺省情况下发送5个ICMP ECHO-REQUEST报文。
  • -h指定TTL的值。缺省值是255。
  • -t 指定发送完ICMP ECHO-REQUEST后,等待ICMP ECHO-REPLY的超时时间。

Ping命令的输出信息中包括目的地址、ICMP报文长度、序号、TTL值以及往返时间。其中序号是包含在Echo回复消息(Type=0)中的可变参数字段,TTL和往返时间包含在消息的IP头中。下面是PING一段输出举例

[RTA]ping 10.0.0.2

  PING 10.0.0.2 : 56  data bytes, press CTRL_C to break

    Reply from 10.0.0.2 : bytes=56 Sequence=1 ttl=255 time=340 ms

    Reply from 10.0.0.2 : bytes=56 Sequence=2 ttl=255 time=10 ms

    Reply from 10.0.0.2 : bytes=56 Sequence=3 ttl=255 time=30 ms

    Reply from 10.0.0.2 : bytes=56 Sequence=4 ttl=255 time=30 ms

    Reply from 10.0.0.2 : bytes=56 Sequence=5 ttl=255 time=30 ms

  --- 10.0.0.2 ping statistics ---

    5 packet(s) transmitted

    5 packet(s) received

    0.00% packet loss

    round-trip min/avg/max = 10/88/340 ms

在文章最后加作者VX:可以免费领取以下资料

2.3.4 ICMP应用——Tracert

     Tracert基于报文头中的TTL值来逐跳跟踪报文的转发路径。为了跟踪到达某特定目的地址的路径,源端首先将报文的TTL值设置为1。该报文到达第一个节点后,TTL超时,于是该节点向源端发送TTL超时消息,消息中携带时间戳。然后源端将报文的TTL值设置为2,报文到达第二个节点后超时,该节点同样返回TTL超时消息,以此类推,直到报文到达目的地。这样,源端根据返回的报文中的信息可以跟踪到报文经过的每一个节点,并根据时间戳信息计算往返时间。Tracert是检测网络丢包及时延的有效手段,同时可以帮助管理员发现网络中的路由环路。

     Tracert常用的配置参数说明如下:

  • -a source-ip-address指定tracert报文的源地址。
  • -f first-ttl指定初始TTL。缺省值是1。
  • -m max-ttl指定最大TTL。缺省值是30。
  • -name使能显示每一跳的主机名。
  • -p port指定目的主机的UDP端口号。
  • 本文出自作者的《HCIA Datacom学习指南》
    https://item.jd.com/14032255.html

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

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

相关文章

python验证输入的IP地址是否正确

目录 一.前言 二.代码 三.代码分析 一.前言 IP是一组规则,它定义了计算机网络中的设备如何通信。它是一套协议,规定了如何将数据包从一台设备发送到另一台设备。 二.代码 cause = True # 设置判断网址是否正确的标志变量为真 ip …

Uniapp好看登录注册页面

个人介绍 hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的…

VUE2从入门到精通(二)

118、ref引用 【1】JQuery里面的$("#app")。vue mv vm 【2】在vue中,程序员不需要操作dom。程序员只需要维护好数据即可(数据驱动视图)。所以在vue下,强烈不建议使用jquery!!! 【3】假…

(汇总)vue中在不同页面之间-4种传递参数的方式

Vue项目页面间传递参数和参数存储有很多种,常见的: (参考链接:www.qinglite.cn/doc/4603647… url里加参数,比如:/find?idxxx,或/find/xxx,适合少量数据,优点是刷新页面…

大历史下的 tcp:恼人的 timewait

tcp timewait 是个恼人的状态,它的恶心自两类恶心的询问,oncall 和面试。大概诸如 “如何减少 timewait socket 数量”,“tw_reuse 和 tw_recycle …”,如果只为应用,用 reset 关连接就够了。 timewait 状态的根本目的…

4G+北斗太阳能定位终端:一键报警+倾覆报警 双重保障船舶安全

海上作业环境复杂多变,海上航行充满了各种不确定性和风险,安全事故时有发生,因此海上安全与应急响应一直是渔业和海运行业关注的重点。为了提高海上安全保障水平,4G北斗太阳能定位终端应运而生,它集成了一键报警和倾覆…

Edge浏览器新特性深度解析,写作ai免费软件

首先,这篇文章是基于笔尖AI写作进行文章创作的,喜欢的宝子,也可以去体验下,解放双手,上班直接摸鱼~ 按照惯例,先介绍下这款笔尖AI写作,宝子也可以直接下滑跳过看正文~ 笔尖Ai写作:…

Spring MVC系列之异步请求

概述 Spring MVC的本质其实就是一个Servlet。在理解Spring MVC如何支持异步请求之前,需要先知道Servlet3异步如何支持异步请求。参考Servlet系列之Servlet3异步。 Spring MVC对异步请求的支持主要从三个类来看: AsyncWebRequest:requestWe…

【数据结构】:链表的带环问题

🎁个人主页:我们的五年 🔍系列专栏:数据结构 🌷追光的人,终会万丈光芒 前言: 链表的带环问题在链表中是一类比较难的问题,它对我们的思维有一个比较高的要求,但是这一类…

AI大模型探索之路-训练篇10:大语言模型Transformer库-Tokenizer组件实践

系列篇章💥 AI大模型探索之路-训练篇1:大语言模型微调基础认知 AI大模型探索之路-训练篇2:大语言模型预训练基础认知 AI大模型探索之路-训练篇3:大语言模型全景解读 AI大模型探索之路-训练篇4:大语言模型训练数据集概…

DS:顺序表、单链表的相关OJ题训练

欢迎各位来到 Harper.Lee 的学习小世界! 博主主页传送门:Harper.Lee的博客主页 想要一起进步的uu可以来后台找我交流哦! 在DS:单链表的实现 和 DS:顺序表的实现这两篇文章中,我详细介绍了顺序表和单链表的…

使用LinkAI创建AI智能体,并快速接入到微信/企微/公众号/钉钉/飞书

​ LinkAI 作为企业级一站式AI Agent 智能体搭建与接入平台,不仅为用户和客户提供能够快速搭建具备行业知识和个性化设定的 AI 智能体的能力;还基于企业级场景提供丰富的应用接入能力,让智能体不再是“玩具”,而是真正能够落地应用…

C/C++ 字符串与时间戳互相转换

//时间戳转string 1713175204 2024-04-15 18:00:04struct tm *ttime;time_t flag_time time(NULL);ttime localtime(&flag_time);char time_str[100];cout << flag_time <<endl;cout << mktime(ttime) <<endl;sprintf(time_str,"%04d-%02…

PHP的数组练习实验

实 验 目 的 掌握索引和关联数组&#xff0c;以及下标和元素概念&#xff1b; 掌握数组创建、初始化&#xff0c;以及元素添加、删除、修改操作&#xff1b; 掌握foreach作用、语法、执行过程和使用&#xff1b; 能应用数组输出表格和数据。 任务1&#xff1a;使用一维索引数…

uniapp0基础编写安卓原生插件和调用第三方jar包和编写语音播报插件之使用jar包插件

前言 如果你不会编写安卓插件,你可以先看看我之前零基础的文章(uniapp0基础编写安卓原生插件和调用第三方jar包和编写语音播报插件之零基础编写安卓插件), 我们使用第三方包,jar包编写安卓插件 开始 把依赖包,放到某个模块的/libs目录(myTestPlug/libs) 还要到build…

R语言的学习—5—多元数据直观表示

1、数据读取 ## 数据整理 d3.1read.xlsx(adstats.xlsx,d3.1,rowNamesT);d3.1 #读取adstats.xlsx表格d3.1数据 barplot(apply(d3.1,1,mean)) #按行做均值条形图 barplot(apply(d3.1,1,mean),las3) barplot(apply(d3.1,2,mean)) #按列做均值图条形图 barplot(a…

表名不是固定的,django和flask怎样增改删查这个数据表?

在Django和Flask中&#xff0c;操作数据表通常涉及使用ORM&#xff08;对象关系映射&#xff09;或者原生的SQL查询。然而&#xff0c;你提到的sea()函数返回的表名是一个动态生成的字符串&#xff0c;这增加了复杂性&#xff0c;因为ORM通常期望表名是固定的。在这种情况下&am…

C语言数据结构 ---- 单链表实现通讯录

今日备忘录: "折磨我们的往往是想象, 而不是现实." 目录 1. 前言2. 通讯录的功能3. 通讯录的实现思路5. 效果展示6. 完整代码7. 总结 正文开始 1. 前言 顺表实现通讯录: 点击~ 顺序表实现通讯录 在日常生活中&#xff0c;我们经常需要记录和管理大量的联系人信息&…

YOLOv8 是一个相对较新的目标检测算法

YOLOv8 是一个相对较新的目标检测算法&#xff0c;它尚未有官方的代码发布时&#xff08;截至当前知识截止日期&#xff09;&#xff0c;但基于 YOLO 系列的演进和常见的注意力机制&#xff08;如 SE&#xff08;Squeeze-and-Excitation&#xff09;注意力&#xff09;&#xf…

【研发管理】产品经理知识体系-组合管理

导读&#xff1a;新产品开发的组合管理是一个重要的过程&#xff0c;它涉及到对一系列新产品开发项目进行策略性选择、优先级排序、资源分配和监控。这个过程旨在确保企业能够最大化地利用有限的资源&#xff0c;以实现其战略目标。 目录 1、组合管理、五大目标 2、组合管理的…