icmp协议包含哪些(网际控制协议全攻略)

简介

ICMP协议, Internet Control Message Protocol 网际控制协议,是一个传输层协议,其网络层协议为IP协议,在IP数据包头中,ip包的protocl位为1。

主要用途

ICMP协议用于在IP主机 、 路由器之间传递控制消息。控制消息可以检测网络是否畅通、主机 是否可达、 路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户信息,但是对于用户数据的传递起着重要的作用。

ICMP报文格式

ICMP报头格式

ICMP报文包含在ip数据报中,IP报头在ICMP报文的最前面。一个ICMP报文包括IP报头(至少20字节)、ICMP报头(至少八字节)和ICMP报文(属于ICMP报文的数据部分)。当IP报头中的协议字段值为1时,就说明这是一个ICMP报文。ICMP报头如下图所示。

icmp协议包含哪些(网际控制协议全攻略)(1)

ICMP报文格式

1.ICMP类型

0 响应应答(ECHO-REPLY)

3 不可到达

4 源抑制

5 重定向

8 响应请求(ECHO-REQUEST)

11 超时

12 參数失灵

13 时间戳请求

14 时间戳应答

15 信息请求(*已作废)

16 信息应答(*已作废)

17 地址掩码请求

18 地址掩码应答

2.ICMP代码

128返回请求(Echo Request)报文

129返回应答(Echo Reply)报文

130组成员查询(Group Membership Query)

131组成员报告(Group Membership Report)

132组成员结束(Group Membership Termination)

133路由器请求(Router Solicitation)

134路由器公告(Router Advertisement)

135邻机请求(Neighbor Solicitation)

136邻机公告(Neighbor Advertisement)

137 重定向(Redirect)

3.校验和

不介绍

4.具体内容

虽然说不同的使用方式有不同的内容,但是一般作为检测网络是否联通使用的话,一般的内容为08:09:0a:0b:0c:0d:0e:0f:10:11:12:13:14:15:16:17:18:19:1a:1b:1c:1d:1e:1f:20:21:22:23:24:25:26:27:28:29:2a:2b:2c:2d:2e:2f:30:31:32:33:34:35:36:37

当然,不同系统有不同的内容,但是这种方式使用内容没有实际意义。

ICMP具体应用

icmp协议包含哪些(网际控制协议全攻略)(2)

1.监测网路是否畅通

例如监测我们的主机到百度的连通性

icmp协议包含哪些(网际控制协议全攻略)(3)

PING 百度服务器

可以看的出来,我们使用的命令是ping baidu.com,根据结果显示,百度的cdn的ip地址是220.181.57.216,同时还可以看到ttl和延迟,ttl值为55说明我们经过了9台路由器。

ping命令的高级用法

ping -c count

Stop after sending (and receiving) count ECHO_RESPONSE packets.

If this option is not specified, ping will operate until inter-

rupted. If this option is specified in conjunction with ping

sweeps, each sweep will consist of count packets.

ping -c 制定次数,代表发送制定次数的icmp包

例如:ping -c 3 baidu.com

icmp协议包含哪些(网际控制协议全攻略)(4)

-m ttl

Set the IP Time To Live for outgoing packets. If not specified, the kernel uses the value of thenet.inet.ip.ttl MIB variable.

设置ip包头的ttl生存周期 ttl

例如:ping -m 5 baidu.com

icmp协议包含哪些(网际控制协议全攻略)(5)

我们发现,由于设置ttl值为5,因此数据包并未达到百度的服务器,而是在中途由于ttl值减少至0而发生了超时

icmp协议包含哪些(网际控制协议全攻略)(6)

从抓到的包中也可以看出

-t timeout

Specify a timeout, in seconds, before ping exits regardless of how many packets have been received.

-W waittime

Time in milliseconds to wait for a reply for each packet sent. If a reply arrives later, the packet is not printed as replied, but considered as replied when calculating statistics.

-t 设置超时时间

-w 设置等待时间

-s packetsize

Specify the number of data bytes to be sent. The default is 56, which translates into 64 ICMP data

bytes when combined with the 8 bytes of ICMP header data. This option cannot be used with ping

使用 -s参数设置包的大小,默认为 56

例如 ping -s 1 baidu.com

icmp协议包含哪些(网际控制协议全攻略)(7)

可以看出,这个ICMP数据段的Data属性的大小为1

ICMP协议应用2

traceroute命令

traceroute命令用于追踪数据包在网络上的传输时的全部路径,它默认发送的数据包大小是40字节。

通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。

traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其ip地址。

icmp协议包含哪些(网际控制协议全攻略)(8)

工作原理

首先,traceroute送出一个TTL是1的IP 数据包到目的地,当路径上的第一个路由器收到这个数据包时,它将TTL减1。此时,TTL变为0,所以该路由器会将此数据包丢掉,并送回一个「ICMP time exceeded」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),tracert 收到这个消息后,便知道这个路由器存在于这个路径上,接着traceroute 再送出另一个TTL是2 的数据包,发现第2 个路由器...... traceroute 每次将送出的数据包的TTL 加1来发现另一个路由器,这个重复的动作一直持续到某个数据包 抵达目的地。当数据包到达目的地后,该主机则不会送回ICMP time exceeded消息,一旦到达目的地,由于tracert通过UDP数据包向不常见端口(30000以上)发送数据包,因此会收到「ICMP port unreachable」消息,故可判断到达目的地。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页