“ ping”命令如何真正起作用?


24

ping命令实际上如何工作?具体来说,ARP(地址解析协议)在哪里出现?

在一次采访中有人问我这个问题,我无法提出可以使用ARP的方案。


查看ICMP。

3
ARP用于获取特定IP地址的MAC地址。当您需要在以太网上发送数据包时,您需要目的地的MAC地址。

Answers:


16

如果您真的想了解,这里有一份很好的白皮书(写得很好):

http://images.globalknowledge.com/wwwimages/whitepaperpdf/WP_Mays_Ping.pdf

这是摘要->

Ping (Program on the application layer) ------->
Opens a 'raw' socket to IP Layer ------>
IP layer (Layer 2 on OSI) packages ICMP packet and sends it

由于两者之间没有TCP层,因此Ping (program)必须监视所有传入的ICMP数据包,并仅过滤来自目的地的一个。

希望能有所帮助。


9

假设ping涉及通过以太网或WiFi网络发送的数据包,则使用ARP查找接收出站数据包的设备的以太网硬件地址。通常,这将是发起ping的计算机所在的LAN的路由器。

典型的过程是:

  1. 您输入命令来ping通目的地。

  2. DNS用于确定IP地址(如果需要)。

  3. 查询路由表以查找到该目的地的下一跳。

  4. ARP用于查找下一跳的硬件地址。

  5. IP数据包被发送到下一跳,并封装在以太网或WiFi帧中。


3
唯一实际回答问题的答案!
jmiserez


1

Ping和ARP是位于网络协议堆栈中不同层的不同事物。

Ping位于网络层(或Internet层-看ICMP协议,如@ServerMonkey所指出)。

Arp协议处于链接级别(较低级别)。Arp协议旨在允许直接连接的网络硬件之间进行物理连接。

在TCP / IP网络堆栈中,每一层都使用下面的层来转发其数据,并将其封装在底层协议中。每一层都是彼此独立的,并且可能不知道其他级别的特定细节和实现(这并不总是正确的:请参见跨层功能)。


是的。但是ping的实现将需要在L2(链路层)上执行一些代码。ARP是否在第2层起作用?

@ liv2hak。没有。ping实现位于下面的链接层。

@liv arp通常被称为2.5层ICMP通常被称为3.5层。而且,如果您想说ping实现需要在第2层进行代码,那么根据定义,任何东西的任何实现,您都不能在其下没有一层。
barlop 2014年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.