ping命令详解

欢迎转载,转载请注明出处和作者。

ping命令一般用于检测网络通不通、主机是否可达。ping工作在应用层,它直接使用网络层的ICMP协议,而没有使用传输层的TCP/UDP协议。ping命令使用的是ICMP(Internet Control Message Protocol,因特网控制报文协议),它发送类型码为0的ICMP回送请求(echo request)消息给目的主机。ICMP协议规定:目的主机必须返回ICMP回送应答(echo response)消息给源主机。如果源主机在一定时间内收到应答(ICMP回送请求报文的类型码为8),则认为主机可达。


ping工作过程

———————————————————————————————————————————————————————————————————

在主机A 上 “ ping 主机B ”:

1.主机A与主机B在同一网段内:

  • 首先,ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP协议将这个数据包连同主机B的IP地址一起交给IP层协议(和ICMP一样,实际上是一组后台运行的进程)。
  • 其次,IP层协议将主机B的IP地址作为目的地址,本机IP地址作为源地址,加上一些其他的控制信息,构建一个IP数据包,并在主机A的ARP缓存表中查找主机B的IP与其对应的MAC地址(如果在主机A的ARP缓存表中没有查找到主机B的MAC地址,则发送一个ARP广播请求,主机B收到ARP广播请求后,回复一个ARP应答包,里面包含主机B的MAC地址)一并交给数据链路层协议。
  • 然后,数据链路层协议构件一个数据帧,目的地址是IP层传过来的MAC地址,源地址是本机的MAC地址,附加上一些控制信息,根据以太网的介质访问规则,将它们传送出去。
  • 最后,主机B收到这个数据帧后,先检查它的目的地址,并和本机的MAC地址对比,如符合,则接收;否则,丢弃。接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP协议。同样,IP层检查后,将有用的信息提取后交给ICMP协议,后者处理后,马上构建一个ICMP应答包,发送给主机A,其过程与主机A发送ICMP请求包到主机B一模一样。

总的来说,即源端先构建ICMP报文,然后交给本机的IP协议构造IP数据包,然后再根据MAC地址由数据链路层传送到目的主机。

2.主机A与主机B不在同一网段内:

  • 在主机A上运行 “ ping 主机B ” 后,开始与上面相同,主机A先构建ICMP报文
  • 然后交给本机的IP协议构造IP数据包
  • 到了怎样的到MAC地址时,IP协议通过计算(子网掩码和IP地址取“与”运算=网络号)发现目的主机B与自己不在同一网段内,就直接将IP交给路由处理,也就是将路由的MAC地址取过来,至于怎样得到路由的MAC地址,和上面一样,现在本地ARP缓存表中查找,查找不到就广播ARP请求包。
  • 路由器得到这个数据帧后,再跟主机B进行联系,如果找不到该主机,就向主机A返回一个超时信息。



  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值