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

ICMP协议分析

作者头像
用户8418197
修改于 2021-08-10 02:35:10
修改于 2021-08-10 02:35:10
2.4K0
举报
文章被收录于专栏:howtouselinuxhowtouselinux

什么是icmp协议

ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

定义

ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网络安全具有极其重要的意义。

它是TCP/IP协议族的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。ICMP报文在IP帧结构的首部协议类型字段(Protocol 8bit)的值=1.

如下图所示,ICMP包有一个8字节长的包头,其中前4个字节是固定的格式,包含8位类型字段,8位代码字段和16位的校验和;后4个字节根据ICMP包的类型而取不同的值。

Understanding Ping Command and ICMP with Examples

What is ICMP type?

Understanding ICMP Packets with Examples

ICMP提供一致易懂的出错报告信息。发送的出错报文返回到发送原数据的设备,因为只有发送设备才是出错报文的逻辑接受者。发送设备随后可根据ICMP报文确定发生错误的类型,并确定如何才能更好地重发失败的数据包。但是ICMP唯一的功能是报告问题而不是纠正错误,纠正错误的任务由发送方完成。

我们在网络中经常会使用到ICMP协议,比如我们经常使用的用于检查网络通不通的Ping命令(Linux和Windows中均有),这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。

13fb8ad9562cfcfaa95f15a5fa34bd4d.png

ICMP协议到底属于哪一层

icmp协议是IP层的附属协议,是介于IP层和TCP层之间的协议,一般认为属于IP层协议。IP协议用它来与其他主机或路由器交换错误报文和其他的一些网络情况。在ICMP包重携带了控制信息和故障恢复信息。主要用于路由器主机向其他路由器或者主机发送出错报文的控制信息。

ICMP的功能特点

e33e4657fe4bd28f3aa407685d5be9a4.png

ICMP本身是网络层的一个协议;

ICMP差错报告采用路由器-源主机的模式,路由器在发现数据报传输出现错误时只向源主机报告差错原因;

ICMP并不能保证所有的IP数据报都能够传输到目的主机;

ICMP不能纠正差错,它只是报告差错。差错处理需要由高层协议去完成。

它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不 通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 ICMP的作用与特点 ICMP的特点: ICMP本身是网络层的一个协议; ICMP差错报告采用路由器-源主机的模式,路由器在发现数据报传输出现错误时只向源主机报告差错原因; ICMP并不能保证所有的IP数据报都能够传输到目的主机; ICMP不能纠正差错,它只是报告差错。差错处理需要由高层协议去完成。 ICMP报文类型 ICMP差错控制 ICMP差错报告报文: 目的站不可达: 源站抑制 超时 参数问题 改变路由 目的站不可到达 网络不可到达(net unreachable) 主机不可到达(host unreachable) 协议不可到达(protocol unreachable) 端口不可到达(port unreachable) 源路由选择不能完成(source route failed) 目的网络不可知(unknown destination network) 目的主机不可知(unknown destination host)

Exploring ICMP Protocol with Examples

Exploring ICMP with Examples

ping命令是什么协议?

维基百科介绍:

ping是一种电脑网络工具,用来测试数据包能否通过IP协议到达特定主机。ping的运作原理是向目标主机传出一个ICMP echo@要求数据包,并等待接收echo回应数据包。程序会按时间和成功响应的次数估算丢失数据包率(丢包率)和数据包往返时间(网络时延,Round-trip delay time)。

可以知道,ping基于ICMP协议。

ICMP属于哪一层?

查阅书籍《TCP/IP协议族》,第9章“网络控制报文协议(ICMP)”,我们可以看到下面这一段话:

IP协议还缺少主机和管理查询所需要的机制。主机有时候需要判断某个路由器或者是对方主机是否活跃。有时网络管理员也需要来自其他主机或路由器的信息。

网络控制报文协议(ICMP)是设计来弥补上述两个遗憾的,它是IP协议的伴侣。图9.1给出了ICMP协议在网络层中的位置,以及它与IP及其他协议之间的关系。

查看《TCP/IP协议详解卷1》,第6章“ICMP:Internet控制报文协议”:

ICMP经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。

ICMP报文通常被IP层或更高层协议(TCP或UDP)使用。

由此可见,ICMP位于网络层,与IP属于同一层。

进一步验证

我们进一步查看权威的资料,找到RFC 792文档:

The Internet Protocol (IP) 1 is used for host-to-host datagram

service in a system of interconnected networks called the

Catenet 2. The network connecting devices are called Gateways.

These gateways communicate between themselves for control purposes

via a Gateway to Gateway Protocol (GGP) 3,4. Occasionally a

gateway or destination host will communicate with a source host, for

example, to report an error in datagram processing. For such

purposes this protocol, the Internet Control Message Protocol (ICMP),

is used. **ICMP, uses the basic support of IP as if it were a higher

level protocol, however, ICMP is actually an integral part of IP, and

must be implemented by every IP module**.

