网络层:网际控制报文协议ICMP

news/2024/7/7 5:48:23 标签: 网际控制报文协议, ICMP, ping, tracert

ICMP_0">网络层:网际控制报文协议ICMP

笔记来源:
湖科大教书匠:网际控制报文协议ICMP

声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考

主机或路由器使用ICMP来发送差错报告报文询问报文
ICMP报文被封装在IP数据报中发送

ICMP_9">1.1 ICMP差错报告报文

ICMP差错报告报文有五种类型

1.1.1 终点不可达

当路由器或主机不能交付数据报时,就向源点发送终点不可达报文(通俗理解:发不过去别发了)

1.1.2 源点抑制

当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢(通俗理解:这有点挤慢点发)

1.1.3 时间超过

当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL字段的值减1。
情况一:IP数据报在路由器中发生的时间超过
IP数据报 -> 路由器(IP数据报目的地址不是自己,TTL-1)
T T L ≠ 0 TTL\neq0 TTL=0,则将该IP数据报转发出去;
T T L = 0 TTL=0 TTL=0,丢弃该IP数据报,还要向源点发送时间超过报文。
(通俗理解:我(IP数据报)的寿命到了,现通知你(源点))

情况二:IP数据报在终点主机中发生的时间超过
当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过报文。
(通俗理解:超过规定时间了,我(终点主机)你的数据还没都发过来,我都丢了,现通知你(源点))

1.1.4 参数问题

当路由器或目的主机收到IP数据报后,根据其首部中的检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文。
(通俗理解:你这数据传错了吧,我(终点/路由器)把这些数据丢了,现通知你(源点))

1.1.5 改变路由(重定向)

路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)
(通俗理解:路由要改变啦,现通知你(源点))

ICMP_42">1.2 ICMP询问报文

ICMP询问报文有两种类型

1.2.1 回送请求和回答

ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。
(主机/路由器 -> 询问 -> 目的主机)
收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。
(源主机/路由器 <- 回答报文 <- 目的主机)

功能:这种询问报文用来测试目的站是否可达及了解其有关状态。

1.2.2 时间戳请求和回答

ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间。
ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒

功能:这种询问报文用来进行时钟同步和测量时间。

ICMP_57">1.3 ICMP应用

ping_58">1.3.1 分组网间探测(Packet InterNet Groper,ping

用来测试主机或路由器间的连通性
应用层直接使用网际层的ICMP(没有通过运输层的TCP或UDP)
使用ICMP回送请求和回答报文

1.3.2 跟踪路由(Traceroute)

用来测试IP数据报从源主机到达目的主机要经过哪些路由器
Window版本:tracert命令
应用层直接使用网际层ICMP
使用了ICMP回送请求和回答报文以及差错报告报文

Unix版本:traceroute命令
在运输层使用UDP协议
仅使用ICMP差错报告报文


如何知道经过哪些路由器?
源主机将IP数据报的 T T L TTL TTL的值设置为1,源主机发送封装有ICMP回送请求的第一个数据报
T T L = 0 TTL=0 TTL=0 时路由器会给源点发送ICMP超时报文,这时源点就知道刚刚IP数据报经过了这个发送超时报文的路由器


源主机将IP数据报的 T T L TTL TTL的值设置为2,源主机发送封装有ICMP回送请求的第二个数据报


数据报经过第一个路由器后 T T L = 1 TTL=1 TTL=1

数据报到达第二个路由器时 T T L = 0 TTL=0 TTL=0
T T L = 0 TTL=0 TTL=0 时路由器会给源点发送ICMP超时报文,这时源点就知道刚刚的这个IP数据报经过了这个发送超时报文的路由器

源主机将IP数据报的 T T L TTL TTL的值设置为3,源主机发送封装有ICMP回送请求的第三个数据报,剩下的情况如上类似

每次发送一个封装有ICMP回送请求的IP数据报,每次发送时更改TTL的值
第一次:发送封装有ICMP回送请求的第一个IP数据报,TTL=1,收到报文时就知道经过的第一个经过的路由器
第二次:再发送封装有ICMP回送请求的第二个IP数据报,TTL=2,收到报文时就知道经过的第二个经过的路由器,依次类推


http://www.niftyadmin.cn/n/446327.html

相关文章

vue3中ref和reactive的区别

在Vue 3中&#xff0c;reactive和ref都用于创建一个响应式数据对象。二者的主要区别在于&#xff0c;reactive可以将整个对象设置为响应式&#xff0c;而ref则只能将单个基本类型的变量转换为响应式数据。 下面是一个简单的示例代码&#xff0c;来对比二者之间的区别。 impor…

023.【回溯算法】

1. 回溯算法 回溯算法也叫试探法&#xff0c;它是一种系统地搜索问题而求解的方法。回溯算法可以找出所有解的一般性&#xff0c;同时可以避免不正确的数值。一旦发现不正确的数值&#xff0c;就不再继续下一层而是返回到上一层&#xff0c;以节省时间。简单来说&#xff0c;回…

2023 年最适用于工业物联网领域的三款开源 MQTT Broker

MQTT 最初作为一种轻量级的发布/订阅消息传递协议而设计&#xff0c;如今已经成为工业物联网&#xff08;IIoT&#xff09;和工业 4.0 发展的重要基础。它的意义在于实现了各类工业设备与云端的无缝连接&#xff0c;促进了运营技术&#xff08;OT&#xff09;和信息技术&#x…

耗时半个月,终于把十几个大厂的python面试题整理成了PDF合集(基础+高级+web+数据库+爬虫)

大家好&#xff0c;最近有不少小伙伴在后台留言&#xff0c;近期的面试越来越难了&#xff0c;要背的越来越多了&#xff0c;考察得越来越细&#xff0c;明摆着就是想让我们徒手造航母嘛&#xff01;实在是太为难我们这些程序员了。 这不&#xff0c;为了帮大家节约时间&#…

第二章 逻辑代数基础--数电(期末复习笔记)

第二章 逻辑代数基础 2.1 概述 逻辑&#xff1a;事物间的因果关系。 逻辑运算&#xff1a;逻辑状态按照指定的某种因果关系进行推理的过程。 逻辑变量&#xff1a;用字母表示&#xff0c;取值只有0和1。此时&#xff0c;0和1不再表示数量的大小&#xff0c;只代表两种不同的状…

Java-三种基本控制结构及相关面试题

文章目录 前言一、 顺序控制结构1.1 概念1.2 代码1.3 NS图中体现 二、分支控制结构2.1 概念2.2 if语句2.3 switch语句2.4 NS图中的体现 三、循环控制结构3.1 概念3.2 for循环3.3 while循环3.4 do-while循环3.5 增强 for 循环NS图中的体现 四、相关面试题什么是控制流语句&#…

软考A计划-网络工程师-专业英语

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

Vue3的 Custom Block是什么?

Vue3的 Custom Block 是一个很酷的东西&#xff0c;它能够让你在Vue中创建自定义的HTML标记&#xff0c;就像这样&#xff1a; <template> <custom-block> <p>这是自定义块的内容</p> </custom-block> </template> <script> …