当前位置: 首页 > news >正文

计算机网路-ICMP

一、 ICMP 是什么?它的定位是什么?

ICMP 是一种网络层协议,用于在IP主机、路由器之间传递控制消息

可以把它想象成互联网的 “信令系统” 或 “故障诊断与反馈机制”

  • 核心定位:IP协议本身是“尽力而为”的、无连接的,它不提供差错报告或控制机制。如果IP数据包在传输过程中失败了(如目标不可达、超时),IP协议自身无法将这一情况通知源发送方。ICMP 就是为了弥补IP协议的这一不足而设计的

  • 重要关系:ICMP 虽然工作在网络层,但它不是IP的上层协议,也不是IP的下层协议,而是IP协议的辅助协议。ICMP报文是被封装在IP数据包中进行传输的。


二、 ICMP 的主要作用和功能

ICMP 的功能非常明确,主要分为两大类:

1. 差错报告

当IP数据包在传输过程中发生错误时,向数据包的源发送方报告错误类型。这是ICMP最核心的功能。

常见的差错报告类型包括:

  • 目的不可达:当路由器或主机无法将数据包交付到最终目的地时,会向源发送方发送一个“目的不可达”消息。

  • 超时

    • TTL超时:IP数据包的生存时间字段减到0时,路由器会丢弃该包并发送一个ICMP超时消息。这主要用于traceroute命令。

    • 分片重组超时:接收方等待一个数据包的所有分片时,如果在一定时间内没有收齐,会发送超时消息。

  • 参数问题:当IP数据包的头部字段有错误(如校验和错误),导致路由器无法处理时,会发送此消息。

  • 源抑制:一种早期的简单拥塞控制机制。当路由器或目标主机缓冲区满时,会发送源抑制消息,要求发送方降低发送速率。注意:现代网络已很少使用此功能,而是依赖TCP等传输层协议进行拥塞控制。

2. 网络探询与诊断

用于测试网络连通性、查询主机信息等。这是我们日常网络故障排查中最常接触到的功能。

常见的查询报文类型包括:

  • 回送请求与回送应答:这就是我们最熟悉的 ping 命令的基础。一台主机向另一台主机发送“回送请求”,如果目标主机收到,则会回复一个“回送应答”。用于测试两台主机之间的网络是否通畅。

  • 时间戳请求与应答:用于同步两台主机的时间或测量网络延迟的变体。

  • 地址掩码请求与应答:当一个主机不知道自己所处的网络的子网掩码时,可以向路由器查询。


三、 ICMP 报文格式

ICMP报文虽然类型很多,但其格式是统一的,非常简单:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     类型 Type     |     代码 Code     |       校验和 Checksum       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           报文主体                             |
|                          (可变长度)                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 类型:1个字节,标识ICMP报文的大类。例如,类型8是回送请求,类型0是回送应答,类型3是目的不可达。

  • 代码:1个字节,在同一个类型下,进一步细分具体的原因。例如,在“目的不可达”(类型3)中,代码0表示网络不可达,代码1表示主机不可达,代码3表示端口不可达。

  • 校验和:2个字节,用于检验ICMP报文在传输过程中是否出错。

  • 报文主体:可变长度,其内容取决于ICMP报文的类型和代码。通常,它会包含引发该ICMP报文的原始IP数据包的头部和前8个字节(这8个字节通常包含了TCP或UDP的端口号信息),以便源主机能够确定是哪个应用程序发出的数据包出了问题。


四、 常见ICMP报文类型实例详解

1. Ping 程序(类型 8 和 类型 0)
  • 过程

    1. 主机A执行 ping 192.168.1.1

    2. 主机A构建一个 类型=8(回送请求) 的ICMP报文。

    3. 该ICMP报文被封装在一个IP数据包中,目标地址是 192.168.1.1

    4. 主机B收到后,识别出是回送请求,则构建一个 类型=0(回送应答) 的ICMP报文,发回给主机A。

    5. 主机A收到回送应答,计算往返时间,并显示“来自 192.168.1.1 的回复”。