大意就是:

ICMP协议是用于host到host之间的数据报服务,目的host与源host进行通信时,ICMP会用到,比如通过处理数据报报告一个错误。

ICMP基于IP,以至于它看起来像一个上层协议,但是实际上是IP的一部分,而且必须在每个IP模块中实现。

至于ICMP的详细作用以及帧结构定义,这里不再赘述,读者自行了解。

Exploring ICMP Port Number with Example

ICMP差错报文

报告IP数据报在传输中的差错是ICMP报文最基本的功能,ICMP差错报文有如下特点:

ICMP差错报文都是由路由器发送到源主机的,因为IP数据报中含有源主机的IP地址,报告给源主机是最可行的方案,另外,发出IP数据报的源主机最需要知道数据是否到达目标主机。

ICMP差错报文只提供IP数据报在传输过程中的差错报告,并不规定对各类差错应采取什么样的处理措施。具体对差错的处理,由收到ICMP差错报文的源主机将相应的差错与应用程序联系起来才能进行相应的差错处理。

ICMP差错报文不享受任何优先权,也没有特别的可靠性保证措施,与普通的IP数据报一样进行传输,传输过程中可能被丢失、损坏,甚至被抛弃。

ICMP差错报文是伴随着抛弃出错的IP数据报而产生的。

当路由器发送一份参数错误等的ICMP差错报文时,ICMP报文数据区始终包含产生ICMP差错报文的IP数据报的头部和其数据区的前8个字节(64位)。

在有些情况下,为了防止在网络中产生大量的ICMP差错报文(广播风暴),影响网络的正常工作,即使发生差错,也不会产生ICMP差错报文,这些情况包括:

●ICMP报文发生差错。这是为了避免差错报文无休止产生而规定的(但ICMP查询报文可能会产生ICMP差错报文)。

●目的地址是广播地址或多播地址(D类地址)的IP数据报。

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

●不是IP分片的第一片。

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

Capture ICMP Packets With Tcpdump

Filtering ICMP ICMPv6 Packets with Tcpdump

本文系转载,前往查看

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

本文系转载,前往查看

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

