目录
3. 从网线到网络设备—探索集线器、交换机和路由器
3.1 信号在网线和集线器中传输
3.1.1 每个包都是独立传输的
3.1.2 防止网线中的衰减很重要
3.1.3 “双绞”是为了抑制噪声
3.1.4 集线器将信号发往所有线路
3.2 交换机的包转发操作
3.2.1 交换机根据地址表进行转发
3.2.2 MAC地址表的维护
3.2.3 特殊操作
3.2.4 全双工模式可以同时进行发送和接收
3.2.5 自动协商:确定最优的传输速率
3.2.6 交换机可同时执行多个转发操作
3. 从网线到网络设备—探索集线器、交换机和路由器
3.1 信号在网线和集线器中传输
3.1.1 每个包都是独立传输的
这一小节就介绍了一个概念:就是每个包在互联网中的传输都是独立的。就是转发设备对包进行转发时是不看数据内容的,它只关心把包转发到下一个转发设备,Http请求的方法,tcp的确认响应和序号、客户端和服务器之间的关系一切都与包的传输无关。
本章就是在探索网络包在进入互联网之前经历的传输过程。假设客户端计算机连接的局域网结构是像图3.1这样的。也就是说,网络包从客户端计算机发出去之后,要经过集线器、交换机和路由器最终进入互联网。但实际上,家里使用的路由器已经集成了集线器和交换机的功能,像图中这样独立使用的情况很少。不过作者为了方便大家理解,在本章还是拆分了出来讲解。
图1
3.1.2 防止网线中的衰减很重要
本章的探索从信号从网卡的流出开始。网卡中的PHY(MAU)模块复杂将包转换成电信号,信号通过RJ-45接口进入双绞线。以太网信号的本质是正负变化的电压,可以认为网卡的PHY(MAU)模块就是一个从正负两个信号端子输出信号的电路。
图2
信号从RJ-45接口流出后通过网线到达集线器的接口,这个过程就是单纯地传输电信号而已。但是信号到达集线器的时候并不是和刚发出去的时候一模一样。集线器收到的信号有时会出现衰减。信号在网线的传输过程中能量会逐渐损失,网线越长,信号衰减就越严重。
图3
信号损失能量并非只是变弱而已。以太网中的信号波形是方形的,但损失能量会让信号的拐角变圆,这是因为电信号的频率越高,能力损失率越大。信号的拐角意味着电压发生剧烈的变化,而剧烈的变化意味着这个部分的信号频率很高。高频信号更容易损失能量,因此本来剧烈变化的部分就变成了缓慢的变化,拐角也就变圆了。
如果传输过程再加上噪声的影响,失真就会更厉害。如果已经衰减的信号再进一步失真,就会出现对0和1的误判,这就是产生通信错误的原因。
3.1.3 “双绞”是为了抑制噪声
“双绞”就是以两根信号线为一组缠绕在一起,这种拧麻花一样的设计就是为了抑制噪声的影响。
噪声是如何产生的:产生噪声的原因是网线周围的电磁波,当电磁波接触到金属等导体时,在其中就会产生电流。因此,如果网线周围存在电磁波,就会在网线中产生和原本的信号不同的电流。由于信号本身也是一种带有电压变化的电流,其本质和噪声产生的电流是一样的,所以信号和噪声的电流就会混杂在一起,导致信号的波形发生失真,这就是噪声的影响。
影响网线的电磁波分为两种。一种是由电机、荧光灯、CRT显示器等设备泄漏出来的电磁波。信号线使用金属做的,当电磁波接触到信号线时,会沿电磁波传播的右旋方向产生电流,这种电流会导致波形发生失真。如果将信号线缠绕在一起,信号线就会变成螺旋形,其中两根信号线中产生的噪声电流方向就会相反,从而使得噪声电流相互抵消,噪声就得到了抑制。如下图。简单来说就是产生的噪声电流由于方向相反相互抵消了。当然原来的电信号还是可以正常传输,只是噪声抵消了。
图4
另一种电磁波是从网线中相邻的信号线泄漏出来的。因为传输的信号本身就是电流,当电流流过时就会向周围发出电磁波,这些电磁波对于其他信号来说就成了噪声。这种内部的噪声称为“串扰”。
这种噪声的强度其实不高,但是噪声源的距离太近了。要抑制这种噪声,关键在于双绞线的缠绕方式。在一根网线中,每一对信号线的扭绞间隔都有一定的差异,这使得在某些地方正信号线距离近,另一些地方则是负信号线距离近。由于正负信号线产生的噪声影响是相反的,所以两者就会相互抵消。从网线整体来看,正负的分布保持平衡,自然就会削弱噪声的影响。
还有一些其他工艺可以帮助提升性能,减少噪声干扰。例如在信号线之间假如隔板保持距离,以及在外面包裹可阻挡电磁波的金属屏蔽网等。下图是现在双绞线的主要种类。
图5
3.1.4 集线器将信号发往所有线路
集线器的内部结构如上面图2的左侧部分所示。在每个接口的后面装有和网卡中的PHY(MAU)功能相同的模块,但是它必须将“发送线路”和“接收线路”连接起来才能正常接收信号。集线器的接口中有一个MDI/MDI-X切换开关,MDI就是对RJ-45接口和信号收发模块进行直接连线,而MDI-X是交叉连线。连接两台集线器时就需要其中一台为MDI,另一台为MDI-X。如果集线器上没有MDI切换开关,而且所有接口都是MDI-X时,可以用交叉网线连接两台集线器。交叉网线就是一种将发送和接收信号线反过来接的网线。
图6
信号到达集线器的PHY(MAU)模块后,会进入中继电路。中继电路的基本功能就是将输入的信号广播到集线器的所有端口上。然后这些信号从所有接口流出,到达连接在集线器上的所有设备。然后这些设备收到信号后通过MAC头部的接收方MAC地址判断是不是发给自己的。如果是就接收,然后判断FCS,判断包有没有出错。
3.2 交换机的包转发操作
3.2.1 交换机根据地址表进行转发
信号从双绞线到达网线接口,然后再传入到PHY(MAU)模块,它会将网线中的信号转换为通用格式,然后传递给MAC模块。MAC模块将信号转换为数字信息,然后通过包末尾的FCS教研错误,如果没问题就放到缓冲区里面。大家可以认为交换机的每个网线接口后main都是一块网卡。但是网卡是本身有MAC地址的,而交换机的端口不具有MAC地址,它不核对接收方的MAC地址,而是直接接收所有的包并存放到缓冲区。交换机就单纯地进行转发操作,不管是发给谁的包。
图7
存入缓冲区后,接下来需要查询这个包的接收方MAC地址是否在MAC地址表中已经有记录了,MAC地址表主要维护两个信息,一个是设备的MAC地址,一个是设备连接在交换机的哪个端口上,找到对应的MAC地址,就知道把这个包转发到哪个端口了。
图8是交换电路的结构图。它可以将输入端和输出端连接起来。其中,信号线排列成网格状,每一个交叉点都有一个交换开关,交换开关是电子控制的,通过切换开关的状态就可以改变信号的流向。从右侧那个圆的小图可以想象到,这个就是可以控制电流的流向,向右或者向下,假如向从2号端口发向7号端口,那么就让2号那一排的前7个和7号那一列的前7个都打开,就可以流向7号端口了。每个交叉点上的交换开关都可以独立工作,因此只要路径不重复,就可以同时传输多路信号。
图8
网络包通过交换电路到达发送端口时,端口中的MAC模块和PHY(MAU)模块会执行发送操作,将信号发送到网线中,这部分和网卡的过程是一样的。同时还要确认有没有其他设备在发送信号,如果有则需要等待信号发送完,如果没有,就可以将数字信息转换成电信号发送出去。发送过程中还需要对接收信号进行监控,这一点也是和网卡一样的。如果在发送过程中检测到其他设备发送信号,就说嘛出现了信号碰撞,这时需要发送阻塞信号以停止网络中所有的发送操作,等待一段时间后再尝试重新发送。
3.2.2 MAC地址表的维护
交换机会对其本身的MAC地址表进行维护。维护类型有两种。
第一种是收到包时,将发送方的MAC地址以及其输入端口的号码写入MAC地址表中。交换机每次收到包时都会执行这个操作,因此只要某个设备发送过网络包,它的MAC地址就会被记录到地址表中。
第二种是删除地址表中的某条记录。这是为了防止设备移动时产生问题。比如当开会时把笔记本电脑从办公桌拿到会议室,这时设备发生了移动,从交换机的角度看,就是本来连接在某个端口的笔记本电脑消失了。这时如果交换机收到了发往这台已经消失的笔记本电脑的包,那么它依然会将包转发到原来的端口,通信就会出错,因此必须想办法删除那些过时的记录。然而交换机没办法知道这台笔记本已经从原来的端口移走了。因此地址表中的记录不能永久有效,而是要在一段时间不使用后就自动删除。
3.2.3 特殊操作
这一小节查看两种特殊情况。
第一种是将包发回源端口。如下图所示两台计算机连接同一个集线器又连接一个交换机。当A想要发送一个包给B,当A发送的包到达集线器后会被集线器转发到所有端口上,B和交换机就都会收到。然后交换机又会转发这个包,转到集线器,集线器又将其转发到A和B。这就会有通信问题。所以当交换机发现一个包要发回源端口时,就会直接丢弃这个包。
图9
第二种是地址表中找不到特定的MAC地址。这可能是因为具有该地址的设备还没有向交换机发送过包,或者这个设备一段时间没有工作导致地址被从地址表中删除了。这种情况下,交换机无法判断应该把包转发到哪个端口,只能将包转发到除了源端口之外的所有端口上,无论该设备连接在哪个端口上都能收到这个包。这样做不会产生什么问题,因为以太网的设计本来就是将包发送到整个网络的,然后只有相应的接收者才接收包,而其他设备则会忽略这个包。
此外,如果接收方MAC地址是一个广播地址,那么交换机会将包发送到除源端口之外的所有端口。
3.2.4 全双工模式可以同时进行发送和接收
全双工模式是交换机特有的,可以同时进行发送和接收操作,之前讲的集线器只能半双工。
使用集线器时不能多台计算机同时发送信号,否则会发生信号碰撞,可见第二章下的2.5.9 向集线器发送网络包。
使用双绞线时,发送和接收的信号线是各自独立的,因此在双绞线中不会发生碰撞。交换机端口和网卡的PHY(MAU)模块以及MAC模块,其内部发送和接收电路也是各自独立的,信号也不会发生碰撞。
如果不存在碰撞也就不需要半双工模式中的碰撞处理机制了。但是以太网规范规定了在网络中有信号时要等到该信号结束后再发送,因此发送和接收还是无法同时进行。于是人们对以太网规范进行了修订,增加了一个无论网络中有没有信号都可以发送信号的工作模式,同时规定在这一工作模式下停用碰撞检测。这种工作模式就是全双工模式。它比半双工模式的速度要快,而且因为能同时发送和接收所以传输的数据量也更大,性能也就更高。
图10
3.2.5 自动协商:确定最优的传输速率
随着全双工模式的出现,现在就有了全双工和半双工两种模式,那么如何在这两种模式之间切换呢?起初是需要手动进行切换,但是这样太麻烦。后来出现了自动切换工作模式的功能,可以由相互连接的双方探测对方是否支持全双工模式,并自动切换成相应的工作模式。还可以探测对方的传输速率并进行自动切换。这种自动切换的功能称为自动协商。
在以太网中,当没有数据在传输时,网络中会填充一种被称为连接脉冲的脉冲信号。它可以监测对方是否在正常工作,或者说网线有没有正常连接。以太网设备的网线接口周围有一个绿色的LED指示灯,它表示是否监测到正常的脉冲信号。如果绿灯亮,说明PHY(MAU)模块以及网线连接正常。
如下图所示这样的具有特定排列的脉冲信号,通过这种信号可以讲自身的状态告知对方。自动协商功能就利用了这样的脉冲信号,即通过这种信号将自己能支持的工作模式和传输速率相互告知对方,并从中选择一个最优的组合。
图11
3.2.6 交换机可同时执行多个转发操作
交换机只将包转发到具有特定MAC地址的设备连接的端口,其他端口都是空闲的,但是空闲的端口也可以传输其他的包,因此交换机可以同时转发多个包。如3.2.1图8所示,通过交换开关可以流向不同端口。集线器无法同时传输多路信号,因为会发生碰撞。所以从设备整体的转发能力来看,交换机要高于集线器。