关于ICMP简介

article/2025/9/16 16:40:27

ICMP

  • 简介
    ICMP是(Internet Control Message Protocol)Internet控制报文协议。
    ICMP协议是一种面向无连接的协议,它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。ICMP是一个网络层协议。

ICMP协议的功能主要有:

  1. 确认IP包是否成功到达目标地址
  2. 通知在发送过程中IP包被丢弃的原因

注意:

  1. ICMP是基于IP协议工作的,但是它并不是传输层的功能,因此仍然把它归结为网络层协议
  2. ICMP只能搭配IPv4使用,如果是IPv6的情况下, 需要是用ICMPv6

ICMP报文

ICMP报文格式和各个字段的含义
ICMP报文的格式如下:

ICMP协议封装在ip协议中,ICMP有很多报文类型,每一个报文类型又各自不相同,所以无法找到一个统一的报文格式来进行说明,但是他们的前四个字节的报文格式是相同的。
如图所示:
1.校验和:占两个字节,是对整个报文的报文信息的校验。
2.类型:占一个字节:用来表示ICMP的消息类型。
3.代码:占一个字节:用来对类型的进一步说明。

ICMP数据包类型
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

报告IP数据报在传输中的差错是ICMP报文最基本的功能,ICMP差错报文有如下特点:
(1) ICMP差错报文都是由路由器发送到源主机的,因为IP数据报中含有源主机的IP地址,报告给源主机是最可行的方案,另外,发出IP数据报的源主机最需要知道数据是否到达目标主机。
(2) ICMP差错报文只提供IP数据报在传输过程中的差错报告,并不规定对各类差错应采取什么样的处理措施。具体对差错的处理,由收到ICMP差错报文的源主机将相应的差错与应用程序联系起来才能进行相应的差错处理。
(3) ICMP差错报文不享受任何优先权,也没有特别的可靠性保证措施,与普通的IP数据报一样进行传输,传输过程中可能被丢失、损坏,甚至被抛弃。
(4) ICMP差错报文是伴随着抛弃出错的IP数据报而产生的。
(5) 当路由器发送一份参数错误等的ICMP差错报文时,ICMP报文数据区始终包含产生ICMP差错报文的IP数据报的头部和其数据区的前8个字节(64位)。

ICMP控制报文
1.拥塞控制与源站抑制报文
当一个路由器接收IP数据报的速度比其处理IP数据报的速度快,或一个路由器传入数据报的速率大于传出数据报的速率时,就会产生拥塞(Congestion)现象。
  这时路由器可以通过发送源站抑制(Source Quench)报文来抑制源主机发送IP数据报的速率,避免可能产生的差错。
源站抑制报文的类型字段为4,代码字段只能为0。源站抑制技术进行拥塞控制的方法如下:
(1) 当路由器发生拥塞时,便发出ICMP源站抑制报文。拥塞的判别可以用三种方法:一是检查路由器缓存区是否已满;二是给缓存区输出队列设置一个阈值,判断队列中数据报的个数是否超过阈值;三是检测某输入线路的传输率是否过高。
(2) 源主机收到抑制报文后,按一定的速率降低发往目标主机的数据报传输率。
(3) 如果在一定的时间间隔内源主机没有收到抑制报文,便认为拥塞已解除,源主机可以逐渐恢复到原来数据报的流量。
2. 路由控制与重定向报文
假如源主机要向目标主机发送IP数据报,源主机的默认路由是路由器1,则源主机先把IP数据报送到路由器1,再由路由器1进行路由选择。路由器1经过选路后,把IP数据报送到路由器2。
  同时路由器1也发现源主机要发送到目标主机的IP数据报以后可以直接发送到路由器2(因为路由器1和路由器2同在一个网络中),则路由器1向源主机发送一个ICMP重定向报文,告诉它可以直接把IP数据报送到路由器2。这样,就使源主机始终保持着一个动态的、既小且优的路径表。


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

相关文章

认识ICMP协议 —— ping命令的作用过程

目录 一、为什么需要ICMP协议? 二、ICMP协议的报文格式 三、ICMP协议的作用过程(ping命令的作用过程) 1、通过DNS解析域名 2、封装各个协议的报头 3、发送包 四、ping命令的坑 ICMP协议是一个网络层协议,但在IP协议之上&am…

ICMP详解和实例分析

ICMP是网际报文控制协议,它是一个对IP协议的补充协议。允许主机或路由器报告差错情况和异常状况。 一、ICMP报文格式和各个字段的含义 ICMP报文的格式如下: ICMP协议封装在ip协议中,ICMP有很多报文类型,每一个报文类型又各自不相…

ICMP

网际控制报文协议 ICMP : 为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP (InternetControl Message Protocol)。 ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP 不是高层协议,而是 IP 层的协议。ICMP 报文作为 IP 层…

ping的整个流程详解(icmp)

原文:ping好几年 ?今天终于把 ping 的原理搞懂了,打算图解教你!_小林coding-CSDN博客 原文的大佬一整个系列都写的非常优秀,转载只为了个人记录 文章目录 前言正文IP协议的助手 —— ICMP 协议查询报文类型差错报文类…

icmp 报文详解

以下内容转载自: http://blog.csdn.net/tigerjibo/article/details/7356936 写的很好的 icmp 报文详解: 一.概述: 1. ICMP允许主机或路由报告差错情况和提供有关异常情况。ICMP是因特网的标准协议,但ICMP不是高层协议&#xff…

icmp超详细讲解

最近被CISSP题目中各种攻击搞得晕晕的,找到一个详细的介绍ICMP的,写的真的很好。。。 目录 1.ICMP出现的原因 2.ICMP的用途 3.ICMP作为IP的上层协议在工作 4.ICMP实现之MTU探索 5.ICMP实现之改变路由 6.ICMP实现之源点抑制 7.ICMP实现之ping命令 …

常见的使用ICMP协议的命令

本文将介绍几种使用ICMP协议的命令,这些命令在网络测试和排错都有重要的作用。 1、ping命令 ping命令是检查网络是否畅通的常用命令,使用 ping 主机ip 后返回的数据包如图: 我们输入ping www.baidu.com,电脑会自动向DNS服务器查…

ICMP的使用

大家好呀,我是请假君,今天又来和大家一起学习数通了,今天要分享的知识是ICMP。 RFC792定义的ICMP ( Internet Control Message Protocol,互联网控制消息协议)是一个网络层协议,基于IP运行。ICMP定义了错误报告和其它回…

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语言中,可以把函数分为有返回值函数和无返…