计算机如何知道将数据包发送到哪里,仅使用ip而不是mac

时间:2018-07-18 19:35:24

标签: package ip-address send ethernet mac-address

使用普通的以太网电缆(跳线),您可以使用以太网帧(https://en.wikipedia.org/wiki/Ethernet_frame)将数据发送到LAN网络中的其他计算机/设备。在以太网帧中,有一个源mac地址和一个目标mac地址。它有一个有效载荷。有效负载包含IP包(https://en.wikipedia.org/wiki/Network_packet)。输入命令ping 192.168.86.40时,计算机如何连接到计算机并发送软件包,而又不知道用于发送以太网帧的mac地址。您需要一个目标mac地址来发送包含IP软件包的以太网帧。如果我使用静态IP地址,子网主服务器和网关IP设置网络,则网关要连接的mac地址是什么。计算机是否使用广播mac地址FF:FF:FF:FF来确定网关的mac地址是什么?

问题是:计算机如何知道将数据包发送到哪里,仅使用IP地址而不是macaddress来发送包含IP数据包的以太网帧

1 个答案:

答案 0 :(得分:1)

IPv4使用ARP(地址解析协议)-源节点以广播方式发送ARP请求,询问目标IP的MAC地址。该请求由目标节点接收(其他任何人都忽略),并使用其MAC地址进行回复。

一旦知道了MAC地址,源就可以将IP数据包封装在以太网帧中并发送出去。

ARP仅可用于任何本地 IP地址,即与发送者位于同一子网中的地址。如果您的本地IP地址是192.168.86.2/24的目的地192.168.86.40是本地的。

发送到本地子网之外的IP地址 需要一个网关(路由器)-这可以是默认网关,也可以是本地路由表指示的另一个特定网关。 ARP仅用于解析网关IP地址。 IP数据包以网关的MAC地址作为目标进行封装并发送出去。

网关重复此过程-在本地时通过ARP解析目标IP,或使用其路由表查找下一个跃点网关,解析其IP地址并转发到该MAC。重复这些步骤,直到到达目的地。

因此,您的问题的答案是:

  • 主机使用其本地路由表来确定向目的地(可能是目的地本身)的下一跳
  • 使用ARP(对于IPv4)将下一跳的IP地址解析为其MAC地址
  • IP数据包被封装在以该MAC为目标的以太网帧中并发送出去

当然,除了以太网以外,还有其他链路层,但是一般过程与所有基于MAC的网络相同。