为什么路由器不能使用 MAC 地址而不是私有/本地 IP 地址?

Dra*_*vuk 7 networking router routing

我理解之所以需要公共 IP 地址的原因是,如果我们只有 MAC 来在一台主机和另一台主机之间移动数据,那么整个 Internet 将是一个大型扁平网络。但是对私有 IP 地址的需求是什么?为什么路由器不能仅使用其 MAC 地址连接到本地客户端?

ice*_*ava 9

答案是您的软件应用程序和操作系统旨在使用 TCP/IP 进行通信,而不是直接使用以太网 MAC 地址进行通信。

因此,无论您希望与之通信的远程计算机/节点是在您的本地网络中还是在地球另一端的某个其他网络中,该逻辑链接都是通过 TCP/IP 建立的。这样应用程序只需在 IP 数据包中定义目标 IP 地址,用数据填充它(实际上是打包到 TCP/UDP 段中),然后沿途发送它,而不必担心底层如何处理实际传输.

操作系统的网络堆栈确定 IP 地址是本地还是远程:

  1. 如果是本地网络,则查找该 IP 地址对应的 MAC 地址并直接发送 IP 数据包,该数据包在以太网帧中。
  2. 如果是远程网络,查找默认网关路由器的 MAC 地址以发送 IP 数据包,也在以太网帧内。路由器从帧中检索 IP 数据包,查看地址并确定下一个节点(及其 MAC 地址)以传递它,然后在另一个以太网帧中将其发送到该方向。

注意:IP 数据包完全有可能通过以太网以外的另一种数据链路协议传送(猜猜是什么,您的拨号或 DSL 调制解调器没有通过以太网电缆连接到您的 ISP)。只要目标 IP 地址可达,应用程序就不必关心。也完全可以将其他网络协议数据(即非 IP 数据包)包裹在以太网帧中进行传输。