第16节 ICMP协议详解

1 ICMP概述

  1. 定义:ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。
  2. 控制消息:是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
  3. 作用:从技术角度来说,ICMP就是一个“错误探测与回报机制”,主要作为:
    1. 网络探测:ping
    2. 路由跟踪:tracert
    3. 错误反馈:不管是什么协议产生的数据帧,只要传输发生错误,就会触发ICMP协议。
  4. 地位:ICMP 是 TCP/IP 模型中网络层的重要成员,与 IP、ARP、RARP及 IGMP共同构成 TCP/IP 模型中的网络层。

2 报文结构及类型

2.1 报文结构

  • ICMP生成的报文主要由ICMP头与数据组成:
    • ICMP头由ICMP类型与代码组成。
    • 数据仅起到填充作用,无实际意义。

在这里插入图片描述

2.2 报文类型

2.2.1 差错报告报文

  • 用途:主要用来向IP数据报源主机返回一个差错报告信息,这个错误报告信息产生的原因是路由器或主机不能对当前数据报进行正常的处理,例如无法将数据报递交给有效的协议上层,数据报因为生存时间TTL为0而被删除等。
  • 类型及报文功能
    • 类型3:目标不可达
    • 类型4:源站抑制
    • 类型5:重定向(改变路由)
    • 类型11:数据报超时(由最后一个路由器向源主机发回报文)
    • 类型12:数据报参数错误

2.2.2 查询报文

  • 用途:用于一台主机向另一台主机查询特定的信息,通常查询报文都是成对出现的,即源主机发起一个查询报文,在目的主机收到该报文后,会按照查询报文约定的格式为源主机返回一个应答报文。
  • 类型及报文功能
    • 类型8或0:回送请求或应答
    • 类型10或9:路由器询问和通告
    • 类型13或14:时间戳请求或应答
    • 类型15或16:信息请求或应答
    • 类型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. 主机将 [类型为11、代码、数据] 进行ICMP封装后,生成ICMP报文,再封装IP包头,包头中TTL值为1,再封装帧头帧尾,发送数据帧;
  2. 数据帧到达第一个路由器后,路由器解封装后TTL减1等于0,数据帧丢弃,路由器发回应答信息(含有路由器的IP地址)。
  3. 主机收到信息后,再次生成TTL=2的数据帧,再次发送,这次数据帧可以达到第二个路由器,被第二个路由器丢弃后,收到应答信息(含第二个路由器的IP地址)。
  4. 依次类推,直到数据帧达到www.baidu.com所在IP。

4 ICMP攻击与抵御方法

4.1 攻击方法

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

4.2 抵御方法

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

5 总结

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

6 参考文献

  1. ICMP协议
  2. ICMP百科
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值