前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ICMP 协议分析

ICMP 协议分析

作者头像
用户8418197
修改于 2021-07-05 01:56:28
修改于 2021-07-05 01:56:28
1.6K0
举报
文章被收录于专栏:howtouselinuxhowtouselinux

1.ICMP功能:

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

下面是一些基础的关于icmp协议的知识。

3.ICMP报文类型

ICMP 报文大致可分为两类:差错报文、查询报文。

3.1 ICMP 差错报文的类型分析:

1、ICMP 目标不可达消息:IP 路由器无法将 IP 数据报发送给目的地址时,会给发送端主机返回一个目标不可达 ICMP 消息,并在这个消息中显示不可达的具体原因。

2、ICMP 重定向消息:如果路由器发现发送端主机使用次优的路径发送数据时,那么它会返回一个 ICMP 重定向消息给这个主机,这个消息包含了最合适的路由信息和源数据。主要发生在路由器持有更好的路由信息的情况下,路由器会通过这个 ICMP 重定向消息给发送端主机一个更合适的发送路由。

3、ICMP 超时消息:IP 数据包中有一个字段 TTL(Time to live,生存周期),它的值随着每经过一个路由器就会减 1,直到减到 0 时该 IP 数据包被丢弃。此时,IP 路由器将发送一个 ICMP 超时消息给发送端主机,并通知该包已被丢弃。

4、源抑制消息:当 TCP/IP 主机发送数据到另一主机时,如果速度达到路由器或者链路的饱和状态,路由器发出一个 ICMP 源抑制消息。

3.2 ICMP 查询报文类型分析

—-ICMP 回送消息:用于进行通信的主机或路由之间,判断发送数据包是否成功到达对端的消息。可以向对端主机发送回送请求消息,也可以接收对端主机回来的回送应答消息。

—-ICMP 地址掩码消息:主要用于主机或路由想要了解子网掩码的情况。可以向那些主机或路由器发送 ICMP 地址掩码请求消息,然后通过接收 ICMP 地址掩码应答消息获取子网掩码信息。

—-ICMP 时间戳消息:可以向那些主机或路由器发送 ICMP 时间戳请求消息,然后通过接收 ICMP 时间戳应答消息获取时间信息。

4.使用ICMP的具体程序:

4.1 Ping 程序

Ping 程序利用 ICMP 回显请求报文和回显应答报文(而不用经过传输层)来测试目标主机是否可达。它是一个检查系统连接性的基本诊断工具。

ICMP 回显请求和 ICMP 回显应答报文是配合工作的。当源主机向目标主机发送了 ICMP 回显请求数据包后,它期待着目标主机的回答。目标主机在收到一个 ICMP 回显请求数据包后,它会交换源、目的主机的地址,然后将收到的 ICMP 回显请求数据包中的数据部分原封不动地封装在自己的 ICMP 回显应答数据包中,然后发回给发送 ICMP 回显请求的一方。如果校验正确,发送者便认为目标主机的回显服务正常,也即物理连接畅通。

4.2 Traceroute 程序

Traceroute 程序主要用来侦测源主机到目的主机之间所经过的路由的情况。

Traceroute 使用 ICMP 报文和 IP 首部中的 TTL 字段,它充分利用了 ICMP 超时消息。其原理很简单,开始时发送一个 TTL 字段为 1 的 UDP 数据报,而后每次收到 ICMP 超时后,按顺序再发送一个 TTL 字段加 1 的 UDP 数据报,以确定路径中的每个路由器,而每个路由器在丢弃 UDP 数据报时都会返回一个 ICMP 超时报文,而最终到达目的主机后,由于 ICM P选择了一个不可能的值作为 UDP 端口(大于30000)。这样目的主机就会发送一个端口不可达的 ICMP 差错报文。

5.不产生ICMP的情况:

1.ICMP差错报文不会产生ICMP差错报文(出IMCP查询报文)(防止IMCP的无限产生和传送)

