首页 > 其他分享 >ICMP协议说明-笔记

ICMP协议说明-笔记

时间:2023-03-22 18:31:38浏览次数:47  
标签:协议 主机 报文 笔记 发送 IP ICMP 路由器

ICMP协议说明-笔记

ICMP的作用:

​ ICMP是Internet控制报文协议,主要是传递控制信息的,而且是无连接的协议。当遇到IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。我们在网络中经常会使用到ICMP协议,比如我们经常使用的用于检查网络通不通的Ping命令,这个Ping的过程实际上就是ICMP协议工作的过程。还要其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。

Ping 命令:

​ Ping命令是排除设备访问故障的一个非常常见的方法。它使用一系列的 Internet 控制消息协议 (ICMP) 回声消息以确定以下内容: ● 远程主机是处于活动还是非活动状态。 ● 与主机通信中的往返延迟。 ● 数据包丢失。 ping命令第一发送一个响应请求包到地址,然后等待回复。只有在回声请求到达目标,并且目的地能得到ECHO回复在一个预定时间内的情况下,ping 才是成功的。 所以,回声请求主要就是增对ping这个过程的,能让ping过程知道设备是否能接受到包。

ICMP----网际控制报文协议:

为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP(Internet Control Message Protocol)。 主机或路由器使用ICMP来发送差错报文和询问报文。ICMP不是高层协议,二十网际层(IP层)的协议。ICMP报文被封装在IP数据报中发送。 TTL:生存时间----->发送数据报中会带有TTL,没经过一个服务器,到达接收主机时都会做一个生存时间减一的操作。 意义:这样的用意是为了防止数据报一直在网络中传输。

差错报文

例1:差错报告报文-主机与路由器:

ICMP-差错报告TTL.png 主机H1中的某个应用进程要给主机H2发送IP数据报,在封装该数据报时将首部的TTL时间设置成了1,因为两台主机不在同一网络中,所以数据报需要经过网关R进行转发,路由器R在接收到该IP数据报之后,将其TTL的值做减一操作,这时TTL(生存时间)为0,这意味着该IP数据报的生存时间结束了,然后路由器R会将该IP数据报进行丢弃,并向发送该IP数据报的源主机发送一个ICMP差错报告。

例2:差错报告报文-主机与主机:

ICMP-差错-主机与主机.png 主机H1向主机H2发送IP数据报,其数据载荷部分封装有UDP用户数据报,UDP首部中的目标端口为33436。当H2主机接收并解封出该IP数据报之后,发现并没有监听该端口的应用进程,所以不知道将该UDP用户数据交付给谁,所以H2只能将该数据报丢弃,并向发送该IP数据报的源主机发送一个ICMP差错报告。

四种常见的ICMP差错报告报文:

  • 终点不可达

    ​ 路由器不知道如何转发某数据报,丢弃改数据报,并向源站发送“终点不可达”报文。

    ​ 主机收到无法交付给应用程序的数据报,将其丢弃,向源站发送“终点不可达”报文。

  • 时间超过

    ​ 路由器丢弃生存时间TTL为0的数据报,并向源站发送“时间超过”报文。

    ​ 当终点在预先规定的时间内不能收到一个数据报的全部分片时,就把已收到的分片都丢弃,并向源站发送“时间超过”报文。

  • 参数问题

    ​ 当路由器或目的主机收到的数据报的首部中有些字段的值不正确时,就丢弃该数据报,并向源站发送“参数问题”报文。

  • 改变路由(重定向)

    ​ 路由器把“改变路由”报文发送给主机,让主机知道下次应将数据报发送给另一个路由器,这样可以通过更好的路由。

询问报文

例1:询问报文-主机询问路由器

ICMP-询问-主机与路由器.png 主机H1给路由器R发送一个ICMP询问报文,路由器R收到后会给H1发送一个ICMP应答报文。

例2:询问报文-路由器询问主机

ICMP-询问-路由-主机.png 路由器R给主机H2发送一个ICMP询问报文,主机H2收到后会给路由器R发送一个ICMP应答报文。

例3:询问报文-主机询问主机

