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

网际控制报文协议ICMP

网际控制报文协议ICMP

一.网际控制报文协议ICMP概述

  • 为了更有效地转发IP数据报以及提高IP数据报交付成功的机会,TCPIP体系结构的网际层使用了网际控制报文协议(Internet Control Message Protocol,ICMP)[RFC 792].
  • 主机或路由器使用ICMP来发送差错报告报文询问报文
  • ICMP报文被封装在IP数据报中发送
  • ICMP的典型应用
    • 分组网间探测PING
    • 跟踪路由traceroute

二.ICMP报文类型

(一) 差错报告报文

差错报告报文分为五大种
1.终点不可达
当路由器或主机不能交付IP数据报时,就向源点发送终点可达报文。具体可再根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等13种。
在这里插入图片描述

2.源点抑制
当路由器或主机由于拥塞而丢弃IP数据报时,就向发送该IP数据报的源点发送源点抑制报文,使源点知道应当把IP数据报的发送速率放慢。
在这里插入图片描述

3.时间超过

  • 当路由器收到一个目的IP地址不是自己的IP数据报时,会将其首部中生存时间TTL字段的值减1。若结果不为0,则路由器将该数据报转发出去;若结果为0,路由器不但要丢弃该数据报,还要向发送该IP数据报的源点发送时间超过(超时)报文
  • 另外,当终点在预先规定的时间内未能收到一个数据报的全部数据报分片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过(超时)报文

在这里插入图片描述

4.参数问题
当路由器或目的主机收到IP数据报后,根据其首部中的检验和字段的值发现首部在传送过程中出现了误码,就丢弃该数据报,并向发送该数据报的源点发送参数问题报文

5.改变路由(重定向)
路由器把改变路由报文发送给主机,让主机知道下次应将IP数据报发送给另外的路由器,这样可以通过更好的路由到达目的主机

以下情况不应发送ICMP差错报告报文:

  • 对ICMP差错报告报文不再发送ICMP差错报告报文。
  • 对第一个分片的IP数据报片的所有后续数据报片都不发送ICMP差错报告报文
  • 对具有多播地址的IP数据报都不发送ICMP差错报告报文。
  • 对具有特殊地址(例如127.0.0.0或0.0.0.0)的IP数据报不发送ICMP差错报告报文。

(二) 询问报文

常用的ICMP询问报文有以下两种:
1.回送请求和回答
由主机或路由器向一个特定的目的主机或路由器发出。
收到此报文的主机或路由器必须给发送该报文的源主机或路由器发送ICMP回送回答报文。
这种询问报文用来测试目的站是否可达以及了解其有关状态

2.时间戳请求和回答
用来请求某个主机或路由器回答当前的日期和时间。
在ICMP时间戳回答报文中有一个32比特的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。
这种询问报文用来进行时钟同步和测量时间

ICMP的两个典型应用

(一)分组网间探测PING

  • 分组网间探测PING用来测试主机或路由器之间的连通性
    • PING是TCPIP体系结构的应用层直接使用网际层ICMP的一个例子,它并不使用运输层的TCP或UDP。
    • PING应用所使用的ICMP报文类型为回送请求和回答

(二)跟踪路由

  • 跟踪路由应用traceroute,用于探测IP数据报从源主机到达目的主机要经过哪些路由器
  • 在不同操作系统中,traceroute应用的命令和实现机制有所不同:
    • 在UNIX版本中,具体命令为“traceroute”,其在运输层使用UDP协议,在网络层使用ICMP报文类型只有差错报告报文。
    • 在Windows版本中,具体命令为“tracert”,其应用层直接使用网际层的ICMP协议,所使用的ICMP报文类型有回送请求和回答报文以及差错报告报文。

本节总结:
在这里插入图片描述

相关文章:

  • Spring Boot整合Swagger
  • 【SOC基础】单片机学习案例汇总 Part2:蜂鸣器、数码管显示
  • 【C++心愿便利店】No.11---C++之string语法指南
  • Vscode LinuxC++环境配置
  • ElasticSearch集群架构实战及其原理剖析
  • 好物周刊#29:项目管理软件
  • 概念解析 | Retinex理论
  • 玩了一下 Jenkins,最新版本 + JDK11
  • 项目实战:分页功能实战
  • Java 正则表达式数字篇
  • 1047. 删除字符串中的所有相邻重复项
  • 线性代数 第二章 矩阵
  • MyBatis 动态 SQL
  • 数据结构——基于顺序表实现通讯录
  • Kafka基本原理、生产问题总结及性能优化实践 | 京东云技术团队
  • YOLO算法改进6【中阶改进篇】:depthwise separable convolution轻量化C3
  • JAVA整理学习实例(一)面向对象
  • centos 搭建 zookeeper 高可用集群
  • AI:48-基于卷积神经网络的气象图像识别
  • Web测试是什么,有何特点?
  • 媒体刊文:“假官号”层出不穷,平台要当好把关人
  • 4名中学生同服处方药后身体不适,一心堂一药店未凭处方售药被罚1万元
  • 外交部:将持续便利中外人员往来,让“中国游”金字招牌更加闪耀
  • 19世纪的“表征之场”:弗洛伊德的精神分析椅
  • 陕西:未来一周高温持续,继续发布冬小麦干热风风险预警
  • 人民网:激发博物馆创新活力,让“过去”拥有“未来”