zoukankan      html  css  js  c++  java
  • icmp协议学习。

    ICMP协议是一个网络层协议。

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

    ICMP大概分为两类报文:

    一类是通知出错原因 ;一类是用于诊断查询

    全部消息类型

    下表显示了完整的ICMP类型:
    表1 ICMP类型
      
    TYPECODEDescriptionQueryError
    0 0 Echo Reply——回显应答(Ping应答) x  
    3 0 Network Unreachable——网络不可达   x
    3 1 Host Unreachable——主机不可达   x
    3 2 Protocol Unreachable——协议不可达   x
    3 3 Port Unreachable——端口不可达   x
    3 4 Fragmentation needed but no frag. bit set——需要进行分片但设置不分片比特   x
    3 5 Source routing failed——源站选路失败   x
    3 6 Destination network unknown——目的网络未知   x
    3 7 Destination host unknown——目的主机未知   x
    3 8 Source host isolated (obsolete)——源主机被隔离(作废不用)   x
    3 9 Destination network administratively prohibited——目的网络被强制禁止   x
    3 10 Destination host administratively prohibited——目的主机被强制禁止   x
    3 11 Network unreachable for TOS——由于服务类型TOS,网络不可达   x
    3 12 Host unreachable for TOS——由于服务类型TOS,主机不可达   x
    3 13 Communication administratively prohibited by filtering——由于过滤,通信被强制禁止   x
    3 14 Host precedence violation——主机越权   x
    3 15 Precedence cutoff in effect——优先中止生效   x
    4 0 Source quench——源端被关闭(基本流控制)    
    5 0 Redirect for network——对网络重定向    
    5 1 Redirect for host——对主机重定向    
    5 2 Redirect for TOS and network——对服务类型和网络重定向    
    5 3 Redirect for TOS and host——对服务类型和主机重定向    
    8 0 Echo request——回显请求(Ping请求) x  
    9 0 Router advertisement——路由器通告    
    10 0 Route solicitation——路由器请求    
    11 0 TTL equals 0 during transit——传输期间生存时间为0   x
    11 1 TTL equals 0 during reassembly——在数据报组装期间生存时间为0   x
    12 0 IP header bad (catchall error)——坏的IP首部(包括各种差错)   x
    12 1 Required options missing——缺少必需的选项   x
    13 0 Timestamp request (obsolete)——时间戳请求(作废不用) x  
    14   Timestamp reply (obsolete)——时间戳应答(作废不用) x  
    15 0 Information request (obsolete)——信息请求(作废不用) x  
    16 0 Information reply (obsolete)——信息应答(作废不用) x  
    17 0 Address mask request——地址掩码请求 x  
    18 0 Address mask reply——地址掩码应答

    ping命令
    用法如下:

    这里写图片描述

    注意, 此处 ping 的是域名,不是url,域名可以通过DNS解析成IP地址
    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 (linux端)

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

    这里写图片描述

     win10 端是:   

                   tracert  baidu.com

    可以看到每一跳都有三个时间,三个时间都表示什么呢?

    tracert 每一跳会发出三个TTL包(TTL(Time To Live )是IP协议包中的一个值,它告诉网络,数据包在网络中的时间是否太长而应被丢弃。),返回三个时间都是从上个节点到这个节点的时间,三个数字都表示ping值,其中最后一个地址表示的目的地址。

    Tracert 先发送 TTL 为 1 的回应数据包,并在随后的发送过程将 TTL 递增 1,直到目标响应或 TTL 达到最大值,通过“ICMP 已超时”确定目标路由。

    在此过程中设定三个时间则是为了计算时取平均值,减小误差。

    其中时间可能出现*,*是响应时间超时,或者目标拒绝ping的攻击。

    bogon是指那些不该出现在internet路由表中的地址吧
    这些地址应该包括:
    1,私有地址   如10.X.X.X,172.16-31 ,  192.168.....
    2,还未正式分配出去的地址


    来自:https://blog.csdn.net/baidu_37964071/article/details/80514340

  • 相关阅读:
    day7
    11.3NOIP模拟赛
    codeforces 880E. Maximum Subsequence(折半搜索+双指针)
    11.2NOIP模拟赛
    bzoj1483: [HNOI2009]梦幻布丁(vector+启发式合并)
    day9
    codeforces 1006 F(折半搜索)
    codeforces 28D(dp)
    P2210 Haywire(A*)
    4800: [Ceoi2015]Ice Hockey World Championship(折半搜索)
  • 原文地址:https://www.cnblogs.com/brianlai/p/12143842.html
Copyright © 2011-2022 走看看