ICMP-询问-主机-主机.png 主机H2给主机H1发送一个ICMP询问报文,主机H1收到后会给主机H2发送一个ICMP应答报文。

两种ICMP询问报文:

  • 回送请求和回答

    ​ 用于测试目的站是否可达以及了解其有关状态。

  • 时间戳请求和回答

    ​ 用于时钟同步和时间测量。

ICMP的应用举例

分组网间探测PING(Packet InterNet Groper)

  • 用于来探测主机或路由器间的连通性
  • 应用层直接使用网际层的ICMP(没有通过运输层的TCP或UDP)
  • 使用ICMP回送请求和回答报文

跟踪路由traceroute

  • 用来测试IP数据报从源主机到达目的主机要经过哪些路由器

  • ​ Windows版本

    ​ tracert命令

    ​ 应用层直接使用网际层ICMP协议,而不使用运输层的协议

    ​ 要使用ICMP回送请求和回答报文以及差错报告报文

  • ​ Unix版本

    ​ traceroute命令

    ​ 要使用运输层的UDP协议

    ​ 仅使用ICMP差错报告报文

不应该发送ICMP差错报告的几种情况

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

标签:协议,主机,报文,笔记,发送,IP,ICMP,路由器
From: https://blog.51cto.com/u_15954070/6143100

相关文章

  • 算法笔记的笔记——第6章 C++标准模板库(STL)
    vector变长数组长度根据需要而自动改变的数组可以用来以邻接表的方式储存图使用头文件:#include<vector>命名空间:usingnamespacestd;定义vector<typename>n......
  • Spring笔记
    spring1.创建项目GroupID是项目组织唯一的标识符,比如我的项目叫test001 那么GroupID应该是com.lixiaoming.test001域名.公司名.项目名ArtifactID就是项目的唯一的......
  • HTTP协议的消息头:Content-Type和Accept的作用
    原文:https://blog.csdn.net/weixin_62180080/article/details/128446297 格式介绍:请求数据总共分为三部分内容,分别是请求行、请求头、请求体求行:HTTP请求中的第一行......
  • Java学习笔记(八)GUI
    GUI编程如何学习?这是什么?它怎么玩?该如何去平时运用?组件窗口弹窗面板文本框列表框按钮图片监听事件鼠标键盘破解工具1.简介Gui的核心技术:SwingAWT,......
  • EasyCVR平台基于部标JT808协议的汽车行驶记录仪接入演示
    EasyCVR平台兼容性强,可覆盖市面上绝大多数的视频源设备接入,包括:IPC、NVR、视频编码器、移动执法仪、应急布控球、移动单兵、智能移动手持终端、无人机、车载设备、智能一体......
  • nest.js学习笔记(七) --知识点拾遗
    1、nestjs中引用esm插件nestjs是使用commonjs规范进行开发,但是目前市场上很多插件是使用module的形式进行开发,所以遇到引用问题时,建议开发都绕过去,使用功能差不多的插件,但......
  • 【笔记】好用的GIT
    一般使用流程你可以提出更改(把它们添加到暂存区),使用如下命令:gitadd<filename>gitadd*这是git基本工作流程的第一步;使用如下命令以实际提交改动:gitcommit-m"......
  • 【笔记】PCA——主成分分析:推导与问题
    PCA:主成分分析主要思想假设有m个n维数据,我希望只保留k维,尽可能减少信息损失,也就是(m,n)到(m,k)的过程比如一个实际应用场景,我有一堆wlatentcode,也就是(n,512)的数据......
  • webrtc QOS笔记三 RTT计算,SRS增加XR
    webrtcQOS笔记三RTT计算,SRS增加XRRTT计算方式WebRTC中目前有两种方式计算RTT:基于媒体流发送端的计算(默认开启)。通过SenderReport(SR)与ReceiverReport(RR)携带的信息......
  • Cadence入门笔记(六):布局和板框
    说明布局和走线是最复杂的一个环节,涉及诸多技巧和设计理念。但为了入门学习简单考虑,这里只做基本的操作步骤说明。隐藏飞线上一节放置好元件后就要开始布局了,布局前可以......