icmp_icmp协议 - CSDN
icmp 订阅
ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 [1]  ICMP使用IP的基本支持,就像它是一个更高级别的协议,但是,ICMP实际上是IP的一个组成部分,必须由每个IP模块实现。 [2] 展开全文
ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 [1]  ICMP使用IP的基本支持,就像它是一个更高级别的协议,但是,ICMP实际上是IP的一个组成部分,必须由每个IP模块实现。 [2]
信息
协议族
TCP/IP协议族
类    型
控制报文协议
作    用
在主机与路由器之间传递控制信息
中文名
ICMP
归    属
网络层协议
外文名
Internet Control Message Protocol
ICMP简介
ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网络安全具有极其重要的意义。 [3]  它属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。ICMP 是 TCP/IP 模型中网络层的重要成员,与 IP 协议、ARP 协议、RARP 协议及 IGMP 协议共同构成 TCP/IP 模型中的网络层。ping 和 tracert是两个常用网络管理命令,ping 用来测试网络可达性,tracert 用来显示到达目的主机的路径。ping和 tracert 都利用 ICMP 协议来实现网络功能,它们是把网络协议应用到日常网络管理的典型实例。 [1]  从技术角度来说,ICMP就是一个“错误侦测与回报机制”,其目的就是让我们能够检测网路的连线状况﹐也能确保连线的准确性。当路由器在处理一个数据包的过程中发生了意外,可以通过ICMP向数据包的源端报告有关事件。其功能主要有:侦测远端主机是否存在,建立及维护路由资料,重导资料传送路径(ICMP重定向),资料流量控制。ICMP在沟通之中,主要是透过不同的类别(Type)与代码(Code) 让机器来识别不同的连线状况。ICMP 是个非常有用的协议﹐尤其是当我们要对网路连接状况进行判断的时候。 [3] 
收起全文
精华内容
参与话题
  • ICMP详解和实例分析

    万次阅读 2017-06-20 11:34:03
    ICMP是网际报文控制协议,它是一个对IP协议的补充协议。允许主机或路由器报告差错情况和异常状况。 一、ICMP报文格式和各个字段的含义 ICMP报文的格式如下: ICMP协议封装在ip协议中,ICMP有很多报文类型,每...

    ICMP是网际报文控制协议,它是一个对IP协议的补充协议。允许主机或路由器报告差错情况和异常状况。

    一、ICMP报文格式和各个字段的含义

    ICMP报文的格式如下:


    ICMP协议封装在ip协议中,ICMP有很多报文类型,每一个报文类型又各自不相同,所以无法找到一个统一的报文格式来进行说明,但是他们的前四个字节的报文格式是相同的。

    如图所示:

    1.校验和:占两个字节,是对整个报文的报文信息的校验。

    2.类型:占一个字节:用来表示ICMP的消息类型。

    3.代码:占一个字节:用来对类型的进一步说明。

    下面是RFC792英文版的文档说明:

    点击打开链接

    下面试RFC792中文版的文档说明:

    点击打开链接

    二、ICMP常见的报文类型

    下表列出了几种常见的类型:


    ICMP的报文分为两类,一类是ICMP询问报文,一类是ICMP差错报告报文

    常见的ICMP询问你报文有:8/0回送请求/应答报文,13/14时间戳回送请求/回答报文。

    常见的ICMP差错报告报文有:3 目的站点不可达、 11时间超过、12参数问题、5改变路由、4源点抑制

    目的站点不可达:当路由器或主机不能交付数据的时候,就会向源点发送终点不可达的报文。

    源点抑制:当路由器或主机因为拥塞而导致丢包的时候,就会向源点发送源点抑制报文,请求发送报文速度降低

    时间超过:当路由器或主机发现生存时间TTL值为0时,会丢弃该报文,并向源点发送时间超过的信息。或者目的主机没在规定时间内收到所有的数据分片,会丢弃之前的数据分片,并发出报告。

    参数问题:当路由器或主机发现数据包首部字段值不正确的时候,会丢弃该报文,并发送参数错误报文。

    改变路由:路由器把改变路由报文发给主机。

    三、不发送ICMP差错报文的情况

     1、对ICMP差错报文出错不在发送ICMP差错报文信息。

     2、对于第一个ip分片后的所有ip分片报文不发送ICMP差错报文

     3、对具有组播地址的数据报不发送ICMP报文

     4、对具有特殊地址(127.0.0.0或0.0.0.0)不发送ICMP差错报文

    四、ICMP协议的用法

    icmp协议的常用用法就是ping和tracert

    ping的命令参数为ping 目的ip 

    一般有选项参数 -n 次数 表示要ping目的ip的次数,windows默认ping10次

    -l 大小 向目标主机发送ping 包的大小,单位为字节

    tracert  目的ip 可以显示中间经过的路由器

    五、ICMP回送请求和应答实例分析

     该组的报文是通过ping来实现的

    下面首先来看回送请求/应答报文的格式:


    接下来我们来看一下回送请求的具体报文:


    下面是回送应答的具体报文:


    其中 Code 0 在RFC文档中提到,当这个值为0时表示网管或主机

    展开全文
  • ICMP协议详解

    万次阅读 多人点赞 2018-05-30 18:51:00
    ICMP协议详解 ICMP协议是一个网络层协议。 一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通;但是IP协议并不提供可靠传输。如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。 ...

    ICMP协议详解

    ICMP协议是一个网络层协议。
    一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通;但是IP协议并不提供可靠传输。如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。
    所以我们就需要一种协议来完成这样的功能–ICMP协议。

    ICMP协议的功能

    ICMP协议的功能主要有:
    1. 确认IP包是否成功到达目标地址
    2. 通知在发送过程中IP包被丢弃的原因
    如下图所示:
    这里写图片描述
    我们需要注意几点:
    1.ICMP是基于IP协议工作的,但是它并不是传输层的功能,因此仍然把它归结为网络层协议
    2. ICMP只能搭配IPv4使用,如果是IPv6的情况下, 需要是用ICMPv6

    ICMP的报文格式

    ICMP报文包含在IP数据报中,IP报头在ICMP报文的最前面。一个ICMP报文包括IP报头(至少20字节)、ICMP报头(至少八字节)和ICMP报文(属于ICMP报文的数据部分)。当IP报头中的协议字段值为1时,就说明这是一个ICMP报文。ICMP报头如下图所示。
    如下图:
    这里写图片描述
    字段说明:

    类型 说明
    类型 占一字节,标识ICMP报文的类型,从类型值来看ICMP报文可以分为两大类。第一类是取值为1~127的差错报文,第2类是取值128以上的信息报文
    代码 占一字节,标识对应ICMP报文的代码。它与类型字段一起共同标识了ICMP报文的详细类型
    校验和 这是对包括ICMP报文数据部分在内的整个ICMP数据报的校验和,以检验报文在传输过程中是否出现了差错(其计算方法与在我们介绍IP报头中的校验和计算方法是一样的)

    ICMP大概分为两类报文:
    一类是通知出错原因 ;一类是用于诊断查询
    类型及含义如下:

    类型(十进制) 内容
    0 回送应答
    3 目标不可达
    4 原点抑制
    5 重定向或改变路由
    8 回送请求
    9 路由器公告
    10 路由器请求
    11 超时
    17 地址子网请求
    18 地址子网应答

    常见的ICMP报文

    相应请求

    我们用的ping操作中就包括了相应请求(类型字段值为8)和应答(类型字段值为0)ICMP报文。
    过程:
    一台主机向一个节点发送一个类型字段值为8的ICMP报文,如果途中没有异常(如果没有被路由丢弃,目标不回应ICMP或者传输失败),则目标返回类型字段值为0的ICMP报文,说明这台主机存在。

    目标不可达,源抑制和超时报文

    这三种报文的格式是一样的。
    (1)目标不可到达报文(类型值为3)在路由器或者主机不能传递数据时使用。
    例如:我们要连接对方一个不存在的系统端口(端口号小于1024)时,将返回类型字段值3、代码字段值为3的ICMP报文。
    常见的不可到达类型还有网络不可到达(代码字段值为0)、主机不可达到(代码字段值为1)、协议不可到达(代码字段值为2)等等。
    (2)源抑制报文(类型字段值为4,代码字段值为0)则充当一个控制流量的角色,通知主机减少数据报流量。由于ICMP没有回复传输的报文,所以只要停止该报文,主机就会逐渐恢复传输速率。
    (3)无连接方式网络的问题就是数据报会丢失,或者长时间在网络游荡而找不到目标,或者拥塞导致主机在规定的时间内无法重组数据报分段,这时就要触发ICMP超时报文的产生。
    超时报文(类型字段值为11)的代码域有两种取值:代码字段值为0表示传输超时,代码字段值为1表示分段重组超时。

    时间戳请求

    时间戳请求报文(类型值字段13)和时间戳应答报文(类型值字段14)用于测试两台主机之间数据报来回一次的传输时间。
    传输时,主机填充原始时间戳,接受方收到请求后填充接受时间戳后以类型值字段14的报文格式返回,发送方计算这个时间差。
    (有些系统不响应这种报文)


    ping命令

    用法如下:
    这里写图片描述
    注意, 此处 ping 的是域名,不是url,域名可以通过DNS解析成IP地址
    关于DNS可见这里写链接内容

    ping命令的功能

    (1)能验证网络的连通性
    (2)会统计响应时间和TTL(IP包中的Time To Live,生存周期)
    那么如何验证的呢?
    (1)ping命令会先发送一个 ICMP Echo Request给对端
    (2)对端接收到之后, 会返回一个ICMP Echo Reply
    (3)若没有返回,就是超时了,会认为指定的网络地址不存在。

    问题:

    telnet是23端口,ssh是22端口,那么ping是什么端口?
    答:ping命令是基于ICMP,是在网络层。
    而端口号,是传输层的内容。所以在ICMP中根本就不关注端口号这样的信息。


    traceroute

    traceroute也是基于ICMP协议实现的。
    功能:
    打印出可执行程序主机,一直到目标主机之前经历多少路由器。
    举例如下:
    这里写图片描述

    展开全文
  • ICMP

    千次阅读 2017-02-11 17:01:05
    ICMP(Internet Control Message Protocol)。它是TCP/IP协议族的一个子协议。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息报文格式 8字节长的包头。包含8位类型字段,8位代码字段和16位的...

    ICMP(Internet Control Message Protocol)。它是TCP/IP协议族的一个子协议。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息

    报文格式
    icmp

    8字节长的包头。包含8位类型字段,8位代码字段和16位的校验和;后4个字节根据ICMP包的类型而取不同的值

    “Ping”的过程实际上就是ICMP协议工作的过程

    ICMP与IP协议的关系
    ICMP协议虽然与IP协议同为第三层协议,但ICMP本身不具备传送能力。事实上,它跟TCP/UDP一样,也是靠IP帮忙进行传送

    展开全文
  • 关于ICMP简介

    千次阅读 2019-06-03 19:56:55
    ICMP 简介 ICMP是(Internet Control Message Protocol)Internet控制报文协议。 ICMP协议是一种面向无连接的协议,它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。ICMP是一个网络层...

    ICMP

    • 简介
      ICMP是(Internet Control Message Protocol)Internet控制报文协议。
      ICMP协议是一种面向无连接的协议,它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。ICMP是一个网络层协议。

    ICMP协议的功能主要有:

    1. 确认IP包是否成功到达目标地址
    2. 通知在发送过程中IP包被丢弃的原因

    注意:

    1. ICMP是基于IP协议工作的,但是它并不是传输层的功能,因此仍然把它归结为网络层协议
    2. ICMP只能搭配IPv4使用,如果是IPv6的情况下, 需要是用ICMPv6

    ICMP报文

    ICMP报文格式和各个字段的含义
    ICMP报文的格式如下:

    ICMP协议封装在ip协议中,ICMP有很多报文类型,每一个报文类型又各自不相同,所以无法找到一个统一的报文格式来进行说明,但是他们的前四个字节的报文格式是相同的。
    如图所示:
    1.校验和:占两个字节,是对整个报文的报文信息的校验。
    2.类型:占一个字节:用来表示ICMP的消息类型。
    3.代码:占一个字节:用来对类型的进一步说明。

    ICMP数据包类型
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    报告IP数据报在传输中的差错是ICMP报文最基本的功能,ICMP差错报文有如下特点:
    (1) ICMP差错报文都是由路由器发送到源主机的,因为IP数据报中含有源主机的IP地址,报告给源主机是最可行的方案,另外,发出IP数据报的源主机最需要知道数据是否到达目标主机。
    (2) ICMP差错报文只提供IP数据报在传输过程中的差错报告,并不规定对各类差错应采取什么样的处理措施。具体对差错的处理,由收到ICMP差错报文的源主机将相应的差错与应用程序联系起来才能进行相应的差错处理。
    (3) ICMP差错报文不享受任何优先权,也没有特别的可靠性保证措施,与普通的IP数据报一样进行传输,传输过程中可能被丢失、损坏,甚至被抛弃。
    (4) ICMP差错报文是伴随着抛弃出错的IP数据报而产生的。
    (5) 当路由器发送一份参数错误等的ICMP差错报文时,ICMP报文数据区始终包含产生ICMP差错报文的IP数据报的头部和其数据区的前8个字节(64位)。

    ICMP控制报文
    1.拥塞控制与源站抑制报文
    当一个路由器接收IP数据报的速度比其处理IP数据报的速度快,或一个路由器传入数据报的速率大于传出数据报的速率时,就会产生拥塞(Congestion)现象。
      这时路由器可以通过发送源站抑制(Source Quench)报文来抑制源主机发送IP数据报的速率,避免可能产生的差错。
    源站抑制报文的类型字段为4,代码字段只能为0。源站抑制技术进行拥塞控制的方法如下:
    (1) 当路由器发生拥塞时,便发出ICMP源站抑制报文。拥塞的判别可以用三种方法:一是检查路由器缓存区是否已满;二是给缓存区输出队列设置一个阈值,判断队列中数据报的个数是否超过阈值;三是检测某输入线路的传输率是否过高。
    (2) 源主机收到抑制报文后,按一定的速率降低发往目标主机的数据报传输率。
    (3) 如果在一定的时间间隔内源主机没有收到抑制报文,便认为拥塞已解除,源主机可以逐渐恢复到原来数据报的流量。
    2. 路由控制与重定向报文
    假如源主机要向目标主机发送IP数据报,源主机的默认路由是路由器1,则源主机先把IP数据报送到路由器1,再由路由器1进行路由选择。路由器1经过选路后,把IP数据报送到路由器2。
      同时路由器1也发现源主机要发送到目标主机的IP数据报以后可以直接发送到路由器2(因为路由器1和路由器2同在一个网络中),则路由器1向源主机发送一个ICMP重定向报文,告诉它可以直接把IP数据报送到路由器2。这样,就使源主机始终保持着一个动态的、既小且优的路径表。

    展开全文
  • 课程内容如下: 通信协议的概念 ISO、OSI七层参考模型详解 TCP、IP模型详解 网络接口层详解 ...ICMP知识解析 ping命令使用详解 tracert命令使用详解 TCP详解 UDP协议详解 网络通信协议(应用层)协议
  • ICMP协议

    千次阅读 2019-03-15 15:59:06
    一.ICMP协议的简介 IP协议是一种面向无连接的数据报协议,它是一种不可靠的协议,它不提供任何差错检验。因此网际报文控制协议(Internet Control Message Protocol)ICMP出现了,ICMP协议用于IP主机、路由器之间...
  • icmp超详细讲解

    2020-10-19 17:43:46
    1.ICMP出现的原因 在IP通信中,经常有数据包到达不了对方的情况。原因是,在通信途中的某处的一个路由器由于不能处理所有的数据包,就将数据包一个一个丢弃了。或者,虽然到达了对方,但是由于搞错了端口号,服务器...
  • ICMP

    2008-08-04 13:57:00
    ICMP 开放分类: 网络、网络协议英文原义:Internet Control Message Protocol中文释义:(RFC-792)Internet控制消息协议注解:该协议是TCP/IP协议集中的一个子协议,属于网络层协议,主要用于在主机与路由器之间...
  • 网络协议 -- ICMP协议(3)Tracert程序

    万次阅读 2018-01-25 14:36:07
    Tracert是windows系统提供的一个工具,使用该程序可以让我们看到IP数据报从一台主机到另一台主机所经过的路由器。Linux系统也提供了类似的工具,叫traceroute,功能和Tracert一样。 一、 Tracert原理 ...
  • ICMP 格式

    千次阅读 2007-08-01 13:25:00
    500){this.resized=true;this.style.width=500;}" border="0" alt="" />...}" border="0" alt="" />因特网控制消息协议(ICMP)允许路由器或目的主机向数据包源结点报告在数据报处理过程中出现的错误,是IP的必要组成部
  • ICMP扫描

    千次阅读 2016-04-18 22:55:00
    icmp(Internet control message protocol),是一种网络上用来传递错误报文的协议,根据类型和代码,可以分为很多类型的,为了实现icmp扫描,我们这里只需要用到请求回显(type=8,code=0)和回显应答(type=0,...
  • ICMP timestamp 协议原理和实现

    千次阅读 2019-02-09 17:56:07
    大量的设备连接到互联网,而设备之间需要通讯以及相互协作,这就要求不同设备之间需要保持时钟同步。然而无论是多么精准的时钟,一旦运行久了后,它指示的时间与真实时间会产生偏差,在假设不同设备启动时时间初始化...
  • ICMP报文

    千次阅读 2019-04-17 10:43:04
    ICMP报文
1 2 3 4 5 ... 20
收藏数 134,433
精华内容 53,773
关键字:

icmp