ICMP协议

ICMP(internet 报文控制协议)
目的:为了更有效的转发IP数据及提高成功交付的机会
实质:ICMP报文控制协议是为路由器和主机反馈差错和异常情况的工具
ICMP数据报分为两类:
1.ICMP差错报告报文(类型3、5、11、13等)
2.ICMP询问报文(类型0、8、13、14等)
ICMP数据包头结构:
在这里插入图片描述
ICMP数据包头包括类型字段,进一步识别某些类型代码字段,校验和以及可变字段一共8字节。
常见的ICMP类型:
1.终点不可达–ICMP的类型3
当路由器和主机不能交付数据报时,就向源点发送该类型报文。

2.时间超过–ICMP的类型11
当路由器收到TTL指为0的数据包时,路由器会将其丢弃,并向源点发送时间超过报文。当终点在预先设定的时间内不能接收到一个数据的全部数据报片时,就把已收到的数据报片全部丢弃,并向源点发送时间超过报文。

3.参数问题–ICMP的类型12
当路由器或主机收到的数据报的首部中字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。

4.回送请求和回答–ICMP的0或8类型
ICMP回请报文是由路由器或主机向一个特定的目的主机发出的询问。收到此报文的主机必须向源主机或路由器发送ICMP回送回答报文。可用来测试目的是否可达。

5.时间戳请求和回答–ICMP类型13或14
ICMP时间戳请求报文是请求某台主机或路由器回答当前的日期和时间。可用来时钟同步和时间测量(1900-1-1距今的秒数)

6.重定向–ICMP的类型5
ICMP的重定向报文被路由器用于通知主机去往指定目标网关,该网关是数据链路上的另一台路由器。
在这里插入图片描述
R2是PC1的默认网关,PC1到之前是通过R2和R3进行数据传输的,现在R2的上行链路出现了故障,无法通信了,但PC1是不知道的,它将去往R3的数据还是发给了R2,R2接到数据后发现去往R3通过R1可以到达,于是R2又将数据通过交换机发给了R1,通过R1到达R3(黑色线路)。这其中R2是经过同一接口将相同得数据接收再发送,对R2来说这是浪费资源,所以R2在将数据发给R1的同时会向PC1发送一个重定向报文,告诉PC1,你还要有去R3的数据直接给R1就行了(蓝色线路)。PC1接收到重定向报文后会修改R1为自己的默认网关。

重定向报文数据包:
在这里插入图片描述

所有的ICMP差错报告报文中的数据字段都具有相同的格式,把收到的需要进行差错报告的IP数据报的首部和数据字段的前8个字节提取,做为ICMP报文的数据段。再加上相应的ICMP头部就构成了ICMP差错报告数据包。

ICMP针对以下情况不发送差错报告:
1.对于ICMP差错报文不发
2.对于第一个分片已发过错误报告的数据报片的后续数据报片不再重复发送
3.对于具有多播地址的数据报片不发
4.对具有特殊地址的数据报片(例如127.0.0.0)

ICMP应用
1.PING(Packet Internet Groper)分组网间探测
用来测试两台设备之间的连通性
请求报文:
在这里插入图片描述
响应报文:
在这里插入图片描述
Ping 是应用层直接使用网络的一个例子

2.Traceroute
它是用来跟踪一个分组从源点到终点的路径
过程:
Traceroute 从源主机向目的主机发送一连串的IP数据报,数据报中封装的是无法交付的UDP用户数据报,第一数据报P1的TTL值为1.当P1到达路径上的第一个路由器R1时,R1先收下它,接着把TTL值减1,由于TTL值等于0了,R1就把P1丢弃,并向源主机发送一个ICMP时间超过报文。
接着源主机再发TTL值为2的P2,R2丢弃P2后向源主机发送时间超过报文,这样一直继续,直到数据报到达目标主机,此时到达目标主机的数据报的TTL为1.主机不转发数据报,也不把TTL值减1.但因为IP数据报中封装的是无法交付的运输层的UDP用户数据报,因此目的主机会向源主机发送ICMP终点不可达的差错报告保文。
通过这样的过程,源主机就知道了到达目的主机所经过的路由器IP地址,以及到达每个路由器的往返时间。在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值