icmp协议组成要素 网工必看ICMP协议概述

ICMP协议

ICMP(Internet控制消息协议)是IP协议的辅助协议。ICMP协议用来传递网络设备之间的查错和控制信息,起到收集各种网络信息、诊断和排除网络故障的作用,大大提升了IP数据报文交互成功的机会。

ICMP功能大致分为两类:差错通知和信息查询

差错通知:IP数据包在被目的主机处理的过程中发生了什么错误。ICMP传送该错误和错误原因给源主机。

信息查询:信息查询是发送方主机向其他主机查询信息的时候使用的,可以确认目标主机IP、调查网络子网掩码、获取其他机器时间信息等等。

ICMP是封装在IP数据包中,当IP报文头部的Protocol关键字为1时便代表ICMP协议。虽然ICMP是控制IP的协议,但是ICMP的本身也是作为IP的数据进行传输和搬运的。

ICMP的格式

用来传送ICMP报文的IP数据包上有很多字段。协议、源IP地址、目的IP地址、TTL这四个字段封装在了IP报文的首部。类型(Type)、代码(Code)、校验和这三个字段封装在了ICMP的数据部分。其中最重要的是类型和、代码两个字段。

ICMP的格式取决于类型和代码两个字段,类型字段为消息类型,代码字段包含该消息类型饿具体参数。

icmp协议组成要素 网工必看ICMP协议概述(1)

例如:当主机检测到ICMP数据报文中类型(Type)字段为3,代码(Code)字段为0时,代表网络不可达。

icmp协议组成要素 网工必看ICMP协议概述(2)

校验和字段用于检查信息是否完整。

ICMP重定向

当路由器检测到一台机器使用的路由并不是最优的时候,他会给那台主机发送一个ICMP重定向报文,请求主机改变路由。

ICMP重定向过程:

小A要发送报文到小B发送一条数据,但是小A不知道该发给谁好,他就把信息发送给了默认网关端口,被指定默认网关的A路由器接收到这个数据包之后,发现把这个包丢给局域网内的其他B路由器会更快,路由器就会给小A发送一条Redirect消息,小A收到A

路由器的消息之后,小A知道把数据包给B路由器更快之后,重写路由表,再数据包给B路由器帮忙转发。

ICMP Echo

ICMP中的ping

Ping命令时检测网络连通性的最常用手段。来检查机器之间是否连通,数据包往返花费多少时间。

icmp协议组成要素 网工必看ICMP协议概述(3)

ICMP中ping命令的请求过程:

1.主机小A向目标服务器发送回送请求报文(类型8,代码0,Echo Request),这个回送报文,除了类型和代码两个字段,还追加了标识符和序号两个16位的字段。标识符再应用程序执行期间都填入相同的值;序号中,每送出一个报文,序号就加1。

2.服务器收到回送请求报文之后,向小A发送回送应答报文(类型0,代码0,Echo Reply),除了类型和代码,其他的数据部分都原封不动的发送回去给小A,小A收到回送应答报文之后,确定目标服务器是正在工作的

Ping命令不能与对方连通的原因:

1.目标服务器不存在

2.数据包交流上时间太长而认定超时

3.服务器不回答

ICMP中的tracert命令

tracert命令用于调查与目的主机通信的所有经过的地址,跟ping命令一样,也是ICMP中的典型代表之一。

为什么能够实现路由跟踪,是通过修改TTL值来访问完沿途的所有交换设备。

icmp协议组成要素 网工必看ICMP协议概述(4)

过程:

1.小A再收到执行tracert命令后,向目的服务器发送IP数据包,此数据包与其他ping命令数据包一致,唯一不同的就是将TTL(生存时间)值设置为1。

路由器每传送一次数据包TTL的值就会减一,将TTL为0时就会丢弃该数据包。

2.路由器丢弃数据包的时,会返回给小A一个超时报文(类型字段11,代码字段0)来通知超时,小A收到超时报文之后也知道对方时根据自己超时请求发送的数据包,记录下返回数据包的IP信息之后,将原报文TTL加1,再进行发送,重复工作,直到到达目标服务器。

3.每次增加一个TTL数值,直到服务器收到该数据包。服务器就算收到TTL为1的数据包也不会丢掉,在收到数据包之后,服务器再给小A反馈回送应答报文(类型0,代码0),小A收到回送应答报文之后,停止发送数据包。通过罗列中途路由器返回的错误,了解了到达目标服务器中所经过的路由器信息了。

总结:

icmp协议组成要素 网工必看ICMP协议概述(5)

,

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

    分享
    投诉
    首页