【网络】网络层ICMP协议

这篇具有很好参考价值的文章主要介绍了【网络】网络层ICMP协议。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【网络】网络层ICMP协议,网络知识,网络,网络层,ICMP协议,ping请求,重定向,终点不可达,ICMP差错

🦄 个人主页——🎐开着拖拉机回家_Linux,大数据运维-CSDN博客 🎐✨🍁

🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁🪁🍁🪁🍁🪁 🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁

感谢点赞和关注 ,每天进步一点点!加油!

目录

一、ICMP协议简介

二、ICMP报文

2.1 ICMP 的主要功能

2.2 报文类型

2.2 差错报文

2.2.1 终点不可达

2.2.2 改变路由(重定向)

2.2.3 超时

2.2.4 参数问题

2.3 查询/信息类报文

2.3.1 回显请求/应答(ping)

2.3.2 时间戳请求和应答

2.4 ICMP报文应用——ping请求测试

2.4.3 ICMP请求和应答

2.4.4 ICMP差错报告报文


一、ICMP协议简介


IP协议本身并没有终端系统提供直接的方法来发现那些发往目的地址失败的IP数据包,且没有提供直接的方式来获取诊断信息。为了更有效地转发IP数据报和提高交付成功的机会,在网络层使用了网际控制报文协议ICMPInternet控制报文协议(Intemet Control Message Protocol, ICMP)是IP协议的一种补充,它与IP协议结合使用,以便提供与IP协议层配置和IP数据包处理相关的诊断和控制信息(IP协议本身并没有为终端系统提供直接的方法来发现那些发往目的地址失败的IP数据包,也没有提供直接的方式来获取诊断信息。)

ICMP通常被认为是IP层的一部分,它是在IP数据报内被封装传输的【网络】网络层ICMP协议,网络知识,网络,网络层,ICMP协议,ping请求,重定向,终点不可达,ICMP差错

如图所示,在IPv4中,ICMP报文属于IP子协议,协议(Protocal)字段值为1表示该报文携带了ICMPv4。【网络】网络层ICMP协议,网络知识,网络,网络层,ICMP协议,ping请求,重定向,终点不可达,ICMP差错

如图所示,为ICMPv4的报文格式。所有的ICMP报文都以8位的类型(Type)和代码(Code)字段开始,其后的16位校验和(CheckSum)字段涵盖了整个报文。【网络】网络层ICMP协议,网络知识,网络,网络层,ICMP协议,ping请求,重定向,终点不可达,ICMP差错

其中各字段的含义如下:

  • 类型(Type):指定 ICMP 报文的类型,占 1 个字节。常见类型有:回显应答(Echo Reply:0)、回显请求(Echo Request:8)等。
  • 代码(Code):指定 ICMP 报文的代码,占 1 个字节。用于进一步描述 ICMP 报文,与 Type 字段组合使用。
  • 校验和(Checksum):校验和,用于检查 ICMP 报文是否有损坏,占 2 个字节。
  • 数据(Data):数据,可变长度。可以是任意数据,长度由具体的 ICMP 报文类型和代码决定。

二、ICMP报文


2.1 ICMP 的主要功能


对于 ICMP 的功能,主要分为两个:

  • ICMP 的第一个功能是确认 IP 包是否能够成功到达目标地址,当两个设备进行互联时,其中一个设备发送给另一个设备的 IP 包如果没有到达,就会生成 ICMP 数据包发送给设备共享。
  • ICMP 的第二个功能是进行网络诊断,经常使用 ICMP 数据包的两个终端程序是 ping 和 traceroute,traceroute 程序用于显示两台互联网设备之间可能的路径并测量数据包在 IP 网络上的时延。ping 程序是 traceroute 的简化版本,我们经常使用 ping 命令来测试两台设备之间网络是否正常,ping 还可以显示两台设备之间的延迟情况,并准确报告数据包到达目的地并返回后所花费的时间。【网络】网络层ICMP协议,网络知识,网络,网络层,ICMP协议,ping请求,重定向,终点不可达,ICMP差错

参考文章:【Linux】ping命令详解_开着拖拉机回家的博客-CSDN博客

