什么是icmp协议ICMP是(InternetControlMessageProtocol)InternetControlMessageProtocol。它是TCP/IP协议族的一个子协议,用于在IP主机和路由器之间传输控制消息。控制消息是指网络本身的消息,如网络是否不可达、主机是否可达、路由是否可用等。这些控制消息虽然不传输用户数据,但在用户数据的传输中起着重要的作用。定义ICMP协议是一种面向无连接的协议,用于传输错误报告控制信息。它是一个非常重要的协议,对网络安全有着极其重要的意义。它是TCP/IP协议族的一个子协议,属于网络层协议。主要用于在主机和路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当IP数据不能到达目标时,IP路由器不能按照当前传输转发数据包速率等,它会自动发送ICMP消息。ICMP报文的IP帧结构头部中协议类型字段(Protocol8bit)的值=1。如下图所示,ICMP报文有一个8字节长的头部,其中前4字节为固定格式,包括8位类型字段、8位代码字段和16位校验和;最后4个字节根据ICMP数据包的类型取不同的值。通过示例了解Ping命令和ICMP什么是ICMP类型?通过示例了解ICMP数据包ICMP提供一致且易于理解的错误报告信息。发送的错误信息返回给发送原始数据的设备,因为只有发送设备才是错误信息的逻辑接收者。然后发送设备可以从ICMP消息中确定发生了什么类型的错误以及如何最好地重新发送失败的数据包。但ICMP的唯一功能是报告问题,而不是纠正错误,纠正错误的任务由发送方完成。我们在网络中经常会用到ICMP协议,比如我们经常使用的Ping命令来检查网络是否不可达(Linux和Windows都有)。这个“Ping”过程其实就是ICMP协议的工作过程。还有其他一些网络命令,比如跟踪路由的Tracert命令,也是基于ICMP协议的。13fb8ad9562cfcfaa95f15a5fa34bd4d.pngICMP协议属于哪一层?icmp协议是IP层的附属协议。它是IP层和TCP层之间的协议。一般认为属于IP层协议。IP协议使用它与其他主机或路由器交换错误消息和其他网络状况。ICMP报文携带控制信息和故障恢复信息。主要用于路由器主机向其他路由器或主机发送错误信息的控制信息。ICMP的功能特点e33e4657fe4bd28f3aa407685d5be9a4.pngICMP本身是网络层的协议;ICMP错误报告采用路由器-源主机的方式,路由器仅在数据报传输发生错误时向源主机报告错误原因;ICMP不能保证所有的IP数据报都能传送到目的主机;ICMP不能纠正错误,它只是报告错误。错误处理需要由更高层协议来完成。它是TCP/IP协议族的一个子协议,用于在IP主机和路由器之间传输控制消息。控制消息是指网络本身的消息,如网络是否不可达、主机是否可达、路由是否可用等。这些控制消息虽然不传输用户数据,但在用户数据的传输中起着重要的作用。ICMP的功能和特点ICMP的特点:ICMP本身是一种网络层的协议;ICMP错误报告采用路由器-源主机的方式,路由器只有在发现数据报传输有错误时才向源主机报告错误原因;ICMP不保证所有的IP数据报都能传送到目的主机;ICMP不能纠正错误,它只是报告错误。错误处理需要由更高层协议来完成。ICMP消息类型ICMP错误控制ICMP错误报告消息:Destinationunreachable:sourcesuppressiontimeoutparameterchangerouteunreachablenetunreachablehostunreachableprotocolunreachable)PortunreachableSourceroutefailedUnknowndestinationnetworkUnknowndestinationhost是ping命令?维基百科介绍:Ping是一种计算机网络工具,用于测试数据包能否通过IP协议到达特定主机。ping的工作原理是向目标主机发送一个ICMPecho@请求报文,等待收到回显响应报文。程序根据时间和成功响应的次数来估算丢包率(packetlossrate)和数据包往返时间(networkdelay,Round-tripdelaytime)。可以知道ping是基于ICMP协议的。ICMP属于哪一层?查阅《TCP/IP协议族》一书,第9章“互联网控制消息协议(ICMP)”,我们可以看到如下一段话:IP协议仍然缺乏主机和管理查询所需的机制。主机有时需要确定路由器或其他主机是否处于活动状态。有时网络管理员还需要来自其他主机或路由器的信息。InternetControlMessageProtocol(ICMP)就是为了弥补以上两个遗憾而设计的,它是IP协议的伙伴。图9.1显示了ICMP协议在网络层的位置,以及它与IP和其他协议的关系。见《TCP/IP协议详解卷1》,第6章“ICMP:InternetControlMessageProtocol”:ICMP通常被认为是IP层的一个组成部分。它传达错误消息和其他需要注意的信息。ICMP消息通常由IP层或更高层协议(TCP或UDP)使用。可见ICMP位于网络层,与IP属于同一层。为了进一步验证,我们进一步查阅了权威资料,发现了RFC792文档:TheInternetProtocol(IP)[1]isusedforhost-to-hostdatagramserviceinasystemofinterconnectednetworkscalledCatenet[2]。网络连接设备称为网关。这些网关通过网关到网关协议(GGP)[3,4]相互通信以实现控制目的。有时网关或目标主机会与源主机通信,例如,报告数据报处理过程中的错误。为此,使用了Internet控制消息协议(ICMP)。**ICMP,把IP的基础支持当成一个更高级的协议,然而,ICMP实际上是IP的一个组成部分,每个IP模块都必须实现**。总体思路是:ICMP协议用于主机与主机之间的数据报服务。当目的主机与源主机通信时,会使用ICMP,比如通过处理数据报报错。ICMP是基于IP的,所以它看起来像是一个上层协议,但实际上是IP的一部分,必须在每个IP模块中实现。至于ICMP的详细功能和帧结构的定义,这里不再赘述,读者可以自行了解。以示例探索ICMP端口号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错误消息)。?IP数据报,其目标地址是广播地址或多播地址(D类地址)。●作为链路层广播的数据报。●不是IP分片的第一个分片。●源地址不是单个主机的数据报。也就是说,源地址不能是零地址、环回地址、广播地址或多播地址。使用Tcpdump捕获ICMP数据包使用Tcpdump过滤ICMPICMPv6数据包
