zoukankan      html  css  js  c++  java
  • ICMP协议

    一、ICMP介绍

    1、什么是ICMP

    ​ ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。

    ​ 控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

    ICMP 不是高层协议,而是 IP 层的协议。

    二、ICMP 报文格式

    image-20210103084904173

    ​ ICMP报文包含在IP数据报中。IP头部的Protocol为1就说明是ICMP报文

    1、ICMP报头字段

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

    不同类型的报文由类型和代码共同决定

    三、ICMP报文类型

    image-20210103085144062

    1、查询报文(query)或者信息类报文(information message)

    ​ 有关信息采集和配置的ICMP报文, ===》用于诊断查询

    • 分类

      ICMP查询报文有四种回送请求和回答,时间戳请求和回答,掩码地址请求和回答,以及路由器询问和通过。

    • 格式

      见ICMP报文格式

    2、差错报文

    ​ 有关IP数据报传递的ICMP报文 ===》用于通知出错原因

    • 分类

      ICMP 差错报告报文有许多种比如 :

      1、 终点不可达; ==》比如传输数据过程中,中间某一路由器不知道到目标地址怎么走,该路由器就会发回该报文。

      2、源点抑制(Source quench); ==》即反馈发包速度过快;

      3、时间超过 ; ==》 当路由器收到生存时间为0的数据包后,除了丢弃该数据包,还会向源地址发送时间超过差错报文

      4、参数问题 ; ==》当路由器或目标主机收到数据报的首部中的字段有问题时,就会向源地址发送参数问题差错报文

      5、改变路由(重定向)(Redirect) ; ==》路由器向源地址发送改变路由报文,这样源地址就知道下一次应该发送给新路由

    • 差错报文的格式

    image-20210103085257873

    ​ 当A需要给B返回差错报文时。

    ​ 1、A会把收到的数据报的IP数据报首部和数据中的前8个字节提取出来,作为ICMP报文的数据部分

    ​ 2、 再加上ICMP报文的前8个字段就形成了ICMP差错报文

    ​ 3、最后在加上IP首部(比如B的ip地址等)。最后形成装入ICMP报文的IP数据报

    四、演示:抓包演示

    ping www.baidu.com
    

    image-20210103085336834

    五、ICMP协议应用举例

    1、pathping

    ​ 用来跟踪在源和目标之间的中间跃点处网络滞后和网络丢失的详细信息,即了解你所走的路径的路状如何?

    image-20210103091522831

    参考链接:

    https://baike.baidu.com/item/ICMP

    https://blog.csdn.net/tigerjibo/article/details/7356936


    如果本篇博客有任何错误和建议,欢迎大佬们批评指正

    我是知逆,我们下期见

    Peace

  • 相关阅读:
    Javascript语言精粹之String常用方法分析
    Javascript语言精粹之Array常用方法分析
    Javascript语言精粹之正则表达式知识整理
    深入浅出KnockoutJS
    用KnockoutJS实现ToDoMVC代码分析
    用JavaScript实现网页动态水印
    LINQ to JavaScript 源码分析
    《Javascript高级程序设计》读书笔记之bind函数详解
    《Javascript高级程序设计》读书笔记之闭包
    转载-MySQL 加锁处理分析
  • 原文地址:https://www.cnblogs.com/mercurytan/p/14224800.html
Copyright © 2011-2022 走看看