ICMP的使用

article/2025/9/16 17:56:22

        大家好呀,我是请假君,今天又来和大家一起学习数通了,今天要分享的知识是ICMP。

       

         RFC792定义的ICMP ( Internet Control Message Protocol,互联网控制消息协议)是一个网络层协议,基于IP运行。ICMP定义了错误报告和其它回送给源点的关于IP数据包处理情况的消息,可以用于报告IP数据包传递过程中发生的错误、失败等信息,提供网络诊断等功能。

        ICMP通常为IP层或者更高层协议使用。其中 ping是一个最常见的应用,主机可通过它来测试网络的可达性。用户运行ping命令时,主机向目的主机发送ICMPEcho Request消息。Echo Request消息封装在IP包内,其目的地址为目的主机的IP地址。目的主机收到EchoRequest消息后,向源主机回送一个ICMP Echo Reply消息。源主机如果收到Echo Reply消息,即可获知该目的主机是可达的。假定某个中间路由器没有到达目的网络的路由,便会向源主机端返回一条ICMP Destination Unreachable 消息,告知源主机目的不可达。

        ICMP消息可分为两种类型,即 ICMP差错消息和ICMP查询消息。对于ICMP差错消息要作特殊处理,例如,在对 ICMP差错消息进行响应时,永远不会生成另一份ICMP差错消息。(如果没有这个限制规则,可能会遇到一个差错产生另一个差错的情况,而差错再产生差错,这样会无休止地循环下去)。

常用ICMP消息的含义如下:

        1.目的不可达(Destination Unreachable):目的主机可能不存在或已关机,可能发送者提供的源路由要求无法实现,或设定了不分段的包太大而不能封装于帧中。在这些情况下,路由器检测出错误,并向源发送者发送一个ICMP Destination Unreachable消息。它包含了不能到达目的地的数据包的完整IP头,以及其载荷数据的前64比特,这样发送者就能知道哪个包无法投递。

        2.回波请求(Echo Request>:是由主机或路由器向一个特定的目的主机发出的询问。这种询问消息用来测试目的站是否可达。

        3.回波响应(Echo Reply):对回波请求作出响应时发送。收到Echo Request的主机对源主机发送ICMP Echo Reply消息作为响应。

        4.参数问题(Parameter Problem):假设一个IP包的头中产生错误或非法值,路由器发现问题后向源发送一个Parameter Problem消息。这个消息包含了有问题的IP头和一个指向出错字段的指针。

        5.重定向(Redirect):假设主机向路由器发送了一个包,而此路由器知道其他一些路由器能将分组更快地投递,为了方便以后路由,此路由器向主机发送一个Redirect消息。它通知主机其他路由器的位置,以及今后应当将具有相同目的地址的包发向那里。这就允许主机动态地更新它的路由表,更好地适应网络条件的变化。

        6.源抑制(Source Quench);当某个速率较高的源主机向另一个速率较慢的目的主机(或路由器)发送一连串的数据包时,就有可能使速率较慢的目的主机产生拥塞,因而不得不丢弃一些数据包。源主机通过高层协议得知丢失了一些数据包,就会不断地重发这些数据包,这就使得原本已经拥塞的目的主机更加拥塞。在这种情况下,目的主机就要向源主机发送ICMP Source Quench 消息,使源站暂停发送。

        7.超时〈Time Exceeded):当IP包中的TTL字段减到0或分片重组定时器到期时,此包或任何未重组的分片将从网络中被删除。删除分组的路由器接着向源发送一个Time Exceeded消息,说明分组未被投递。

        8.时间戳请求和时间戳应答(Timestamp Request and Timestamp Reply):时间戳分组使主机能估计它到另一个主机一次往返通信所需的时间。源主机创建并发送一个含有发送时刻(源时间戳)的Timestamp Request消息,目的主机收到分组后创建一个含有原时间戳和目的主机接收时间戳以及目的主机传输时间戳的Timestamp Reply消息。当源主机收到Timestamp Reply时,它同时记录分组的到达时刻。这些时间戳使主机能够估计网络的IP包投送效率。

         好的,那么今天的分享就到这里,有疑问的欢迎来评论区讨论,我们下次将讲解TCP和UDP的基本原理,再见。

        


http://chatgpt.dhexx.cn/article/WggjhUls.shtml

相关文章

ICMP详解

ICMP简介 ICMP的全称是Internet Control Message Protocol。也就是网络控制报文协议。 ICMP是一个网络层协议。用来检测IP报文是否能够正常发送,以及出错原因,以及查询主机的信息。 也就是差错查询和信息查询。 我们经常使用的ping工具就是利用ICMP实…

JMeter官网文档

JMeter官网文档API 步骤: 解压下载的安装包进入\apache-jmeter-5.4.1\docs\api目录打开index.html网页显示内容如下:

如何使用Jmeter,看完这本指南你就知道了

序言 由于公司在来年需要进行压力测试,所以也就借节假日的机会来学习一下压力测试的步骤,由于本人的学习时间比较短,希望各位大神朋友们能够多多的谅解并指正在下的错误,在此仅表敬意 适应人群 1、初入门的压力测试工程师 2、…

01-下载安装jmeter

1、前期准备: 下载配置好jdk:下载地址,点击下载 配置教程参考: 2、jmeter下载地址: 1、下载jmeter地址,点击进入官网下载 2、进入官网,会看到两种下载资源 binaries是可执行版本,直接下载解…