【网络】抓包工具Wireshark下载安装和基本使用教程-CSDN博客文章来源地址https://www.toymoban.com/news/detail-819192.html

2.2 报文类型


ICMP报文可以分为两大类:

  • 差错报文:有关IP数据报传递的ICMP报文(差错报告报文)
  • 查询报文:有关信息采集和配置的ICMP报文(询问报文)

常用的ICMP报文类型如下表所示,其中*表示最常见的类型:【网络】网络层ICMP协议,网络知识,网络,网络层,ICMP协议,ping请求,重定向,终点不可达,ICMP差错

在ICMP中,对传入报文的处理随着系统的不同而不同。一般来说,传入的信息类请求将被操作系统自动处理,而差错类报文传递给用户进程或传输层协议。常见的ICMP报文类型:

  • Echo Reply(回显应答):用于回复Echo Request(回显请求)报文,通常用于测试网络连接是否正常。
  • Echo Request(回显请求):用于测试测试网络连接是否正常。
  • Destination Unreachable(目的地不可达):用于指示主机或路由器无法到达目的地或某个网络服务不可用。
  • Source Quench(源站抑制):当接收方无法处理所有传入的数据报时,源站抑制报文会发送到发送方,以通知其减慢数据传输速度(一般不被使用)。
  • Redirect(重定向):用于通知发送方,其正在使用的路由不再是最佳路由,建议使用另一条路由
  • Time Exceeded(时间超时):用于指示一个数据包在传输过程中被丢弃,原因是数据包在经过路由器时超过了其生存时间。
  • Parameter Problem(参数问题):用于指示数据包头部中存在错误的参数或选项,导致数据包无法被识别或处理。
  • Timestamp Request/Reply(时间戳请求/应答):用于向另一个主机请求当前时间戳,并将其返回给请求方。
  • Information Request/Reply(信息请求/应答):用于向另一个主机请求特定信息,并将其返回给请求方。
  • Address Mask Request/Reply(地址掩码请求/应答):用于请求另一个主机的网络掩码,并将其返回给请求方。

2.3 差错报文


限制生成ICMP差错报文的原因是限制生成所谓的广播风暴,在这种情况下生成少数的报文就会造成不想要的流量喷流(例如,无限的为响应差错报文而生成差错报文)。

以下情况下不会响应产生ICMPv4差错报文

  • ICMPv4差错报文(但是,响应ICMPv4查询报文可能会产生ICMPv4差错报文)
  • 目的地址是IPv4广播地址或IPv4组播地址的数据报
  • 作为链路层广播的数据报
  • 不是第一个分片的其他分片
  • 源地址不是单个主机的数据报。即源地址不能为零地址、环回地址、广播地址或组播地址

ICMP差错报文共有四种,即:

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

2.3.1 终点不可达

这种类型的报文用来表示数据报无法送达目的地,由主机或其入站网关生成,用于通知客户端由于某种原因目的地不可达。常用的代码有4个,包括:

  • 主机不可达(代码1)
  • 端口不可达(代码3)
  • 需要分片/指定不用分片(代码4)
  • 管理禁止通信(代码13)

ICMPv4目的不可达报文格式如图所示:【网络】网络层ICMP协议,网络知识,网络,网络层,ICMP协议,ping请求,重定向,终点不可达,ICMP差错

具体的细节如下:

  • 主机不可达(代码1):这种形式的目的不可达报文是由路由器或者主机产生的,出现在当它被要求是由直接交付方法发送一个IP数据报到一个主机,但由于某些原因无法到达目的地时。
  • 管理禁止通信(代码13):这种目的不可达报文能够表明一个管理禁令正阻止到目的地的成功通信。这通常是由一个防火墙故意丢弃流量导致的。
  • 端口不可达(代码3):当传入的数据报的目的应用程序还没准备好接受它时,就会生成一个端口不可达报文。
  • 需要分片/指定不用分片(代码4):如果一个IPv4路由器收到一个打算转发的数据报,如果数据报大于选定的传出网络接口的最大传输单元(Maximum Transmission Unit,MTU),则数据报需要分片。如果到达的数据报在IP头部中设置了不分片位字段,那么它会被丢弃而不是转发,此时将产生ICMPv4目的不可达(PTB)报文。