2.目的地址是广播地址或多播地址的IP数据报。

3.作为链路层广播的数据报。

4.不是IP分片的第一片。

5.源地址不是单个主机的数据报。这就是说,源地址不能为零地址、环回地址、广播地 址或多播地址。

  1. 用tcpdump命令来抓取icmp的数据包 tcpdump -i eth0 icmp

Filtering ICMP ICMPv6 Packets with Tcpdump

Capture ICMP Packets With Tcpdump

  1. icmp端口是多少? icmp使用端口, 它跟tcp udp的 协议不同 Exploring ICMP Protocol with An Example

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
暂无评论
推荐阅读
编辑精选文章
换一批
脑残式网络编程入门(五):每天都在用的Ping命令,它到底是什么?
老于网络编程熟手来说,在测试和部署网络通信应用(比如IM聊天、实时音视频等)时,如果发现网络连接超时,第一时间想到的就是使用Ping命令Ping一下服务器看看通不通。甚至在有些情况下通过图形化的Ping命令工具对目标网络进行长测(比如:《两款增强型Ping工具:持续统计、图形化展式网络状况 [附件下载]》、《网络测试:Android版多路ping命令工具EnterprisePing[附件下载]》),可以得出当前网络通信的网络延迟、网络丢包率、网络抖动等等有价值信息。
JackJiang
2018/09/21
1.6K0
ICMP报文详解
3>16位的检验和字段:包括数据在内的整个ICMP数据包的检验和;其计算方法和IP头部检验和的计算方法一样的。
全栈程序员站长
2022/06/29
2.6K0
ICMP报文详解
icmp重定向攻击
当发送一份差错报文时,报文始终包含 IP 的首部和产生 ICMP 差错报文的 IP 数据报的前 8 位字节。这样,接收 ICMP 差错报文的模块就会把它与某个特定的协议(根据 IP 数据报首部中的协议字段来判断)和用户进程(根据包含在 IP 数据报前 8 个字节中的 TCP 或 UDP 报文首部中的 TCP 或 UDP 端口号来判断)联系起来。 下面各种情况不会导致产生 ICMP 差错报文:
De4dCr0w
2019/02/27
3.5K1
[协议]ICMP协议剖析
本文介绍了ICMP协议的一些重要知识点,包括ICMP协议的作用、类型、代码以及与其他网络协议的关系。同时,还探讨了ICMP报文的格式和字段,以及ICMP在网络安全中的实际应用。
静默虚空
2018/01/05
3K0
[协议]ICMP协议剖析
当你「ping 一下」的时候,你知道它背后的逻辑吗?
我们在遇到网络不通的情况,大家都知道去 ping 一下,看一下网络状况。 那你知道「ping」命令后背的逻辑是什么吗?知道它是如何实现的吗?
奎哥
2018/10/09
1.8K0
当你「ping 一下」的时候,你知道它背后的逻辑吗?
ICMP协议分析
ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
用户8418197
2021/08/09
2.4K0
ICMP协议是什么
我们经常用ping命令,但是可能不知道ping命令的底层协议是ICMP,那到底什么是ICMP
opencode
2022/12/26
1K0
ICMP协议是什么
ICMP协议详解
ICMP协议详解 ICMP协议是一个网络层协议。 一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通;但是IP协议并不提供可靠传输。如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。 所以我们就需要一种协议来完成这样的功能–ICMP协议。
心跳包
2020/08/31
2.6K0
ICMP协议详解
4.网络层-ICMP
一、ICMP协议 0.介绍(是什么?) ICMP是(Internet Control Message Protocol)因特网控制信息协议。 它是TCP/IP协议簇的一个子协议,一般认为属于IP层协议,用于在IP主机、路由器之间传递控制消息。属于网络层协议。 控制消息:是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 1.作用 用于传送有关通信问题的消息,ICMP封装在IP数据报中传送,所以不保证可靠提交。
见贤思齊
2020/08/05
5370
ICMP详解「建议收藏」
ICMP(Internet Control Message Protocol)网际控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
全栈程序员站长
2022/09/14
1.6K0
第20章 ICMP
72. 源主机ping 目的设备时,如果网络工作正常,则目的设备在接收到该报文后,将会向源主机回应ICMP( )报文。 B
week
2018/08/27
6500
第20章   ICMP
互联网医生-ICMP协议
在《IP协议详解》入门文章中,IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是网际报文控制协议(InternetControl Message ProtocoL,ICMP )。
网络工程师笔记
2021/05/17
8270
互联网医生-ICMP协议
你知道 ping 命令是如何工作的吗?
我们用来测试一台机器与另一台机器的网络连通性一般会使用ping命令,那么你知道ping命令是如何工作的吗?ping命令是基于ICMP协议工作的。
IT咸鱼
2025/05/20
1390
你知道 ping 命令是如何工作的吗?
分析ICMP报文「建议收藏」
启动wireshark录制数据包,打开命令行窗口输入ping www.sina.com.cn。
全栈程序员站长
2022/08/11
2.2K0
分析ICMP报文「建议收藏」
ICMP协议分析-ping和traceroute
日常开发中,我们经常会碰到查询网络是否畅通以及域名对应 IP 地址等小需求,这时候用的最多的应该就是 ping 命令了。 那你知道 ping 命令是怎么工作的吗?今天,我们就来一起认识下 ping 命令及其对应的 ICMP 协议。
用户8418197
2021/09/11
8730
所谓 ICMP,不过将军与士卒而已
关于这点我们在 IP 协议那篇文章中提过一嘴,IP 协议作为一种提供不可靠数据交付的网络层协议,在传输的过程中,其 IP 数据报可能会发生丢失、重复、延迟和乱序等各种情况, 但是 IP 协议对这些糟糕的情况并不拥有有效的检测和弥补措施,当然更不会将这些结果通知收发双方。
飞天小牛肉
2021/05/14
4790
所谓 ICMP,不过将军与士卒而已
ICMP (互联网控制消息协议 )是什么
互联网控制消息协议(英语:Internet Control Message Protocol,缩写:ICMP)是互联网协议族的核心协议之一。
微风-- 轻许--
2022/04/13
8100
ICMP 是个啥破玩意?
ICMP 的全称是 Internet Control Message Protocol(互联网控制协议),它是一种互联网套件,它用于IP 协议中发送控制消息。也就是说,ICMP 是依靠 IP 协议来完成信息发送的,它是 IP 的主要部分,但是从体系结构上来讲,它位于 IP 之上,因为 ICMP 报文是承载在 IP 分组中的,就和 TCP 与 UDP 报文段作为 IP 有效载荷被承载那样。这也就是说,当主机收到一个指明上层协议为 ICMP 的 IP 数据报时,它会分解出该数据报的内容给 ICMP,就像分解数据报的内容给 TCP 和 UDP 一样。
网络工程师笔记
2021/05/17
1K0
ICMP 是个啥破玩意?
你知道ping命令是如何工作的吗?
我们用来测试一台机器与另一台机器的网络连通性一般会使用ping命令,那么你知道ping命令是如何工作的吗?ping命令是基于ICMP协议工作的。
Regan Yue
2023/07/10
4680
你知道ping命令是如何工作的吗?
ICMP报文格式解析
上图是ICMP报文的基本格式,上面提到的三种ICMP报文均有“类型,代码和校验和”三个字段,后面还有4个字节是根据不同的报文类型而有不同的格式,有的是全0,有的则有其他的特殊格式。但是ICMP始终有8个字节的头部长度。其中类型字段代表着不同的报文类型,而代码字段指明了某个类型的报文中细分出的该报文的指定的功能。即一个类型的报文拥有着多种功能。
全栈程序员站长
2022/08/22
2.2K0
ICMP报文格式解析
相关推荐
脑残式网络编程入门(五):每天都在用的Ping命令,它到底是什么?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档