在下正在学习网络相关的知识,现在遇到一个问题。
假设有这样一种网络拓扑结构
PC1<-->B2,B3<-->PC2
其中PC1为1号PC,PC2为2号PC,它们连接到路由器B的端口2和端口3上,其中PC1的IP1为192.168.1.100,PC2的IP2为192.168.1.101,它们的网关(路由器的IP)为192.168.1.1,PC1的MAC地址为MAC1,PC2的MAC地址为MAC2,路由器的MAC地址为MAC3。
现在假如PC1要发一个数据包给PC2(子网内的数据传输),
首先是PC1的网络层将源IP(IP1)和目标IP(IP2)封装成数据包,然后PC1的链路层通过将目标地址IP2和自己的子网掩码进行与运算后,发现它们是一个子网,那么封装数据帧时源MAC为MAC1,目标MAC为MAC2(这里忽略ARP请求),封装成数据帧后传输到路由器B的端口B2上,
问题来了,因为我们封装的这个数据帧的目标MAC地址不是路由器的,它会接收吗?如果不会,那么传输过程是怎样的,难道PC1封装的数据帧的目标MAC是路由器的MAC吗?如果会,那么路由器的“网卡”应该是处于混杂模式?
如果会接收目标MAC不是路由器的情况,那么路由器B接收到这个数据帧以后,又是如何找到IP2对应的PC2所在的端口并传给它的?是不是PC2在连接路由器时,已经将这个MAC地址和对应的IP地址以及对应连接的端口B3在路由器内部进行了记录?当需要用到时直接将数据发送到这个端口上去?
本人现在处于小学生阶段,有些理解的和描述的不到位还请各位理解。