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程序中使用到)、报错报文(主机不可达、路由不可达等等)。

  • 相关阅读:
    C++中使用多线程
    hdu 4223 dp 求连续子序列的和的绝对值最小值
    hdu 1372 bfs 计算起点到终点的距离
    hdu 4217 线段树 依次取第几个最小值,求其sum
    心得
    hdu 1175 bfs 按要求进行搜索,是否能到达,抵消两个(相同)棋子
    hdu 4221 greed 注意范围 工作延期,使整个工作时间罚时最少的单个罚时最长的值
    hdu 2844 多重背包 多种硬币,每一种硬币有一点数量,看他能组成多少种钱
    uva LCDDisplay
    hdu 4218 模拟 根据一个圆点和半径画一个圆 注意半径要求
  • 原文地址:https://www.cnblogs.com/lsjava/p/9291837.html
Copyright © 2011-2022 走看看