评论
作者已关闭评论
暂无评论
推荐阅读
编辑精选文章
换一批
ICMP详解「建议收藏」
ICMP(Internet Control Message Protocol)网际控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
全栈程序员站长
2022/09/14
1.5K0
ICMP 协议「建议收藏」
ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 ICMP使用IP的基本支持,就像它是一个更高级别的协议,但是,ICMP实际上是IP的一个组成部分,必须由每个IP模块实现。 中文名 ICMP 外文名 Internet Control Message Protocol 类 型 控制报文协议 协议族 TCP/IP协议族 归 属 网络层协议 作 用 在主机与路由器之间传递控制信息
全栈程序员站长
2022/11/01
2K1
ICMP 协议「建议收藏」
互联网医生-ICMP协议
在《IP协议详解》入门文章中,IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是网际报文控制协议(InternetControl Message ProtocoL,ICMP )。
网络工程师笔记
2021/05/17
8110
互联网医生-ICMP协议
ICMP 协议分析
ICMP是(Internet Control Message Protocol)Internet控制报文协议,它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
用户8418197
2021/07/03
1.5K0
计算机网络:ICMP协议(Internet控制消息协议)介绍
这里推荐一篇实用的文章:《idea的springboot项目如何看mysql位置》,作者:【用户10024547】。
小明互联网技术分享社区
2024/12/06
2220
计算机网络:ICMP协议(Internet控制消息协议)介绍
一文吃透ICMP协议:网络诊断与故障排查的关键利器
ICMP(Internet Control Message Protocol)即网际控制报文协议,是 TCP/IP 协议族的重要成员,工作在网络层,与 IP 协议、ARP 协议、RARP 协议及 IGMP 协议共同构成了 TCP/IP 模型中的网络层 。它就像是网络世界中的 “交通警察” 和 “维修工人”,主要负责在 IP 主机、路由器之间传递控制消息,包括报告错误、交换受限控制和状态信息等,以确保网络数据传输的顺畅与稳定。
用户11396661
2025/02/28
2110
一文吃透ICMP协议:网络诊断与故障排查的关键利器
第20章 ICMP
72. 源主机ping 目的设备时,如果网络工作正常,则目的设备在接收到该报文后,将会向源主机回应ICMP( )报文。 B
week
2018/08/27
6400
第20章   ICMP
ICMP 是干啥用的
轻解网络系列又来了。已有高清 PDF 版本可以离线阅读了,全册 65 页,如果有需要离线版的高清 PDF 可以直接下载。
古时的风筝
2023/03/30
9000
ICMP 是干啥用的
ICMP协议详解
ICMP协议详解 ICMP协议是一个网络层协议。 一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通;但是IP协议并不提供可靠传输。如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。 所以我们就需要一种协议来完成这样的功能–ICMP协议。
心跳包
2020/08/31
2.6K0
ICMP协议详解
分析ICMP报文「建议收藏」
启动wireshark录制数据包,打开命令行窗口输入ping www.sina.com.cn。
全栈程序员站长
2022/08/11
2K0
分析ICMP报文「建议收藏」
icmp回复报文_ICMP报文和ping命令[通俗易懂]
ping程序是用来探测主机到主机之间是否可通信,如果不能ping到某台主机,表明不能和这台主机建立连接。ping使用的是ICMP协议,它发送icmp回送请求消息给目的主机。ICMP协议规定:目的主机必须返回ICMP回送应答消息给源主机。如果源主机在一定时间内收到应答,则认为主机可达。
全栈程序员站长
2022/09/07
2.5K0
ICMP协议报文_三菱mc协议报文格式
摘自:《深入理解计算机网络》 王达著 机械工业出版社 相关知识链接 1. IPV4数据报头部格式请点击这里 2. IPv6数据报头部格式请点击这里 3. IPv4数据报的封装与解封装请点击这里 4. IPv4数据报的分段与重组请点击这里 5. ARP协议报文格式及ARP表 6. ARP地址解析原理
全栈程序员站长
2022/11/17
5680
ICMP协议报文_三菱mc协议报文格式
所谓 ICMP,不过将军与士卒而已
关于这点我们在 IP 协议那篇文章中提过一嘴,IP 协议作为一种提供不可靠数据交付的网络层协议,在传输的过程中,其 IP 数据报可能会发生丢失、重复、延迟和乱序等各种情况, 但是 IP 协议对这些糟糕的情况并不拥有有效的检测和弥补措施,当然更不会将这些结果通知收发双方。
飞天小牛肉
2021/05/14
4630
所谓 ICMP,不过将军与士卒而已
ICMP 是个啥破玩意?
ICMP 的全称是 Internet Control Message Protocol(互联网控制协议),它是一种互联网套件,它用于IP 协议中发送控制消息。也就是说,ICMP 是依靠 IP 协议来完成信息发送的,它是 IP 的主要部分,但是从体系结构上来讲,它位于 IP 之上,因为 ICMP 报文是承载在 IP 分组中的,就和 TCP 与 UDP 报文段作为 IP 有效载荷被承载那样。这也就是说,当主机收到一个指明上层协议为 ICMP 的 IP 数据报时,它会分解出该数据报的内容给 ICMP,就像分解数据报的内容给 TCP 和 UDP 一样。
网络工程师笔记
2021/05/17
9840
ICMP 是个啥破玩意?
4.网络层-ICMP
一、ICMP协议 0.介绍(是什么?) ICMP是(Internet Control Message Protocol)因特网控制信息协议。 它是TCP/IP协议簇的一个子协议,一般认为属于IP层协议,用于在IP主机、路由器之间传递控制消息。属于网络层协议。 控制消息:是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 1.作用 用于传送有关通信问题的消息,ICMP封装在IP数据报中传送,所以不保证可靠提交。
见贤思齊
2020/08/05
5280
什么是 ICMP ?ping和ICMP之间有啥关系?
今天应粉丝要求约稿讲一下ICMP,说起ICMP,咋一看,很熟悉,但是仔细想想又讲不出来啥,所以这就是本文的目的。
网络技术联盟站
2022/06/27
2.3K0
什么是 ICMP ?ping和ICMP之间有啥关系?
wireshark中抓取ICMP报文「建议收藏」
我们现在就来抓取报文 打开dos窗口,在里面输入ping mail.sina.com.cn:
全栈程序员站长
2022/08/12
2.3K0
wireshark中抓取ICMP报文「建议收藏」
路由与交换 入门3 ICMP与Trace
答: Traceroute是个网络诊断工具,用来发现到达目的节点所经路径,把中间所经过的每一个路由器的地址都列出来。
py3study
2020/01/15
1.1K0
路由与交换 入门3 ICMP与Trace
Web应用系统介绍-TCP/IP协议
大家先冷静一下上了一天班的大脑先~~~ 然后我们再讲理论~ 以下内容非常枯燥,但是也是非常有用~ 在我们开始CTF的道路之前,希望你们能知道并理解下面基本概念,其中有一些是计算机类毕业生必学的内容 学过的同学可以回顾一下 没学过的同学通过我们的抛砖引玉加深自己的理论学习 首先就是TCP/IP协议 TCP/IP协议源于1969年,是针对Internet开发的一种体系结构和协议标准,其目的在于解决异种计算机网络的通信问题 TCP/IP的全称是Transmission Control Protocol/Inte
用户1631416
2018/04/24
1.2K0
Web应用系统介绍-TCP/IP协议
网络协议分析03(zhuan 程震老师 用于期末复习)
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 第三章 ARP与ICMP
20岁爱吃必胜客
2022/11/13
5110
网络协议分析03(zhuan 程震老师 用于期末复习)
相关推荐
ICMP详解「建议收藏」
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文