TCP/IP协议(8): ICMP(Internet Control Message Protocol) 协议 ——诊断和控制 IP 协议层

关于网际控制报文协议(Internet Control Message Protocol, ICMP)

网际控制报文协议(Internet Control Message Protocol, ICMP) 是定义在 RFC 792 中的因特网协议套件的一部分。ICMP 报文通常用于诊断或控制目的,它也可以用于响应 IP 操作中的错误(定义于 RFC 1122)。
(ICMP is part of the Internet protocol suite as defined in RFC 792. ICMP messages are typically used for diagnostic or control purposes or generated in response to errors in IP operations (as specified in RFC 1122). )

ICMP 协议介于传输层网络层之间。不能说它是网络层协议,是因为它依赖于所有的 IP 协议实现,ICMP 报文在传输过程中,又很可能被传输层解析处理。

尽管如此,我们通常仍然认为 ICMP 协议网络层协议。维基百科对此有如下解释:

ICMP 协议使用了 IP 协议的基本支持,以至于它好像是更高层的协议。然而, ICMP 协议实际上是 IP 协议的一个组成部分。尽管 ICMP 报文被封装在标准 IP 协议包中,但与一般的 IP 包处理不同,ICMP 报文通常作为特殊情况处理。
(ICMP uses the basic support of IP as if it were a higher level protocol, however, ICMP is actually an integral part of IP. Although ICMP messages are contained within standard IP packets, ICMP messages are usually processed as a special case, distinguished from normal IP processing. )

ICMP 报文

  • 类型(Type): 1 字节。 定义该 ICMP 报文的类型。常用的类型值如下:

    类型值 正式名称 注释
    0 回显应答 ping 的应答
    3 目的不可达 不可达的主机/协议
    5 重定向 表示应该被使用的可选路由器
    8 回显 回显请求
    11 超时 资源耗尽
    12 参数问题 有问题的数据包或首部
  • 代码(Code):1 字节。ICMP 报文 子类型。进一步的解释该 ICMP 报文的作用。目标不可达类型常见代码如下:

    代码值 正式名称 注释
    0 网路不可达 (完全) 没有路由到目的地
    1 主机不可达 已知但不可达的主机
    2 协议不可达 未知的(传输)协议
    3 端口不可达 未知的端口
    4 需要进行分片但设置不分片位 需要设置分片但被 DF 禁止
  • 校验和(Checksum): 2 字节。该 ICMP 报文首部数据计算出的校验和。

  • ICMP 首部剩余部分(Rest Of Header):4 字节。根据不同的类型代码,表达不同的含义。

  • ICMP 数据ICMP 报文携带的附加数据。

常见的 ICMP 报文

ICMP 回显类型 — 分组网际探测(Packet InterNet Groper, PING)

我们通常使用 PING 操作来测试主机之间的连通性。该操作使用的 ICMP 回显报文结构如下:

其中,回显请求类型值是 8, 回显应答类型值是 0。其对应的代码值都为 0。
标识符序列号用于匹配回显应答回显请求有效负载可能包括一个表示传输时间的时间戳和一个序列号,这允许 PING 以无状态的方式计算往返时间(Round Trip Time, RTT),而不需要记录每个包的传输时间。

目标不可达报文(Destination Unreachable)

目标不可到达报文由主机或其入站网关生成,用于通知客户端由于某种原因目标网络设备不可到达。

其中,类型值为 3, 表示网络不可达。 代码值用于标识目标设备不可达的具体原因,常见代码值如前文所示。
下一跳最大传输单元代码值为 4 时有效,存放下一跳网络的 MTU
IP 首部及原始数据报数据的前 8 字节用于客户端识别目标不可到达报文所对应的原报文。

参考文献

