光猫有啥区别 光猫有什么区别( 三 )


从A网口进入集线器的消息,此时还是电信号 。这里经过一个PHY模块 。

要理解PHY模块的作用,首先要先了解每个网口,都可能接着网线(废话),而每根网线的传输的格式都是有可能不同的 。而PHY的作用,就是把这些格式转化为一个通用的格式 。
举个例子 。PHY就好比一个翻译器,有的人说英文,有的人说日文 。但是PHY,会把它统一转为普通话,给内部电路处理 。内部电路处理完之后,再经过PHY模块,转为英语,或日文从对应网口里输出 。
经过PHY的处理后,以电信号的形式输入到中继电路,被无脑广播,再次经过PHY模块后变成BCD网口的格式输出 。
这里面的电信号,是会受噪声干扰,导致信号形变出错的 。
但就算是错了,也还是会原封不动的广播出去,这就是上面提到无脑的精髓所在 。
那信号如果出错了怎么办?
只能让接收方收到消息后进行校验 。
还记得上文里提到的数据链路层的MAC报头里最末尾有个FCS吗?
FCS里存放的是发送方通过循环冗余校验CRC计算得到的值 。
接收方用收到的数据算一次CRC,与FCS里的值进行对比 。
如果一致,那证明数据没问题 。如果出错,则直接丢弃
当然,丢弃包并不会影响数据的传输,因为丢弃的包不会触发确认响应 。因此协议栈的 TCP 模块会检测到丢包,并对该包进行重传 。
如果消息没出错,但是因为无脑广播,C也能收到A发给B的数据包 。
此时 C 会在接受到数据包后一层层的"剥开" 。
正常情况下,在数据链路层时,识别到目的 MAC 地址跟 C 的不一致时,也会把数据丢弃
什么是交换机目前只有 ABC 三台机器,每次都是广播发消息倒还好 。
如果机器越来越多,每台机器发一条消息,都会被广播,就有点顶不住了 。
举个例子 。
假设N台机器,其中两台机器A和B,A发到B和B发给A,共两条消息 。
如果这N台机器,用的是集线器 。还是AB之间互发消息,每条消息都是广播的话,就是(N-1)+(N-1)条消息,差距有些大,对网络资源浪费就有些严重了 。
那么,有没有可能做到,A发给B的消息,就不要转发给C呢?
可以的,把集线器换成交换机 。
交换机,又叫switch,跟集线器长得很像 。
但是功能更强一些,从网络分层上来说,属于数据链路层,比集线器所在的物理层还要高一层 。
所有发到交换机的数据,都会先进入交换机的缓存区 。接着消息再被转发到对应机器上 。
注意这里用的是转发,而不是集线器的广播,交换机是怎么做到转发的呢?
MAC地址表交换机内部维护了一张MAC地址表
记录了 端口号和MAC地址的对应关系 。
这个表的数据是交换机不断学习的结果 。
当A发消息到交换机时,交换机发现消息是从1号端口进来的,则会在MAC地址表上,记录A的MAC地址对应1号端口 。
如果A没有很长时间没发消息到这个1号端口,那这条记录就会过期并被删除
那么,当时间足够长,ABC 都发过消息给交换机后,地址表就会有完整的关系信息 。