您的陈述在概念上是正确的,但细节并不完全正确。
像IP这样的第3层协议可以在整个Internet上将数据包从其源路由到目的地,但像ethernet这样的第2层协议只能为一个数据包路由数据包。当设备在TCP / IP网络上传输数据包时,它必须知道下一跳的以太网(第2层)地址和数据包最终目的地的IP(第3层)地址。
让我们看一下您描述的两种情况,使用设备A上的用户知道设备B的IP地址并希望向其发送数据包的情况。
同一(未切换)子网上的设备
- 设备A上的用户发出命令
ping 10.1.1.23
。
- 设备A广播ARP(第2层)请求,询问其网络中的哪个设备可以将数据包路由到IP地址10.1.1.23。
- 设备B将IP地址识别为自己的IP地址,并通过返回以IP和以太网地址为源,设备A的IP和以太网地址作为目的地的数据包来应答请求。
- 现在,设备A拥有与设备B通信所需的一切。它传输到设备B的每个数据包都将具有正确的以太网和IP地址作为目的地。
醇>
同一(已切换)子网上的设备
- 设备A上的用户发出命令
ping 10.1.1.23
。
- 设备A广播ARP(第2层)请求,询问其网络中的哪个设备可以将数据包路由到IP地址10.1.1.23。
- 交换机在其中一个端口上接收数据包,并在连接到设备B的任何端口上重新传输相同的数据包。这是交换和未交换子网之间唯一的重要区别。 /强>
- 设备B将IP地址识别为自己的IP地址,并通过返回以IP和以太网地址为源,设备A的IP和以太网地址作为目的地的数据包来应答请求。
- 现在,设备A拥有与设备B通信所需的一切。它传输到设备B的每个数据包都将具有正确的以太网和IP地址作为目的地。
醇>
不同子网上的设备
- 设备A上的用户发出命令
ping 8.8.8.8
。
- 设备A广播ARP(第2层)请求,询问其网络中的哪个设备可以将数据包路由到IP地址8.8.8.8。
- 地址8.8.8.8位于不同的网络上,因此没有本地设备将该地址识别为自己的地址。但是,路由器会看到数据包,检查其路由表,并发现它知道如何将数据包转发到8.8.8.x网络。因此,路由器通过返回具有自己的以太网地址作为源的数据包来回复。
- 现在,设备A可以通过发送目的地IP地址为8.8.8.8但路由器的以太网地址作为目的地的数据包与设备B通信。
- 路由器接收数据包是因为它们的目的地是其以太网(第2层)地址,但是它注意到它们的目标IP(第3层)地址与它自己的地址不同,因此它将它们转发到存储在其中的任何地址。它的路由表。
醇>
是的,你是对的。要访问其他网络(不同子网上的网络),客户端会将流量路由到其默认网关,该网关将适当地封装流量和路由。要在同一网络上进行通信,只需要第2层交换机。