如果主机从服务器接收数据包,则这些数据包具有主机的目的IP地址,并且首先由主机网络中的网关接收。现在网关检查ARP,使用主机的IP地址进行索引以查找主机的MAC地址,现在它将链路层(4层internet模型)目标地址(MAC地址)更改为从ARP表中找到的主机MAC地址。然后将帧转发到第二层交换机。但是我的问题是,它如何将帧转发到第二层交换机,因为帧有主机的目标MAC地址,而不是交换机的MAC地址。显然,网关不能将数据包直接转发到主机,因为它们没有连接,所有数据包都必须通过交换机才能到达目标主机。那我错过了什么?我是不是理解错了?
发布于 2020-05-07 06:58:26
假设路由器和主机之间的链路层确实是基于MAC的链路层,并且第2层通过交换机进行切换,那么,是的,您正确地了解了路由器如何查找IP地址,看到这个子网直接连接到它的一个接口,因此它查找ARP表并将MAC地址设置为主机的MAC地址。不过,请注意,IP地址查找是第三层逻辑,而路由器则将其传递给连接到子网的接口的网络接口卡,而第二层逻辑则为主机找到正确的MAC地址。
我认为您的混淆是因为您认为路由器需要通过将MAC地址设置为交换机的MAC地址来将MAC帧发送到交换机。不,路由器只需要知道发送MAC帧的接口,以及主机的MAC地址。当时没有额外的“路由”需要交换机的MAC地址才能使之成为“目的地”。第二层目标是主机,主机MAC地址是正确使用的地址。
然后路由器在该接口上发出第二层帧,交换机将接收到它并查看MAC地址。交换机还维护一个ARP表,将已知的MAC地址映射到端口,然后将帧从主机的正确端口传递出去。
ps。你可能会想,交换机本身的MAC地址的目的是什么?这适用于交换机本身是端点的情况,例如,交换机支持通过http接口进行配置。但这与交换机只是通过第2层帧从一个端口到达预定目的地的情况不同。
发布于 2020-05-07 06:31:19
路由器不会改变MAC地址。它发送数据包。在接收时,它将MAC帧从包中剥离,它已经完成了它的工作(从前一跳传输数据包)。然后路由器查询其路由表,确定下一个跳地址(和接口),并将数据包传递给它。
在基于MAC的链路层上“传递数据包”需要MAC帧来封装数据包。在其他细节中,MAC帧需要一个目标MAC,它是下一跳的MAC,由ARP为IPv4确定,NDP为IPv6。下一跳可以是通往目的地的网关,如果是本地的话,也可以是目的地本身。
位于路由器和目标/下一跳之间的任何交换机对链路层都是完全透明的。交换机使用目标MAC将帧转发到其本地目的地。框架本身没有改变。
并非所有的网络都是基于MAC的。无处不在的以太网或Wi是,但例如,串行链路不是。点对点连接一般不需要这样的地址。
发布于 2020-11-21 15:48:39
从服务器接收的数据包。服务器将将数据包发送到在服务器网络适配器属性上配置的网关ip地址。数据包将到达网关
例如,如果在路由器上配置了网关。数据包将从路由器到达路由器,数据包将进行路由表验证,如果目的地是直接连接的网络,则验证ARP表。
ARP table maps ip address ==>mac address table
进一步的数据包将从路由器到达L2交换机。在L2交换机中,对mac地址表进行了验证。
Mac address table maps mac address ==> switch ports
如果目标ip地址不是直接连接的网络。然后它将验证路由表,并按照路由表将数据包转发到下一跳。
https://networkengineering.stackexchange.com/questions/67748
复制相似问题