2. Traceroute 程序(利用类型 11:超时)
  • 原理traceroute 巧妙地利用了IP头中的 TTL 字段。

    1. traceroute 首先向目的地发送一个TTL=1的UDP数据包(或ICMP请求)。

    2. 第一个路由器收到后,将TTL减1变为0,于是丢弃该包,并向源发送方发送一个 类型=11(超时) 的ICMP报文。源主机由此知道了第一个路由器的地址。

    3. 接着,发送TTL=2的数据包,它会到达第二个路由器后超时,第二个路由器发回ICMP超时报文。

    4. 重复此过程,直到数据包到达最终目的地。目标主机会回复一个“端口不可达”(类型3,代码3)的ICMP报文(因为traceroute使用了一个不常用的高端口),traceroute程序据此知道路径追踪完成。

3. 目的不可达(类型 3)
  • 场景:当你尝试访问一个关闭的Web服务时。

    1. 你的电脑向服务器80端口发送一个TCP SYN包。

    2. 数据包成功到达服务器,但服务器上没有进程在监听80端口。

    3. 服务器的TCP/IP协议栈会回复一个 类型=3(目的不可达),代码=3(端口不可达) 的ICMP报文给你的电脑。

    4. 你的操作系统收到后,会告诉你“连接被拒绝”。


五、 ICMP 的网络安全考量

ICMP虽然非常有用,但也可能被恶意利用:

  • ICMP 侦察:攻击者可以使用ping扫描来发现网络中存在的主机。

  • ICMP 重定向攻击:恶意主机可以发送伪造的ICMP重定向消息(类型5),试图改变受害主机的路由表,从而实施中间人攻击。

  • 拒绝服务攻击:如著名的 Smurf 攻击,攻击者伪造源IP地址为受害者,然后向一个网络的广播地址发送大量ICMP请求,该网络的所有主机都会向受害者回复应答,耗尽受害者的资源。

因此,在许多网络的安全策略中,会有选择地过滤某些类型的ICMP报文(如禁止外部网络ping通内部主机),但这需要在安全和可管理性之间做出平衡。

总结

方面详细说明
定位网络层的辅助协议,IP协议的“错误报告和诊断系统”。
封装ICMP报文被封装在IP数据包的数据部分进行传输。
核心功能差错报告(如目的不可达、超时)和 查询诊断(如ping)。
工作方式由网络设备(路由器、主机)在遇到问题时主动触发,向源IP地址发送反馈。
重要性是网络连通性测试、路径追踪和故障排除的不可或缺的工具,是互联网稳定运行的基础。

简单来说,没有ICMP,互联网就会像一个没有仪表盘和故障灯的汽车——你能开,但出了问题你根本不知道原因在哪里。ping 和 traceroute 这两个最基础的网络工具,正是ICMP协议能力的直接体现。

http://www.dtcms.com/a/408687.html

相关文章:

  • 怎么在四川建设厅网站上进行劳务合同备案网页设计怎么做网站
  • 做推广的网站微信号长沙网络推广只选智投未来
  • 西安网站定制开发会员充值网站怎么做
  • 公司介绍网站源码杭州网站公司设计
  • 建筑公司网站功能表新吴区推荐做网站电话
  • 外链的论坛网站wordpress 后台登陆不进去
  • 佛山市企业网站建设报价许昌抖音推广公司
  • 素材网站源码天元建设集团有限公司商票拒付
  • 石家庄裕华区网站建设如何创建网站服务器地址
  • 长沙电商网站开发蛋糕网站模板
  • 大连企业建设网站石家庄网络科技有限公司
  • 中国建设招标网是什么网站ecommercial+wordpress
  • 苏州做网站建设seo排名如何优化
  • 闵行区 网站制作网站制作带优化
  • 如何做网站menu菜单wordpress主题 cms
  • h5网站建设功能计划表肇庆网站开发哪家专业
  • 外贸网站faq湖南建设监理报名网站
  • 用vs2012做asp网站大庆网站建设公司
  • 大型门户网站wordpress媒体主题
  • 自己编写代码建设微网站义乌网络营销
  • 怎么创立自己的网站广州新公司网站建设
  • 可商用的免费素材网站wordpress 数据库导入数据库文件
  • 网站图解图片是用什么软件做的软件外包价格一般多少
  • 个人做商机网站如何盈利专业手机网站建设推荐
  • 怎么做无损mp3下载网站网址大全2345qiren
  • 网站文章优化怎么做网站推广意识薄弱
  • 高校图书馆网站的建设方案做美食软件视频网站有哪些
  • 制作微信网站模板php网站开发最新需求
  • 湖北省平安建设网站建设网站需要做的工作
  • 申请好域名后 怎么做网站大学网站建设论文