#8203;ICMP协议全解析
副标题[/!--empirenews.page--]
1. ICMP简介 ICMP全名为(INTERNET CONTROL MESSAGE PROTOCOL)网络控制消息协议。 ICMP的协议号为1。 ICMP报文就像是IP报文的小弟,总顶着IP报文的名头出来混。 因为ICMP报文是在IP报文内部的,如图: ICMP属于TCP/IP协议族,工作在网络层(第三层),用于在IP主机、路由器之间传递控制消息。 控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 2. ICMP典型运用—ping ICMP的一个典型应用是Ping。 Ping是检测网络连通性的常用工具,同时也能够收集其他相关信息。 用户可以在Ping命令中指定不同参数,如ICMP报文长度、发送的ICMP报文个数、等待回复响应的超时时间等,设备根据配置的参数来构造并发送ICMP报文,进行Ping测试。 Ping常用的配置参数说明如下:
Ping命令的输出信息中包括目的地址、ICMP报文长度、序号、TTL值、以及往返时间。序号是包含在Echo回复消息(Type=0)中的可变参数字段,TTL和往返时间包含在消息的IP头中。 3. ICMP典型运用—Tracert ICMP的另一个典型应用是Tracert。 Tracert基于报文头中的TTL值来逐跳跟踪报文的转发路径。 为了跟踪到达某特定目的地址的路径,源端首先将报文的TTL值设置为1。 该报文到达第一个节点后,TTL超时,于是该节点向源端发送TTL超时消息,消息中携带时间戳。 然后源端将报文的TTL值设置为2,报文到达第二个节点后超时,该节点同样返回TTL超时消息,以此类推,直到报文到达目的地。 这样,源端根据返回的报文中的信息可以跟踪到报文经过的每一个节点,并根据时间戳信息计算往返时间。 Tracert是检测网络丢包及时延的有效手段,同时可以帮助管理员发现网络中的路由环路。 Tracert常用的配置参数说明如下:
4. ICMP类型 ICMP报文主要有两大功能:查询报文和差错报文。 对于查询报文,常用的ping命令,以及用于无盘系统启动获取网络子网掩码查询报文,以及时间戳报文,目标主机收到返回相应的格式的回应包; 对于差错报文在一些情况下目标主机不会返回对应的数据包: 5. 目的不可达(Destination Unreachable Message) 日常生活中,邮寄包裹会经过多个传递环节,任意一环如果无法传下去,都会返回寄件人,并附上无法邮寄的原因。 同理,当路由器收到一个无法传递下去的IP报文时,会发送ICMP目的不可达报文(Type为3)给IP报文的源发送方。 报文中的Code就表示发送失败的原因。
6. 超时(Time Exceeded Message) 网络传输IP数据报的过程中,如果IP数据包的TTL值逐渐递减为0时,需要丢弃数据报。 这时,路由器需要向源发送方发送ICMP超时报文(Type为11),Code为0,表示传输过程中超时了。 一个IP数据报可能会因为过大而被分片,然后在目的主机侧把所有的分片重组。 如果主机迟迟没有等到所有的分片报文,就会向源发送方发送一个ICMP超时报文,Code为1,表示分片重组超时了。 7. 参数错误报文(Parameter Problem Message) 当路由器或主机处理数据报时,发现因为报文头的参数错误而不得不丢弃报文时,需要向源发送方发送参数错误报文(Type为12)。 当Code为0时,报文中的Pointer表示错误的字节位置。 (编辑:青岛站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |