什么是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