1

如果我们在同一个网络中,则跳到跳通信由工作在 MAC 层的第 2 层设备(例如交换机、网桥等)进行。

但是,如果我们必须将数据包发送到其他网络中的目的地,那么跳到跳通信通过路由器进行。

它是否正确?

4

2 回答 2

3

您的陈述在概念上是正确的,尽管细节不太正确。

像 IP 这样的第 3 层协议可以通过整个 Internet 将数据包从其源路由到其目的地,但是像以太网这样的第 2 层协议只能为单跳路由数据包。当设备在 TCP/IP 网络上传输数据包时,它必须知道下一跳的以太网(第 2 层)地址和数据包最终目的地的 IP(第 3 层)地址。

让我们看一下您描述的两种情况,使用设备 A 上的用户知道设备 B 的 IP 地址并希望向其发送数据包的场景。

同一(非交换)子网上的设备

  1. 设备 A 上的用户发出命令ping 10.1.1.23
  2. 设备 A 广播 ARP(第 2 层)请求,询问其网络上的哪个设备可以将数据包路由到 IP 地址 10.1.1.23。
  3. 设备 B 将 IP 地址识别为它自己的地址,并通过返回一个以它的 IP 和以太网地址作为源、设备 A 的 IP 和以太网地址作为目标的数据包来响应请求。
  4. 现在设备 A 拥有与设备 B 通信所需的一切。它传输到设备 B 的每个数据包都将具有正确的以太网和 IP 地址作为目的地。

同一(交换)子网上的设备

  1. 设备 A 上的用户发出命令ping 10.1.1.23
  2. 设备 A 广播 ARP(第 2 层)请求,询问其网络上的哪个设备可以将数据包路由到 IP 地址 10.1.1.23。
  3. 交换机在其一个端口上接收数据包并在连接到设备 B 的任何端口上 重新传输相同的数据包。这是交换子网和非交换子网之间的唯一显着区别。
  4. 设备 B 将 IP 地址识别为它自己的地址,并通过返回一个以它的 IP 和以太网地址作为源、设备 A 的 IP 和以太网地址作为目标的数据包来响应请求。
  5. 现在设备 A 拥有与设备 B 通信所需的一切。它传输到设备 B 的每个数据包都将具有正确的以太网和 IP 地址作为目的地。

不同子网上的设备

  1. 设备 A 上的用户发出命令ping 8.8.8.8
  2. 设备 A 广播 ARP(第 2 层)请求,询问其网络上的哪个设备可以将数据包路由到 IP 地址 8.8.8.8。
  3. 地址 8.8.8.8 位于不同的网络上,因此没有本地设备将该地址识别为自己的地址。但是,路由器看到数据包,检查它的路由表,并看到它知道如何将数据包转发到 8.8.8.x 网络。因此路由器通过返回一个以自己的以太网地址作为源的数据包进行回复。
  4. 现在设备 A 可以通过发送目标 IP 地址为 8.8.8.8 的数据包与设备 B 通信,但路由器的以太网地址作为其目标。
  5. 路由器接收数据包,因为它们的目的地是它的以太网(第 2 层)地址,但它注意到它们的目标 IP(第 3 层)地址与它自己的不同,因此它将它们转发到存储在其路由表中的任何地址.
于 2012-05-14T02:50:27.007 回答
0

是的,你是对的。要访问其他网络(不同子网上的网络),客户端会将流量路由到其默认网关,该网关将封装流量并适当地路由。为了在同一个网络上进行通信,只需要一个第 2 层交换机。

于 2012-05-14T01:36:43.007 回答