路由器如何将数据包发送回PC?

时间:2014-03-04 05:34:21

标签: networking routing switching vlan

考虑我有一个连接到多个终端设备的开关的情况,例如X,Y,Z,其中X在Vlan_X中,Y在Vlan_Y中,Z在Vlan_Z中。

此交换机通过路由器连接到外部网络以路由数据。此外,每个Vlan都指定一个唯一的IP,因为每个Vlan代表一个子网。

现在,X和Y都通过网络发送TCP / UDP请求,该请求通过路由器进行路由。

我的问题是路由器在回复它们的回复时如何识别X和Y的MAC地址?

由于Router和Switch之间的线路启用了Trunk,Router如何在802.1q中添加与X或Y对应的正确Vlan ID?

由于 查兰

1 个答案:

答案 0 :(得分:0)

暂时忽略vlan的存在 - 假设你有三个独立的设备

switch_VX switch_VY switch_VZ ,主机 X,Y,Z 连接到它们。

现在假设您的路由器有一条与每台交换机不同的以太网电缆。

在路由器上,您将拥有三个不同的以太网端口。 eth_VX eth_VY eth_VZ

在此设置中,它应该是显而易见的。

  • 对于您正在使用的任何协议(IPv4,IPv6,AppleTalk,IPX等),每个交换机都拥有自己的第3层协议地址子网
  • 路由器需要在每个接口上进行配置,该接口的地址范围与交换机使用的地址范围相同。
  • 然后路由器通过查看协议地址到达主机,查找匹配的接口,然后使用正确的协议 - > mac转换机制与终端主机通信。
    • 对于IPv4,这意味着路由器查找其路由表,找到 eth _ ?? ,然后在ARP表中查找它正在寻找的主机的MAC地址
  • 每台主机都配置了其所使用的交换机上的子网地址,并且每台主机都配置为使用路由器的地址作为其默认网关。

从逻辑上讲,它的确切运作方式 - 始终如此。 但是,限制人们为每个子网使用单独的交换机组效率不高。要求每个交换机使用单独的以太网电缆和路由器上的端口是不高效的。当您想要提供适当的服务并添加冗余电缆和路由器等时,它会变得更加昂贵。

因此,制造商稍微改变了物理拓扑结构,并将一些物理内容转移到配置的软件中。然而,这些设备仍在完成同样的工作。

因此,您可以在设备(或一组设备)上使用单独的vlan,而不是使用单独的开关。 在上面的说明中,将 switch_VX 替换为 switch_vlan_X 。交换机上的VLAN配置可以有效地创建完全独立的交换机。它运行自己的MAC地址表,它有自己的生成树运行副本。在交换机内部,它必须记录每个以太网帧内的VLANID - 这样才能确保它永远不会被发送到错误的端口。交换机在收到帧时添加VLANID,并在发送之前将其剥离。所以终端主机不知道它正在发生。它全都隐藏了。

因此,删除多个开关,我们可以在一个开关上配置我们的vlan。

但我们的路由器仍有多条线缆。因此,让我们通过配置交换机引擎将连接到路由器的端口视为特殊端口来解决这个问题。不要剥离所有帧的VLANID - 而是将帧发送到路由器,其中仍然存在VLANID。我们需要就帧的通用格式达成一致,因此路由器知道在哪里寻找。 802.1Q是行业标准,但还有其他一些选择。大多数供应商将端口称为“主干”'''端口配置为将VLANID保留在原位。

现在,路由器在单个接口上获得了一组帧,但是在那里需要删除VLAN标识符。让我们让路由器在软件中做到这一点。 所以在上面的描述中,代替不同的以太网接口;我们有一个了解VLAN的软件界面。用eth_vlan_X替换eth_VX的所有提及。 现在,路由器知道它何时获得属于VLAN X的帧,它与接口eth_vlan_x相关联,并且它可以删除VLANID并对其进行适当处理。 如果路由器想要从接口eth_vlan_x发送一个帧,它就知道它需要将VLANID X插入到每个fraame中。

因此我们从逻辑设置开始,并将物理布局更改为更灵活,更高效。但是,从逻辑上讲,它与使用独立独立设备的设置完全没有区别。