数据帧在交换机间转发
帧经过交换机时,其源、目标MAC是不会变的。
交换机内部的CPU会在每个端口成功连接时,通过将MAC地址和端口对应,形成一张MAC表。在今后的通讯中,发往该MAC地址的数据包将仅送往其对应的端口,而不是所有的端口。因此,交换机可用于划分数据链路层广播,即冲突域;但它不能划分网络层广播,即广播域。
这种情况只需要坚持一个原则,数据帧在交换机之间转发不更改源MAC地址和目标MAC地址;
就好比主机A和主机B通过若干个交换机相连(并没有路由器在中间),那么此时的MAC地址是什么?源MAC地址自然是主机A的网卡所对应的MAC地址,目标MAC地址则是主机B的网卡所对应的MAC地址;
数据帧在路由器间转发
帧经过路由器时,进行路由转发,IP地址不会变的,但MAC地址一定会变 。
路由转发过程
当主机A发向主机B的数据流在网络层封装成IP数据包,IP数据包的首部包含了源地址和⽬标地址。主机A会⽤本机配置的24位IP网络掩码255.255.255.0与目标地址进⾏与运算,得出⽬标网络地址与本机的⽹络地址是不是在同⼀个⽹段中。如果不是将IP数据包转发到网关。
在发往⽹关前主机A还会通过ARP的请求获得默认⽹关的MAC地址。在主机A数据链路层IP数据包封装成以太网数据帧,然后才发住到网关……也就是路由器上的⼀个端⼝。
当网关路由器接收到以太网数据帧时,发现数据帧中的目标MAC地址是自己的某⼀个端⼝的物理地址,这时路由器会把以太网数据帧的封装去掉。路由器认为这个IP数据包是要通过自己进行转发,接着它就在匹配路由表。匹配到路由项后,它就将包发往下⼀条地址。
路由器转发数据包就是这样,所以它始终是不会改IP地址的。只会改MAC。
当有数据包传到路由器时,路由器首先将其的目的地址与路由表进⾏对⽐,如果是本地⽹络,将不会进⾏转发到外⽹络,⽽是直接转发给本地⽹内的目标主机;但是如果目标地址经路由表对比,发现不在本⽹中,nat就将改变源地址的IP(原源地址的Ip地址改为了路由器的IP地址),路由器将数据包转发到相应的端⼝,进⾏通信。
例如路由器A,B,C,D相连,那么源地址就是(IP-x:MAC-x),目的地址就是(IP-y:MAC-y)。
当A——>B时,源IP地址还是IP-x,目的IP地址还是IP-y,源MAC地址和目标MAC地址则是A,B相连的两个接口(MAC-a2,MAC-b1)。
当B——>C时,源IP地址还是IP-x,目的IP地址还是IP-y,源MAC地址和目标MAC地址则是B,C相连的两个接口(MAC-b2,MAC-c1)。
当C——>D时,源IP地址还是IP-x,目的IP地址还是IP-y,源MAC地址和目标MAC地址则是C,D相连的两个接口(MAC-c2,MAC-d1)。