TCP/IP协议(8): ICMP(Internet Control Message Protocol) 协议 ——诊断和控制 IP 协议层的更多相关文章

  1. ICMP(Internet Control Message Protocol)网际控制报文协议初识

    ICMP是(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制消息.控制消息是指网 ...

  2. 网络协议 5 - ICMP 与 ping:投石问路的侦察兵

        日常开发中,我们经常会碰到查询网络是否畅通以及域名对应 IP 地址等小需求,这时候用的最多的应该就是 ping 命令了. 那你知道 ping 命令是怎么工作的吗?今天,我们就来一起认识下 pi ...

  3. 网络协议 5 - ICMP 与 Ping

    日常开发中,我们经常会碰到查询网络是否畅通以及域名对应 IP 地址等小需求,这时候用的最多的应该就是 ping 命令了. 那你知道 ping 命令是怎么工作的吗?今天,我们就来一起认识下 ping 命 ...

  4. 国际控制报文协议ICMP

    国际控制报文协议ICMP ICMP简介 ICMP 用于主机或路由器报告差错情况和提供有关异常情况的报告(检测网络错误). ICMP 不是高层协议,而是 IP 层的协议. ICMP 报文的格式 ICMP ...

  5. TCP/IP详解学习笔记(5)-- ICMP:internet 控制报文协议

    1.概述      ICMP是(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制 ...

  6. TCP/IP详解 卷一(第六章 ICMP:Internet控制报文协议)

    ICMP是(Internet Control Message Protocol)Internet控制报文协议. 用于在IP主机.路由器之间传递控制消息.控制消息是指网络通不通.主机是否可达.路由是否可 ...

  7. 《TCP/IP 详解 卷1:协议》第 8 章:Internet 控制报文协议

    路由器是 Internet 的重要组成部分,严密监视 Internet 的操作.IP 协议未给发送失败的 IP 数据包提供一种错误处理,也没有给端系统提供直接的方法来发现错误.为了解决这一不足之处,I ...

  8. ICMP Internet控制报文协议

    ICMP是(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制消息.控制消息是指网 ...

  9. ICMP:internet 控制报文协议

    ICMP:internet 控制报文协议 1.概述      ICMP是(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议族的一个 ...

  10. 【RL-TCPnet网络教程】第24章 RL-TCPnet之网络控制报文协议ICMP

    第24章     RL-TCPnet之网络控制报文协议ICMP 本章节为大家讲解ICMP(Internet Control Message Protocol,网络控制报文协议),通过前面章节对TCP和 ...

随机推荐

  1. Devexpress控件pivotGridControl显示字段面板

    可在窗口加载的时候使用函数 pivotGridControl1.ShowCustomization(); 大家如果有问题可以 Console.WriteLine("加群"+&quo ...

  2. 【Spark】Day05-内核解析:组件、流程、部署、运行模式、通讯架构、任务调度(Stage、task级)、两种Shuffle机制、内存管理、核心组件

    一.内核概述 内核:核心组件的运行机制.任务调度.内存管理.运行原理 1.核心组件 (1)Driver驱动器节点:执行main方法,将程序转化为作业job,在executor中调度任务task,跟踪并 ...

  3. ChatGPT 可以联网了!浏览器插件下载

    Twitter 用户 An Qu 开发了一款新的 Chrome 插件帮助 ChatGPT 上网,安装插件以后 ChatGPT 就可以联!网!了! 简单来说开启插件后,他可以从网上搜索信息,并且根据用户 ...

  4. 想做长期的 AB 实验?快来看看这些坑你踩了没

    作者:江颢 1.什么是长期的 AB 实验 大部分情况下,我们做的 AB 实验都是短期的,一到两周或者一个月之内的,通过分析这段时期内测得的实验效应得出实验结论,并最终进行推广. 长期实验即运行时间达数 ...

  5. 跳石头(NOIP2015)

    AcWing 洛谷 解题思路 这题看到最短跳跃距离尽可能长就会想到二分 但是我们二分的\(check\)函数怎么写呢 可以看到限制条件移走的石头最多只能是\(m\)块 我们二分这个最短距离 容易想到一 ...

  6. P1024 [NOI2001] 食物链【种类并查集】

    题意 P1024 简化题意:给定 \(n\) 和 \(k(n\leqslant5\times10^4,k\leqslant10^5)\) ,表示有 \(n\) 个动物, \(k\) 个描述,其中: \ ...

  7. [图像处理] YUV图像处理入门4

    9 yuv420图像截取 本程序中的函数主要是对YUV420P视频数据流的第一帧图像进行截取.类似opencv中的rect函数,函数的代码如下所示: /** * @file 9 yuv_clip.cp ...

  8. 一问读懂Web3 架构

    最近看了一些Web3.0的文章,总结了一些个人的理解: Web3.0 通过区块链基础设施管理用户数据,重构用户和互联网平台之间的关系和交互,重新定义了互联网应用的架构方式和交互模式. Web 1.0 ...

  9. 区块链特辑——solidity语言基础(三)

    Solidity语法基础学习 五.映射类型: 映射型态 Mapping Type 映射钥匙Key → 真实资料 Value mapping(KeyType → ValueType) VariableN ...

  10. 03-Verilog语法

    Verilog语法 1 Register 组合逻辑-->寄存器-->组合逻辑-->寄存器 Register是一个变量,用于存储值,并不代表一个真正的硬件DFF. reg A,C; / ...