• Ping 命令的执行过程和应用协议


    1.  ICMP是“Internet Control Message Ptotocol”的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。

       控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。在网络中经常会使用到ICMP协议。例如经常用于检查网络不通的ping命令,这个ping的过程实际上就是ICMP协议工作的过程。还有跟踪路由的trancert命令也是基于ICMP协议的。

    2.  ping.exe的原理:向指定的IP地址发送一定长度的数据包,按照约定,若指定IP地址存在的话,会返回同样大小的数据包,当然,若在特定时间内没有返回,就是“超时”,会被认为指定的IP地址不存在。由于ping使用的是ICMP协议,有些防火墙软件会屏蔽ICMP协议,所以有时候ping的结果只能作为参考,ping不通并不一定说明对方IP不存在。

    3.  ping命令执行过程详解:

       机器A ping 机器B

       同一网段

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

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

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

       4.获取机器B的MAC地址

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

    2. 若两台机器之前有过通信,在机器A的ARP缓存表应该有B机IP与其MAC的映射关系;若没有,则发送ARP请求广播,得到机器B的MAC地址,一并交给数据链路层

    3. 数据链路层构建一个数据帧,目的地址是IP层传过来的MAC地址,源地址是本机的MAC地址,再附加一些控制信息,依据以太网的介质访问规则,将他们传送出去
    4. 机器B收到这个数据帧后,先检查目的地址,和本机MAC地址对比

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

    6. 不同网段

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

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

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

    10. 4.获取主机B的MAC地址

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

    4.  ping的结果:

       1.Request timed out:对方与自己不在同一网段内,通过路由也无法到达;对方已关机,或者网络上没有这个地址;对方存在,不过设置了ICMP数据包过滤;错误设置IP地址

       2.Destination host Unreachable:自己未设定默认路由,对方跟自己不在同已网段。

       3.Bad ip address:没有连接到DNS服务器,无法解析IP,也可能是IP不存在

       4.Source quench received:对方或中途服务器繁忙而无法应答

       5.Ping 127.0.0.1:如果ping不通,则表明本地址TCP/IP协议不能正常工作

     

  • 相关阅读:
    人工智能背后的故事
    idea 开发插件。
    安卓工作室 Android studio 或 Intellij IDEA 美化 修改 汉化 酷炫 装逼 Android studio or Intellij IDEA beautify modify Chinesization cool decoration
    安卓工作室 android studio文件和代码模板,以及汉化出错问题
    安卓工作室 android studio 汉化后,报错。 设置界面打不开。Can't find resource for bundle java.util.PropertyResourceBundle, key emmet.bem.class.name.element.separator.label
    android studio的汉化 教程 及解析
    安卓工作室Android Studio 快捷键
    安卓工作室 android studio 的 汉化 美化 定制 Android studio's Chinesization beautification customization
    VR开发 VR development
    Lakeshore 中文开发界面,示例项目,飞机大战 等 Lakeshore Chinese development interface, sample project, aircraft war, etc
  • 原文地址:https://www.cnblogs.com/jkzr/p/10729093.html
Copyright © 2020-2023  润新知