计算机如何知道只使用IP而不是MAC将数据包发送到哪里



使用普通以太网电缆(接插电缆(时,可以使用以太网框架(https://en.wikipedia.org/wiki/Ethernet_frame)将数据发送到局域网中的其他计算机/设备。在以太网帧中,有一个源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地址而不是MAC地址来发送包含IP数据包的以太网帧

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地址作为目的地进行封装并发送出去。

网关重复这个过程——当目标IP是本地的时,通过ARP解析目标IP,或者使用其路由表找到下一跳网关,解析其IP地址并转发到该MAC。重复这些步骤,直到到达目的地。

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

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

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

最新更新