zoukankan      html  css  js  c++  java
  • ping命令执行过程详解

    ping命令执行过程详解

    机器A ping 机器B

    同一网段

    1. ping通知系统建立一个固定格式的ICMP请求数据包

    2. ICMP协议打包这个数据包和机器B的IP地址转交给IP协议层(一组后台运行的进程,与ICMP类似)

    3. IP层协议将以机器B的IP地址为目的地址,本机IP地址为源地址,加上一些其他的控制信息,构建一个IP数据包

    4. 获取机器B的MAC地址

      • IP层协议通过机器B的IP地址和自己的子网掩码,发现它跟自己属同一网络,就直接在本网络查找这台机器的MAC

        • 若两台机器之前有过通信,在机器A的ARP缓存表应该有B机IP与其MAC的映射关系

        • 若没有,则发送ARP请求广播,得到机器B的MAC地址,一并交给数据链路层

      • 数据链路层构建一个数据帧,目的地址是IP层传过来的MAC地址,源地址是本机的MAC地址,再附加一些控制信息,依据以太网的介质访问规则,将他们传送出去

      • 机器B收到这个数据帧后,先检查目的地址,和本机MAC地址对比

        • 符合,接收。接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP协议层协议。IP层检查后,将有用的信息提取交给ICMP协议,后者处理后,马上构建一个ICMP应答包,发送给主机A,其过程和主机A发送ICMP请求包到主机B类似(这时候主机B已经知道了主机A的MAC地址,不需再发ARP请求)

        • 不符合,丢弃

    不同网段

    1. ping通知系统建立一个固定格式的ICMP请求数据包

    2. ICMP协议打包这个数据包和机器B的IP地址转交给IP协议层(一组后台运行的进程,与ICMP类似)

    3. IP层协议将以机器B的IP地址为目的地址,本机IP地址为源地址,加上一些其他的控制信息,构建一个IP数据包

    4. 获取主机B的MAC地址

      • IP协议通过计算发现主机B与自己不在同一网段内,就直接交给路由处理,就是将路由的MAC取过来,至于怎么得到路由的MAC地址,和之前一样,先在ARP缓存表中寻找,找不到可以利用广播。路由得到这个数据帧之后,再跟主机B联系,若找不到,就向主机A返回一个超时信息。

    对ping后返回信息的分析

    1. Request timed out

      • 对方已关机,或者网络上没有这个地址

      • 对方与自己不在同一网段内,通过路由也无法到达

      • 对方存在,不过设置了ICMP数据包过滤(比如防火墙设置)

      • 错误设置IP地址

      正常情况下,一台主机一张网卡,一个IP地址或多个网卡,多个IP地址。但如果一台电脑的“拨号网络适配器”(相当于一块软网卡)的TCO/IP设置中,设置了一个与网卡IP地址处于同一子网的IP地址,这样,在IP层协议看来,这台主机就有两个不同的接口处于同一网段内。当从这台主机ping其他机器时,会存在这样的问题:

      ** 主机不知道将数据包发到哪个网络接口,因为有两个网络接口都连接在同一网段。
      ** 主机不知道用哪个地址作为数据包的源地址。因此,从这台主机去ping其他机器,IP层协议会无法处理,超时后,ping就会给出一个“超时无应答”的错误信息提示。但从其他主机ping这台主机时,请求包从特定网卡来,ICMP只须简单的将目的、源地址互换,并更改一些标志即可,ICMP应答包能顺利发出,其他主机就能成功ping通这台主机了。

    2. Destination host Unreachable

      • 自己未设定默认路由,对方跟自己不在同已网段

      • 网线有问题

      备注
      Request timed out 与 Destination host Unreachable 的区别
      所经过的路由器的路由表具有到达目标的路由,而目标因为原因不可到达,这时出现前者。如果路由表中连到达目标的路由都没有,就会出现后者。

    3. Bad ip address

      • 没有连接到DNS服务器,无法解析IP,也可能是IP不存在
    4. Source quench received

      • 对方或中途服务器繁忙而无法应答
    5. Unkonw host

      • 远程主机的名字不能被域名服务器转换成IP地址,故障原因可能是DNS服务器有故障,或者名字不正确,或者网络管理员的系统与远程主机之间的通信线路故障。
    6. No answer

      • 无响应。说明本地系统有一条通向中心主机的路由,但却接收不到它发给该中心主机的人呢和信息。故障原因可能是:中心主机没有工作;本地或中心主机网络配置不正确;本地或中心的路由器没有工作;通信线路有故障;中心主机存在路由选择问题。
    7. Ping 127.0.0.1

      • 如果ping不通,则表明本地址TCP/IP协议不能正常工作
    8. no rout to host

      • 网卡工作不正常
    9. transmit failed。error code

      • 10043网卡驱动不正常
    10. unknown host name

      • DNS配置不正确
    勿忘初心,放得始终
  • 相关阅读:
    日志配置
    Mybaties核心配置文件
    配置3
    写了两个数据获得方式----费劲周折
    applicationContext
    配置2
    Django-缓存的配置
    RabbitMQ的工作模式
    centos下保留python2安装python3
    python位运算
  • 原文地址:https://www.cnblogs.com/cherishry/p/5717387.html
Copyright © 2011-2022 走看看