第16节 ICMP协议—Internet控制报文协议

1 ICMP概述

(1)定义:ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。
(2)控制消息:是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
(3)作用:从技术角度来说,ICMP就是一个“错误探测与回馈机制”,主要作为:

  • 1)网络探测:ping
  • 2)路由跟踪:tracert或traceroute
  • 3)错误反馈:不管是什么协议产生的数据帧,只要传输发生错误,就会触发ICMP协议。

(4)地位:ICMP 是 TCP/IP 模型中网络层的重要成员,与 IP、ARP、RARP及 IGMP共同构成 TCP/IP 模型中的网络层。

2 ICMP报文结构及ICMP头中的类型字段

2.1 报文结构

ICMP生成的报文主要由ICMP头数据组成:

  • 1)ICMP头ICMP类型字段与代码组成,用来表明是哪种探测或回馈机制。
  • 2)数据仅起到填充作用,无实际意义,由ICMP协议生成。有时候是一堆0或者从A~Z重复。
    在这里插入图片描述

2.2 报文类型

2.2.1 差错报告报文

(1)用途:主要用来向IP数据包源主机返回一个差错报告信息,这个错误报告信息产生的原因是路由器或主机不能对当前数据报进行正常的处理,例如无法将数据报递交给有效的协议上层,数据报因为生存时间TTL为0而被删除等。
(2)ICMP类型字段及报文功能

  • 1)类型3:目标不可达
  • 2)类型4:源站抑制
  • 3)类型5:重定向(改变路由)
  • 4)类型11:TTL超时(由最后一个路由器向源主机发回报文)
  • 5)类型12:数据报参数错误

2.2.2 查询报文

(1)用途:用于一台主机向另一台主机查询特定的信息,通常查询报文都是成对出现的,即源主机发起一个查询报文,在目的主机收到该报文后,会按照查询报文约定的格式为源主机返回一个应答报文。
(2)ICMP类型字段类型及报文功能

  • 1)类型8或0:ping请求或应答
  • 2)类型10或9:路由器询问和通告
  • 3)类型13或14:时间戳请求或应答
  • 4)类型15或16:信息请求或应答
  • 5)类型17或18:地址掩码请求或应答

2.3 类型及代码组合一览表

TYPECODEDescriptionQueryError
00Echo Reply——回显应答(Ping应答)x
30Network Unreachable——网络不可达x
31Host Unreachable——主机不可达x
32Protocol Unreachable——协议不可达x
33Port Unreachable——端口不可达x
34Fragmentation needed but no frag. bit set——需要进行分片但设置不分片比特x
35Source routing failed——源站选路失败x
36Destination network unknown——目的网络未知x
37Destination host unknown——目的主机未知x
38Source host isolated (obsolete)——源主机被隔离(作废不用)x
39Destination network administratively prohibited——目的网络被强制禁止x
310Destination host administratively prohibited——目的主机被强制禁止x
311Network unreachable for TOS——由于服务类型TOS,网络不可达x
312Host unreachable for TOS——由于服务类型TOS,主机不可达x
313Communication administratively prohibited by filtering——由于过滤,通信被强制禁止x
314Host precedence violation——主机越权x
315Precedence cutoff in effect——优先中止生效x
40Source quench——源端被关闭(基本流控制)
50Redirect for network——对网络重定向
51Redirect for host——对主机重定向
52Redirect for TOS and network——对服务类型和网络重定向
53Redirect for TOS and host——对服务类型和主机重定向
80Echo request——回显请求(Ping请求)x
90Router advertisement——路由器通告
100Route solicitation——路由器请求
110TTL equals 0 during transit——传输期间生存时间为0x
111TTL equals 0 during reassembly——在数据报组装期间生存时间为0x
120IP header bad (catchall error)——坏的IP首部(包括各种差错)x
121Required options missing——缺少必需的选项x
130Timestamp request (obsolete)——时间戳请求(作废不用)x
140Timestamp reply (obsolete)——时间戳应答(作废不用)x
150Information request (obsolete)——信息请求(作废不用)x
160Information reply (obsolete)——信息应答(作废不用)x
170Address mask request——地址掩码请求x
180Address mask reply——地址掩码应答

3 用法

3.1 命令

ping 10.1.1.1		#探测目标IP地址
ping www.baidu.com	#探测域名,DNS会将域名转成IP
tracert 10.1.1.1	#跟踪报文路径,适用于Windows系统
traceroute 10.1.1.1	#跟踪报文路径,适用于Linus系统或路由器

3.2 tracert原理

以tracert www.baidu.com为例,描述命令tracert工作原理:

(1)主机将 [类型为8、代码、数据] 进行ICMP封装后,生成ICMP报文,再封装IP包头,包头中TTL值为1,再封装帧头帧尾,发送数据帧;
(2)数据帧到达第一个路由器后,路由器解封装后TTL减1等于0,数据帧被丢弃,路由器需要向主机发送错误反馈信息( 首先封装ICMP报文[类型为11、代码、数据] ,再封装IP包头[自己的IP为源IP地址,主机的IP为目标IP地址]),最后封装帧头帧尾)。
(3)主机收到错误反馈信息后,就知道了第一站点的IP地址。
(4)主机再次生成TTL=2的数据帧,再次发送,这次数据帧可以达到第二个路由器,被第二个路由器丢弃后,收到错误反馈信息(含第二个路由器的IP地址)。
(5)依次类推,直到数据帧达到www.baidu.com所在IP。

4 ICMP攻击与抵御方法

4.1 攻击方法

(1)死亡之Ping:可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发起“Ping of Death”攻击。“Ping of Death” 攻击的原理是:如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。(操作系统已经取消了发送ICMP数据包的大小的限制,解决了这个漏洞)
(2)ICMP风暴:此外,向目标主机长时间、连续、大量地发送ICMP数据包,也会最终使系统瘫痪。大量的ICMP数据包会形成“ICMP风暴”,使得目标主机耗费大量的CPU资源处理,疲于奔命。

4.2 抵御方法

(1)死亡之Ping:对于“Ping of Death”攻击,可以采取两种方法进行防范:第一种方法是在路由器上对ICMP数据包进行带宽限制,将ICMP占用的带宽控制在一定的范围内,这样即使有ICMP攻击,它所占用的带宽也是非常有限的,对整个网络的影响非常少;第二种方法就是在主机上设置ICMP数据包的处理规则,最好是设定拒绝所有的ICMP数据包。
(2)设置ICMP数据包处理规则:方法也有两种,一种是在操作系统上设置包过滤,另一种是在主机上安装防火墙。

5 总结

(1)了解ICMP的含义及作用;
(2)掌握ICMP报文结构;
(3)了解ICMP报文类型以及类型代码一览表;
(4)理解tracert命令工作原理;
(5)了解ICMP协议的攻防方法。

参考文章

[1] 《ICMP协议
[2] 《ICMP百科
[3] 《ICMP协议详解
[4] 视频传送门

版权声明:本文为CSDN博主「Fighting_hawk」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Fighting_hawk/article/details/122325763

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值