zoukankan      html  css  js  c++  java
  • TCP/IP学习20180710-数据链路层-ICMP协议

    1、ICMP协议
    IP协议不保证数据送达。则应有协议保证数据送达。ICMP就是其中的重要协议。
    ICMP:(Internet Control Messages Protocol)因特网信报控制协议
    当传送IP数据包发生错误--比如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机。给主机一个处理错误的机会。
    ICMP数据包由8bit的错误类型和8bit的代码和16bit的校验和组成。(32字节)
    ICMP报文分为两种:查询报文和差错报文。

    2、ICMP协议应用-ping程序
    ping可以说是ICMP的最著名的应用,当我们某一个网站上不去的时候。通常会ping一下这个网站。ping会回显出一些有用的信息。
    ping利用ICMP协议包来侦测另一个主机是否可达。原理是用类型码为0的ICMP发请 求,受到请求的主机则用类型码为8的ICMP回应。ping程序来计算间隔时间,并计算有多少个包被送达。用户就可以判断网络大致的情况。ping给出来了传送的时间和TTL的数据。
    ping还给我们一个看主机到目的主机的路由的机会。这是因为,ICMP的ping请求数据报在每经过一个路由器的时候,路由器都会把自己的ip放到该数 据报中。而目的主机则会把这个ip列表复制到回应icmp数据包中发回给主机。但是,无论如何,ip头所能纪录的路由列表是非常的有限。

    C:Userslishuotr>ping kat.cr

    正在 Ping kat.cr [72.52.4.119] 具有 32 字节的数据:
    来自 72.52.4.119 的回复: 字节=32 时间=208ms TTL=243
    来自 72.52.4.119 的回复: 字节=32 时间=205ms TTL=243
    来自 72.52.4.119 的回复: 字节=32 时间=209ms TTL=243
    来自 72.52.4.119 的回复: 字节=32 时间=227ms TTL=243

    72.52.4.119 的 Ping 统计信息:
        数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
    往返行程的估计时间(以毫秒为单位):
        最短 = 205ms,最长 = 227ms,平均 = 212ms



    3、ICMP协议应用-traceroute racert
    Traceroute是用来侦测主机到目的主机之间所经路由情况的重要工具.
    Traceroute的原理是非常非常的有意思,它受到目的主机的IP后,首先给目的主机发送一个TTL=1(TTL:time to live)的UDP数据包,而经过的第一个路由器收到这个数据包以后,就自动把TTL减1,而TTL变为0以后,路由器就把这个包给抛弃了,并同时产生 一个主机不可达的ICMP数据报给主机。主机收到这个数据报以后再发一个TTL=2的UDP数据报给目的主机,然后刺激第二个路由器给主机发ICMP数据 报。如此往复直到到达目的主机。这样,traceroute就拿到了所有的路由器ip。从而避开了ip头只能记录有限路由IP的问题。

    C:Userslishuotr>tracert baidu.com

    通过最多 30 个跃点跟踪
    到 baidu.com [123.125.115.110] 的路由:

      1     1 ms    <1 毫秒   <1 毫秒 192.168.1.1 [192.168.1.1]
      2     *        *        *     请求超时。
      3     8 ms     5 ms     7 ms  124.74.37.137
      4     5 ms     6 ms     8 ms  101.95.42.45
      5     9 ms     9 ms    12 ms  101.95.120.174
      6    28 ms    28 ms    29 ms  202.97.60.129
      7     *        *        *     请求超时。
      8     *        *        *     请求超时。
      9    33 ms     *       34 ms  219.158.5.137
     10    28 ms    30 ms    29 ms  202.96.12.14
     11    36 ms    30 ms    30 ms  202.106.34.98
     12     *       30 ms    27 ms  202.106.43.30
     13     *        *        *     请求超时。
     14     *        *        *     请求超时。
     15    28 ms    28 ms    28 ms  123.125.115.110

    跟踪完成。

    C:Userslishuotr>tracert rarbg.is

    通过最多 30 个跃点跟踪
    到 rarbg.is [185.37.100.123] 的路由:

      1    26 ms    <1 毫秒    4 ms  192.168.1.1 [192.168.1.1]
      2     *        *        *     请求超时。
      3    12 ms     4 ms     6 ms  124.74.37.137
      4     4 ms     4 ms     7 ms  101.95.42.45
      5    17 ms     5 ms    12 ms  61.152.24.14
      6     5 ms     4 ms     5 ms  202.97.48.26
      7     *       10 ms     4 ms  202.97.33.154
      8   320 ms   317 ms   317 ms  202.97.50.38
      9   317 ms   314 ms   322 ms  118.85.205.214
     10   371 ms   371 ms   380 ms  ae16-9.RT.NTL.KIV.UA.retn.net [87.245.232.150]
     11   245 ms   234 ms   336 ms  GW-BelPak.retn.net [87.245.237.22]
     12   232 ms   235 ms   233 ms  91.195.120.231.hi-load.biz [91.195.120.231]
     13     *        *        *     请求超时。
     14   352 ms   348 ms   358 ms  border1.russia.transit.netsaap.com [185.37.101.2]
     15   361 ms   390 ms   395 ms  xe-0-1.edge.romania.netsaap.com [185.37.102.2]
     16   405 ms   423 ms   431 ms  ae0-94.sr.ipv4.bosnia.netsaap.com [185.37.100.2]
     17   446 ms   509 ms   424 ms  ae0-84.sr.ipv4.bosnia.netsaap.com [185.37.100.6]
     18   440 ms   477 ms   462 ms  185.37.100.123

    跟踪完成。


    综上,我对ICMP的理解:
    ICMP:internet control message protocol,控制报文。
    把控制信息进行发送的一种协议。包含:查询报文(在ping程序中使用到)、报错报文(主机不可达、路由不可达等等)。

  • 相关阅读:
    一例智能网卡(mellanox)的网卡故障分析
    jbd2的死锁分析
    一个dcache的性能问题分析
    systemd之导致内核 crash
    开源堡垒机teleport测试
    WSL2添加网络代理,通过宿主机代理出国.
    MongoDB数据库备份操作
    保姆级Mongodb部署教程
    Linux-XZ压缩命令
    eclipse运行Java代码报错:NoClassDefFoundError: javax/xml/bind/*
  • 原文地址:https://www.cnblogs.com/lsjava/p/9291837.html
Copyright © 2011-2022 走看看