2.3.2 改变路由(重定向)

假如一个路由器收到一个来自主机的数据报,并确定自身并不是主机将数据报投递到目的地的对应下一跳,则该路由器发送一个重定向报文到主机并将该报文发送到正确的路由器(或主机),这个ICMP 重定向消息包含了最合适的路由信息和源数据。也就是说,如果它能够确定给定的数据报存在一个比自己更好的下一跳路由,它就向主机发送重定向报文使其更新转发表,这样以后目的地一样的流量就会被定向到新的节点中。

ICMPv4重定向报文格式如图所示:【网络】网络层ICMP协议,网络知识,网络,网络层,ICMP协议,ping请求,重定向,终点不可达,ICMP差错

路由器会通过这样的 ICMP 消息给发送端主机一个更合适的发送路由。【网络】网络层ICMP协议,网络知识,网络,网络层,ICMP协议,ping请求,重定向,终点不可达,ICMP差错

主机 Host 的 IP 地址为 10.0.0.100。主机的路由表中有一个默认路由条目,指向路由器 G1 的 IP 地址 10.0.0.1 作为默认网关。路由器 G1 在将数据包转发到目的网络 X 时,会使用路由器 G2 的 IP 地址 10.0.0.2 作为下一跳。

当主机向目的网络 X 发送数据包时,会发生以下情况:

  1. IP 地址为 10.0.0.1 的网关 G1 在其所连接的网络上接收来自 10.0.0.100 的数据包。
  2. 网关 G1 检查其路由表,并在通往数据包目的网络 X 的路由中获取下一个网关 G2 的 IP 地址 10.0.0.2。
  3. 如果 G2 和 IP 数据包的源地址标识的主机位于同一网络中(也就是 Host 主机),那么 G1 会向主机发送 ICMP 重定向消息。ICMP 重定向消息建议主机直接将发送到网络 X 的数据包发送至 G2,因为 Host - G2 这是通往目的地的较短路径。
  4. 网关 G1 将原始数据包转发到其目的地。

当然,根据主机的配置,Host 主机也可以选择忽略 G1 给它发送的 ICMP 重定向消息。但是,这样就享受不到 ICMP 重定向带来的两大好处,即

  • 优化数据在网络中的转发路径;流量更快到达目的地
  • 降低网络资源利用率,例如带宽和路由器 CPU 负载

如果 Host 主机采用了 ICMP 提供的重定向路径的话,那么 Host 就会直接把数据包发送至网络 X,如下图所示:【网络】网络层ICMP协议,网络知识,网络,网络层,ICMP协议,ping请求,重定向,终点不可达,ICMP差错

在主机为 G2 作为下一跳的网络 X 创建路由缓存条目后,这些优势在网络中可见:

  • 交换机和路由器 G1 之间链路的带宽利用率在两个方向上都会降低。
  • 由于从主机到网络 X 的流量不再流经此节点,因此路由器 G1 的 CPU 使用率降低。
  • 主机和网络 X 之间的端到端网络延迟得到改善。(引用)

2.3.3 超时

每个IPv4数据报在头部中都有一个生存周期(TTL)字段,当由于TTL或跳数限制字段值太小(即到达值为1或0,且必须转发)致使路由器丢弃报文时,会产生ICMP超时(代码0)报文。【网络】网络层ICMP协议,网络知识,网络,网络层,ICMP协议,ping请求,重定向,终点不可达,ICMP差错

【网络】网络层ICMP协议,网络知识,网络,网络层,ICMP协议,ping请求,重定向,终点不可达,ICMP差错

推荐一款比较好用的追踪超时消息的工具 traceroute【网络】网络层ICMP协议,网络知识,网络,网络层,ICMP协议,ping请求,重定向,终点不可达,ICMP差错

2.3.4 参数问题

当一个主机或者路由器接收到一个IP数据报,其IP头部存在不可修复的问题时便会产生一个ICMP参数问题报文。在ICMPv4中,当头部中某个字段超过可接受范围导致了一个错误时,一个特殊的ICMP差错报文指针(Pointer)字段指示了错误字段相对于出错IP头部的偏移值。

