之前在和大家谈到网线的问题的时候,会告诉大家即便是你的网线做得很烂,你在使用的时候也是没有什么感觉的。
原因在于很多网络上的错误都被网络协议及时的修正了。这也就导致了很多人觉得自己的网络是没有问题的。
所以说,网线做得再烂,只要不烂到一定程度,大家在日常的使用过程中几乎不会出现任何可以感知到的问题。
但是,即便是在使用网络的过程中感觉不到网络的问题,并不不一定代表网络是没有问题的,唯一的解释也是——大家的感知比起计算机系统的处理速度来说过于迟钝了。
而网络上充斥着很多“榨干宽带最后一丝带宽”的文章,这种东西四两拨千斤单车变摩托很有蛊惑性,只是,话说回来,你家的网络质量所带来的损失要比所谓的“榨干”获得的收益大得多,只是你不知道有这些带宽刺客罢了。
发个iN家的弱电箱,这是iN家里网络的一个组成部分:
起初刚刚拿到房子的时候,只接入了一个最普通的联通光猫路由器,下卦了一个软路由,然后挂一台测试用的小主机和一个Tp-link的AP,这就是iN家里最早的网络结构了。
后来开始组建自己的家庭网络的时候规划了一下,这个小弱电箱作为家庭娱乐的子网节点就被保留了起来,塞入一台2光8电的小交换机,利用房间现有的线管将基础网络通向各个房间。
弱电箱很窄、很挤,几乎是塞满了。
不过,在之前给大家讲过怎么做弱电箱、怎么打水晶头、和怎么做墙面面板的,iN自己也是属于身体力行的做自己的家庭网络的。
报个成绩吧:
设备温度59度,可接受,连续运行58天17个小时,这是刚刚看的。
上面的两个光模块温度45度,也是可以接受的范围。
运行了这么长时间的一套网络设备,在网络传输中有多少错误呢?
所有可检测到的错误数量为“0”
这是什么水平呢?其实这仅仅是网络可以用。
说下交换机所监控的项目:
Rx Pauses: 表示接收端口因为流量控制而暂停的次数。这可以用于检测网络拥塞或流量控制的情况。Rx Errors: 表示接收时发生的错误次数,可能涉及到传输问题或硬件故障。Rx FCS Errors: 表示接收时发生的帧校验错误的次数,可能表明数据在传输过程中发生了错误。Rx Jabber: 表示接收时发生的Jabber错误的次数,通常指接收到的数据帧长度异常。Rx Runts: 表示接收到的运行ts(太短)帧的次数,可能是由于传输问题导致的。Rx Fragments: 表示接收到的片段帧的次数,可能与网络问题有关。Rx Too Long: 表示接收到的超长帧的次数,可能涉及到网络配置或硬件问题。Tx Pauses: 表示发送端口因为流量控制而暂停的次数。Tx FCS Errors: 表示发送时发生的帧校验错误的次数,可能表明数据在传输过程中发生了错误。Tx Collisions: 表示发送时发生的冲突的次数,可能与网络碰撞有关。Tx Single Collisions: 表示发送时发生的单次冲突的次数。Tx Multiple Collisions: 表示发送时发生的多次冲突的次数。Tx Excessive Collisions: 表示发送时发生的过多冲突的次数。Tx Late Collisions: 表示发送时发生的延迟冲突的次数。Tx Deferred: 表示发送时发生的延迟的次数。其中有几个项目是和网线的质量有关系的:
Rx FCS Errors: 帧校验错误可能由于网线质量不佳导致数据在传输中受损。
这是由于网络数据在传输过程中帧的奇偶校验出现错误所导致的错误计数,数据包在传输过程中被做成“数据帧”,在网线上的表现就是一串高低电平的电信号,在传输过程中如果受到了网线内部的干扰或者外部的电磁干扰,原始的高低电平信号就会在传输过程中出现多余的高电平或低电平,这时候奇偶校验(CRC)就起到作用,在接收端会根据一段网络传输内容的奇偶数特性来判断这段数据帧是否是原始的没有经过篡改的数据帧。
如果CRC出现错误,就会直接丢弃这个数据帧,再发送一个信号到发送设备,让设备进行重新传输。
在有的交换机中就有对于Rx FCS的计数功能,我们可以从状态或者错误报表中看到这种错误的数量是多少。从而去评估网络线路的质量。
Rx Runt 接收残帧,刚刚我们说到了网络的干扰会导致CRC校验不通过,如果网络线路上的干扰家加剧,那么接收设备有可能接收到的帧不完整,这时候就会触发RX Runt错误。说下这种错误:
一个网络数据帧是有固定的格式的。
在传输数据的时候数据包会封装成帧,帧的头部根据不同的网络模式是固定格式的帧头(frame header),在其中就有帧长度的标识Length,这个长度标识记录了当前的帧所传输的数据长度。在接收设备获取了一个网络帧之后会根据长度标识来计算接收到的网络帧是不是和长度标识的数字相符,如果小于长度标识所记载的量值,那么这个帧就是一个Runt(侏儒)也就是我们所说的RX Runt(接收残帧)了。为啥残了呢?丢东西了呗。怎么会丢呢?99.9999%的可能性就是网线不行。
和RX Runt相似的还有Rx Too Long,还是检测帧的长度是否和记录值相符,网络设备接收到的帧数据比预期的多?原因也是网线不抗干扰,外部的干扰在一串高低电平之中夹带了私货。
Tx Collisions,前面说到的都是RX(接收)所包含的问题,还有一种故障直接“捂住了嘴”,让你的网络在发送数据的时候出现问题。这就是“发送碰撞”。实际上这是半双工网络时期遗留下来的一个设计,简单的理解就是在发送数据的时候网络设备要在网络上大喊一声“爷要说话了”,这时候其他设备就会闭嘴倾听。在网络的设计中如果其他设备要发送数据的话,就会随机延迟一个小时间片等到这个小时间片到了,自己也喊一声“爷要说话了”,就可以发送数据了。这里面就包含了一个碰撞域(collision domain)的大小设置问题了。太大的碰撞域会导致在一个时间片里面有大量网络设备喊话,这就导致了最后谁也说不了话。这是半双工网络的事情,在大部分现代网络全双工系统中现在已经不需要刻意处理了。
但是还有一个问题,当你在野外对着大山喊“你好”的时候,你会听到回声“你好……你好……你好……”,网线中传输的信号也是这样,一部分进入了接收端,另一部分还会在网线中形成不断衰减的回声。当回声衰减不到位的时候,你的设备可以“听”到自己喊出的“爷要说话了”,这时候你的设备就得闭嘴。
现在网络系统中的TX collision大多数都是自己和自己碰,问题也出在网线的质量上。
这些问题大部分都会造成数据重新发送或者发送延迟。最终导致你的网络速度降低。实际上选择一个好的网线,或者安装规范来制作部署网线都是为了降低网络系统上可以检测到的错误数量。但由于大多数家用设备根本不提供这些错误的统计报表,知道这些错误的人就少之又少了。
所以用ping、测速网站来看自己网络速度并不能看到网络协议容错系统处理过的这些底层错误。但要知道的一点是,这些“底层错误”就像空气中的病毒一样,虽然你看不见,但是还依旧会对你造成实质性的影响。所以在某些人看来网络的好坏也就成了玄学。
在“榨干宽带带宽”的同时,你有没有想过选择好一点的网线、利用更规范的布线方式先把自己的网络中的隐患去除掉呢?
iN家的弱电箱是比较挤、比较乱、比较不符合强迫症的,但看数据是个啥水平呢?