新手需要掌握的ICMP协议基础知识

网络 网络管理
下面我们来对ICMP协议的基础内容进行一下巩固。那么对于这个协议我们需要分清它的网络版本,以及相应的网络基础。

ICMP协议,是我们对网络中的消息加以控制的一类协议,在很多方面,这个协议的应用都有值得讨论的地方。它可以算是一位检查者,帮助我们检查在消息中的一些传递问题。那么接下来我们就来规范一下这个协议的定义。互联网控制消息协议(Internet Control Message Protocol 或简写 ICMP)的目的是用于在 TCP/IP 网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈,通过这些信息,令管理者可以对所发生的问题作出诊断,然后采取适当的措施去解决它。

ICMP依靠IP来完成它的任务,它是IP的主要部分。它与传输协议,如TCP和UDP显著不同:它一般不用于在两点间传输数据。它通常不由网络程序直接使用,除了ping和traceroute这两个特别的例子。

IPv4的ICMP也叫ICMPv4。IPv6的也有一个相似的协议,叫ICMPv6。

ICMP消息是在IP层,通常是从一个普通的产生了ICMP响应的IP数据报中生成的。IP把适当的ICMP消息用一个新的档头(header)封装起来(以把ICMP消息送回原来的发送者),然后把产生的数据报用常规的方式传送回去。

例如,每台转发IP数据报的机器(例如途中的路由器)都要把IP报头中的TTL(time to live)减1,如果TTL减为了0,一个ICMP超时消息就会被发送到数据报的源发送者。

每个ICMP消息都是直接封装在一个IP数据报中的,因此,和UDP一样,ICMP是不可靠的。

虽然ICMP协议是包含在IP数据报中的,但是对ICMP消息通常会特殊处理,会和一般IP数据报的处理不同,而不是作为IP的一个子协议来处理。在很多时候,需要去查看ICMP消息的内容,然后发送适当的错误消息到那个原来产生IP数据包的程序,即那个被提示一个ICMP消息的程序。

很多常用的工具是基于ICMP消息的。traceroute是通过发送包含有特殊的TTL的包,然后查找ICMP协议超时消息和目标不可达消息来实现的。和traceroute相关的ping则是用ICMP的"Echo request"和"Echo reply"消息来实现的。

ICMP部分的结构

报头

ICMP报头从IP报头的第160位开始(除非使用了IP报头的可选部分)。

ICMP协议结构

Type - ICMP的类型;

Code - 进一步划分ICMP的类型;例如,ICMP的目标不可达类型可以把这个位设为1至15等来表示不同的意思。

Checksum - 这个字段包含有从ICMP报头和数据部分计算得来的,用于检查错误的数据,其中数据部分的值视为0。

ID - 这个字段包含了ID值,在ECHO REPLY类型的消息中要返回这个字段。

Sequence - 这个字段包含一个序号,同样要在ECHO REPLY类型的消息中要返回这个字段。

填充数据

填充的数据紧接在ICMP报头的后面(以8位为一组):

Linux的 "ping"工具填充的ICMP除了8个8位元组的报头以外,还另外填充数据使得总大小为64字节。

Windows 的"ping.exe" 填充的ICMP协议除了8个8位元组的报头以外,还另外填充数据使得总大小为40字节

责任编辑:佟健 来源: 赛迪网
相关推荐

2011-03-16 11:17:56

IptablesICMP

2015-07-17 16:49:13

OpenStack开源云平台云计算

2010-07-07 17:17:23

协议组

2014-11-27 09:38:12

2011-06-24 14:34:56

SEO

2011-07-13 11:03:17

ASP

2011-05-31 10:14:28

协议IP网络地址

2011-05-31 10:14:19

协议TCPUDP

2011-05-31 10:54:12

协议IP进制

2011-05-31 10:14:21

协议TCPUDP

2011-05-31 10:14:24

协议IPARP

2022-07-22 11:43:12

交互动效产品体验用户

2018-11-23 11:22:02

UI栅格设计网页设计

2010-07-07 15:11:39

H.323协议

2013-06-26 09:51:28

无线标准无线网络802.11协议

2010-06-12 15:49:54

TCP IP协议基础知

2015-10-29 09:51:35

TCPIP网络协议

2023-03-29 14:58:17

Java元数据Java 注解

2010-01-14 14:12:42

网桥类型链路层

2009-12-21 13:03:06

向量路由协议
点赞
收藏

51CTO技术栈公众号