例如,指针字段值为1表示一个错误的IPv4 DS字段或ECN字段或者ToS字段。

代码0时ICMP参数问题报文最为常见的变体,可用于IPv4头部中出现的任何问题。代码1以前被用于指示数据包中缺少例如安全标志之类的选项,目前已经不使用了。代码2用来指示存在一个损坏了的IHL或者总长度字段值。【网络】网络层ICMP协议,网络知识,网络,网络层,ICMP协议,ping请求,重定向,终点不可达,ICMP差错

2.4 查询/信息类报文


尽管ICMP定义了一定数量的查询报文,但是许多功能都已经被其他特殊目的的协议所替代。唯一保存下来的广泛使用的ICMP查询/信息类报文是回显请求/应答报文,通常称为ping,以及路由器发现报文。

2.4.1 回显请求/应答(ping)

一种最为常用的ICMP报文对就是回显请求和回显应答。在ICMPv4中,其类型分别是8和0。ICMP的回显请求报文大小几乎是任意的(受限于最终封装的IP数据报的大小)。收到ICMP回显请求报文后,ICMP的实现要求将任何接收到的数据返回给发送者。即使涉及多个IP分片。其报文格式如下:【网络】网络层ICMP协议,网络知识,网络,网络层,ICMP协议,ping请求,重定向,终点不可达,ICMP差错

与其他ICMP查询/信息类报文一样,服务器必须在回复中包含标识符和序列号字段。

在ping的实现中将ICMP报文的标识符字段设置为某个数,发送主机能够利用它来分离返回的应答。在基于UNIX的系统中,例如,发送进程的进程ID通常被放置在标识符字段。如果由多个ping在同一台主机同时运行的话,这样将允许ping应用程序识别返回的应答,因为ICMP协议不像传输层协议那样有端口号。当涉及防火墙行为时,这个字段通常被称为查询标识符字段。

当一个新的ping实例运行时,序列号字段从0开始,并且每发送一个回显请求报文便增加1。ping打印出每个返回的数据包的序列号,方便用户查看数据包是否丢失、重排或者重复了。

2.4.2 时间戳请求和应答

ICMP时间戳请求报文是请求某台主机或路由器回答当前的日期和时间。在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1990年1月1日起到当前时刻一共有多少秒。时间戳请求和回答可用于时钟同步和时间测量。在ICMPv4中,其类型分别是13和14。

2.4 ICMP报文应用——ping请求测试


参考文章:【Linux】ping命令详解_开着拖拉机回家的博客-CSDN博客

【网络】抓包工具Wireshark下载安装和基本使用教程-CSDN博客

2.4.3 ICMP请求和应答

在 Wireshark 的数据包界面中输入显示过滤器并执行,我们选择 ping 百度:【网络】网络层ICMP协议,网络知识,网络,网络层,ICMP协议,ping请求,重定向,终点不可达,ICMP差错

用户可以在框框中输入显示过滤器,进行数据查找,也可以根据协议过滤数据包,我输入 ip.addr == 110.242.68.3,然后开始捕获,在开始ping 百度,输出如下捕获到的信息:

ICMP回显请求报文【网络】网络层ICMP协议,网络知识,网络,网络层,ICMP协议,ping请求,重定向,终点不可达,ICMP差错

ICMP回显请求报文【网络】网络层ICMP协议,网络知识,网络,网络层,ICMP协议,ping请求,重定向,终点不可达,ICMP差错

Linux 使用tcpdump命令也可以抓取到 icmp协议 ping的请求【网络】网络层ICMP协议,网络知识,网络,网络层,ICMP协议,ping请求,重定向,终点不可达,ICMP差错

2.4.4 ICMP差错报告报文


TTL过期差错报告报文

【网络】网络层ICMP协议,网络知识,网络,网络层,ICMP协议,ping请求,重定向,终点不可达,ICMP差错

命令指定TTL值为5,也就是通过5个路由器后,TTL会变成0,数据包丢弃,路由器发送ICMP TTL过期报文给源主机。

ping   www.baidu.com  -i 5 -t

ICMP TTL过期报文【网络】网络层ICMP协议,网络知识,网络,网络层,ICMP协议,ping请求,重定向,终点不可达,ICMP差错


TCP/IP详解卷:协议 第八章简要总结 - buguoliujibugaiming - 博客园

网络ICMP 协议详解_icmp协议_白话机器学习的博客-CSDN博客

【网络】抓包工具Wireshark下载安装和基本使用教程-CSDN博客

到了这里,关于【网络】网络层ICMP协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机网络 day6 arp病毒 - ICMP协议 - ping命令 - Linux手工配置IP地址

    目录 arp协议 arp病毒欺骗 arp病毒的运行原理 arp病毒产生的后果: 解决方法: ICMP协议 ICMP用在哪里?     ICMP协议数据的封装过程 ​编辑 为什么icmp协议封装好数据后,还要加一个ip包头,再使用ip协议再次进行封装,也就是在网络层封装了2次?  2种类型的ICMP数据包 1、ec

    2024年02月16日
    浏览(49)
  • 网络知识整合——Web页面请求的历程

    下载一个Web页面。我们的场景: 一名学生Bob将他的便携机与学校的以太网交换机相连,下载一个 Web 页面(比如 www.google.com 主页) 。如我们所知,为满足这个看起来简单的请求,背后隐藏了许多细节。 1、七层参考模型及IP讲解 2、TCP三次握手讲解 3、TCP四次挥手讲解及抓包分析

    2024年02月16日
    浏览(37)
  • 网络协议知识梳理

    目录 1.常见的网络协议 2.网络协议的特点 3.TCP和UDP的共同点和区别 3.1 共同点 3.2 区别 4.TCP和Websocket的共同点和区别 4.1 共同点 4.2 区别 5.七层网络协议 TCP/IP协议:是互联网的核心协议,其中TCP负责数据的可靠传输,IP负责数据的路由和寻址。 HTTP协议:用于在Web浏览器和Web服务

    2024年02月11日
    浏览(36)
  • 网络安全 Day19-计算机网络基础知识04(网络协议)

    Linux查看arp:arp -a 局域网内主机的通讯方式是通过MAC地址来实现的 告诉MAC地址如何查找物理记得位置 员工入职记录网卡MAC地址 工位网线接口上联交换机端口,用交换机查看 刚连接上网络时的电脑和交换机情况 当PC1开始发出数据传输PC7请求时(请求内容:PC1deIP PC1的MAC地址

    2024年02月15日
    浏览(69)
  • 网络知识点之-OSPF协议

    本文章收录至《网络》专栏,点击右上角专栏图标可访问本专栏! OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,隶属内部网关协议(

    2024年02月13日
    浏览(31)
  • 网络知识点之-RIP协议

    本文章收录至《网络》专栏,点击右上角专栏图标可访问本专栏! RIP协议,指路由信息协议(Routing Information Protocol),是基于距离矢量算法的路由协议,利用跳数来作为计量标准。 中文名:路由信息协议 外文名:Routing Information Protocol 特点:利用跳数来作为计量标准 类别:

    2024年02月13日
    浏览(37)
  • 网络知识点之-DHCP协议

    本文章收录至《网络》专栏,点击右上角专栏图标可访问本专栏! DHCP协议指动态主机配置协议 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议) ,是 RFC 1541(已被 RFC 2131 取代)定义的标准协议,该协议允许服务器向客户端动态分配 IP 地址和配置信息。 DHCP协议支持C

    2024年02月09日
    浏览(39)
  • 网络知识点之-BGP协议

    本文章收录至《网络》专栏,点击右上角专栏图标可访问本专栏! 边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。

    2024年02月16日
    浏览(41)
  • 基于Wireshark的ARP协议分析和IP报文、ICMP报文的分析|网络数据抓包|课程设计|traceroute|ping|

    前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 https://blog.csdn.net/yu_cblog/category_12379430.html?spm=1001.2014.3001.5482 目录 ​编辑前言 Wireshark软

    2024年02月10日
    浏览(45)
  • 计算机网络之TCP/IP协议第一篇:网络基础知识

    😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783824   📚📚  工作微信:BigTreeJava 拉你进微信群,免费领取! 🍎🍎4:本文章内容出自上述:Spring应用课程!💞💞

    2024年02月09日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包