网站首页 > 文章精选 正文
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数据报文中类型(Type)字段为3,代码(Code)字段为0时,代表网络不可达。
校验和字段用于检查信息是否完整。
ICMP重定向
当路由器检测到一台机器使用的路由并不是最优的时候,他会给那台主机发送一个ICMP重定向报文,请求主机改变路由。
ICMP重定向过程:
小A要发送报文到小B发送一条数据,但是小A不知道该发给谁好,他就把信息发送给了默认网关端口,被指定默认网关的A路由器接收到这个数据包之后,发现把这个包丢给局域网内的其他B路由器会更快,路由器就会给小A发送一条Redirect消息,小A收到A
路由器的消息之后,小A知道把数据包给B路由器更快之后,重写路由表,再数据包给B路由器帮忙转发。
ICMP Echo
ICMP中的ping
ping命令时检测网络连通性的最常用手段。来检查机器之间是否连通,数据包往返花费多少时间。
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值来访问完沿途的所有交换设备。
过程:
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收到回送应答报文之后,停止发送数据包。通过罗列中途路由器返回的错误,了解了到达目标服务器中所经过的路由器信息了。
总结:
猜你喜欢
- 2024-12-25 阿里大佬熬夜奋战才总结出这篇文章:计算机网络分层\协议详解
- 2024-12-25 简介ICMP「大神路过」 icmp在哪
- 2024-12-25 物联网数据接入篇-网络层和数据传输层协议(3)
- 2024-12-25 网络世界中的侦察兵之ICMP(判断网络好坏、排查好帮手)
- 2024-12-25 ICMP协议是什么?在网络中又起到什么作用呢
- 2024-12-25 手把手教你手撸通讯协议(二)-网络的基础
- 2024-12-25 详细了解ICMP协议 icmp协议的工作原理
- 2024-12-25 TCP/IP分层(4层) tcp ip协议分层
- 2024-12-25 深入了解Ping命令后的工作原理——ICMP协议详解
- 2024-12-25 ICMP 是个啥破玩意? icmp是什么意思中文
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)