【jmeter】

目录 环境配置安装Java环境安装jmeter安装python环境数据库配置 线程组HTTPHTTP请求默认值HTTP信息头管理器 参数化用户定义的变量csv数据文件设置用户参数函数计数器函数随机数函数时间函数 直连数据库断言响应断言大小断言:判断字符串内容的长度。断言持续时间 逻…

1-1 JMeter官网了解

作为测试小白的我,在微信知识星球,参加了一个为期1年的21天打卡的,关于测试方方面面知识的星球。 听同事说JMeter似乎很强大,接口测试、自动化测试、性能测试都可以搞? 所以选择从JMeter开始,因为自己最近也…

JMeter下载及安装配置教程

参考:入门部署教程 – Jmeter中文网 本文是在win10环境下安装使用jmeter,jmeter可以运行在多平台上Windows和Linux。 环境准备: java 8 jmeter 5.1.1 jmeter环境 jmeter环境依赖JAVA环境,需安装JDK1.8环境,JDK下载地…

Jmeter下载与安装

Jmeter与JDK下载与安装 1、进入jmeter官网,下载地址:https://jmeter.apache.org/ 第一步,点击Download Releases 第二步, 点击apache-jmeter-5.1.1.zip sha512 pgp,下载完后解压 2、下载并安装JDK,下载地址:https://www.oracle.com/technetwork/java/javase/downloads…

jmeter(一)基础介绍

参考书籍:段念《软件性能测试与案例剖析》——第二版 推荐一本书《零成本实现web性能测试——基于Apache—jmeter》,主要内容是一些关于jmeter的实战使用,想学习的可以去看看。。。 jmeter是一款优秀的开源性能测试工具,目前最新版…

Kotlin带有接收者的函数类型(block: T.() -> Unit)

前言 Kotlin标准库的 Standard.kt 包含几个函数,其唯一目的是在对象上下文内执行代码块。 当我们在提供了lambda表达式的对象上调用此类函数时,它将形成一个临时作用域。在此作用域中,我们可以访问没有其名称的对象,这些功能称为…

mysql之类型转换函数

类型转换函数 类型转换函数和case函数 1.隐式类型转换和显式类型转换的概念 隐式类型装换: 两个值进行运算或者比较,首先要求数据类型必须一致。如果发现两个数据类型不一致时就会发生隐式类型转换。例如,把字符串转成数字,或者相反: SELECT 1+‘1’; – 字符串1转成数字 …

C语言入门---函数类型与返回值(int和void)

int和void的区别? 哈喽,各位小伙伴们,在我们学习C语言的过程中经常会看到书中的main函数前带有int和void,就像下面这样: 上面这两种有什么区别呢?在C语言中,可以把函数分为有返回值函数和无返…

Typescript总结(三)——函数类型详解

本篇博客主要总结一下在Typescript中的函数写法,以及函数类型的总结。 一、Typescript的函数类型 如果在一个函数中,需要传入一个函数作为参数,可以如下所示,进行声明定义。 我们也可以通过type来定义函数类型 如上述代码所示…

c语言函数返回值类型必须,C++中函数类型与定义的函数返回值类型必须相同么?...

C++中函数类型与定义的函数返回值类型必须相同么?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C++中函数类型与定义的函数返回值类型必须相同么? 1.可以。只要返回值、参数列表的参数个数、类型、顺序中的一…

C语言 函数类型

1. 在 [不完全类型] 一文中,描述了C中的3大数据类型,即: 函数类型、对象类型和不完全类型, 这里再次引用这张图来进行“函数类型”的讲解。 可以看到,函数类型是对立于其他的类型的,它不像“对象类型和不完全类型”,可以延伸(或是派生)出其他对象,或是包含一子系列…

函数高级

函数: 1、引用传递 2、可变参数、命名参数、万能参数 3、匿名函数(lambda) 4、闭包(有点难) 5、递归 6、偏函数 7、函数作为参数传递 8、函数调用全局变量 9、全局变量和局部变量 装饰器(函数的深层次使用…

68 4种函数类型

文章目录 1、无参数,无返回值的函数2、无参数,有返回值的函数3、有参数,无返回值的函数4、有参数,有返回值的函数5、小结 函数根据有没有参数,有没有返回值,可以相互组合,一共有4种 无参数&…

C语言函数之—函数的分类

目录 1. 函数是什么? 2. C语言中的函数分类 2.1 库函数 2.1.1 为什么会有库函数? 2.1.2 那怎么来学习库函数呢? IO函数—getchar() , putchar() 字符串操作函数—strcmp() , strlen() rand函数,srand函数 和time函数 2.1.3 如何学会…

torch.optim.Adam() 函数用法

Adam: A method for stochastic optimization Adam是通过梯度的一阶矩和二阶矩自适应的控制每个参数的学习率的大小。 adam的初始化 def __init__(self, params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8,weight_decay=0, amsgrad=False): Args:params (iterable): iterable o…

pytorch ——torch.optim.Adam

class torch.optim.Adam(params, lr0.001, betas(0.9, 0.999), eps1e-08, weight_decay0)它在Adam: A Method for Stochastic Optimization中被提出。(https://arxiv.org/abs/1412.6980) 参数: params (iterable) – 待优化参数的iterable或者是定义了参数组的dict…