备注:摘自科学出版社出版的《网络百科全书(原书第二版)》,作者【美】Mirch Tulloch,Ingrid Tulloch,邓云佳 等 译

请尊重原作者劳动成果,此文仅可作为学习研究之用,如果您看到此文侵犯了您的版权,请联系我,我回立即将该文删除,谢谢

ICMP (Internet Control Message Protocol)

    Internet控制信息协议,是一个多用途的TCP/IP网络层协议

概述:
    Internet控制信息协议(ICMP)是一个工作于网络层的简单的TCP/IP协议,IP协议也工作于这一层。IP协议的主要功能是使网络可以发送和连接数据包,而ICMP协议与之相比则功能有限,主要包括:
  • 测试与远程主机的TCP/IP连接以确保他们处于活跃状态(用ping命令)
  • 对路由器和其他主机发出简单的控制请求
  • 从路由器和其他主机报告错误情况
    实际上,ICMP协议通过为IP协议提供控制信息和错误报告来弥补IP协议的不足,ICMP在RFC 792和1700中定义。
体系结构:
    ICMP信息封装在IP数据包中在网络上进行传输。ICMP数据包是面向无连接的,不提供传输保证。ICMP支持广播,但与TCP和UDP不同,它们都是工作于更高的Internet层上的,ICMP也不使用端口号。
    ICMP信息的功能由它的信息头的前两个字节决定,通常的几种ICMP数据包类型有:
  • 回复应答(ICMP类型0):ping命令用到该类型的数据包以测试TCP/IP连接;
  • 目标不可达 (ICMP类型3):用以知识目标网络、主机或者端口不可达;
  • 源站抑制 (ICMP类型4):当路由器处理IP数据的速度不够快时,会发送此类的消息。它的意思是让发送方降低发送数据的速率。Microsoft Windows NT或Windows 2000主机可以通过降低数据传输率来响应这种类型的消息;
  • 重定向消息 (ICMP类型5):用于将主机重新定向到一个不同的网络路径,该消息告诉路由器对于该数据包可以忽略它内部的路由表项;
  • 回复请求(ICMP类型8):ping命令用该类型的数据包测试TCP/IP连接;
  • 路由器通告 (ICMP类型9):以随机的时间间隔发送该数据包以响应ICMP路由器请求数据包;
  • 路由器请求 (ICMP类型10):路由器发送该数据包来请求路由器通告的更新;
  • 超时 (ICMP类型11):指示数据包由于通过了太多的网段,其的生存时间(TTL)已经过期,Tracert命令用此消息来测试本地和远程主机之间的多个路由器;
  • 参数问题 (ICMP类型12):用以指示处理IP数据包头时出错。
问题:
    因为ICMP的广播特性,他很容易遭受到网络黑客的攻击,许多类型的拒绝服务(DoS)攻击就是基于ICMP的,包括Smurf攻击、TFN攻击、Loki攻击和WinFreeze攻击。例如,ICMP的重定向数据包会更该路由器的路由表,因此有时黑客就会发送伪造的ICMP重定向报文以扰乱路由器的正常工作,从而实现DoS攻击。一下的所有情况都发生时,路由器通常会发送ICMP重定向报文:
  • 路由器被配置为发送ICMP重定向报文
  • 路由器输入数据包的接口与输出路由器的接口相同
  • 数据源子网的IP地址与下一网段的IP地址相同
  • IP数据包不是由数据源发送的
备注:摘自科学出版社出版的《网络百科全书(原书第二版)》,作者【美】Mirch Tulloch,Ingrid Tulloch,邓云佳 等 译