还是从评论内容说起吧:
在光猫直连或拨号的文章里面,有粉丝有这样的留言:
其实要是看过iN之前的文章,就基本上没有这些问题了。——网络速度的快慢取决硬件性能,同时也取决于系统通道是否达标。
咱们再细致地说说吧。
这种现象主要会发生在软路由和笔记本电脑上。
笔记本电脑的问题很好解释,例如iN手头恰好有一台笔记本电脑,你如果打开它的设备管理器,你就会看到这台电脑使用的是一个叫做 intel 82579V的网卡
所有人都会觉得这是一“网卡”,其实如果你能熟悉一些IC知识的话,你会发现intel自己标注的82579V的全称是“Intel® 82579V Gigabit Ethernet PHY”很明显——这是一网络第一层的设备,也就是物理层(PHY)的收发器。网络计算的大部分功能都是依靠CPU来完成的。这也就可以被认为是一个“软网卡”。
它的性能严重的依赖CPU,自身的处理能力相当有限。
与intel所推崇的各种先进技术大部分无缘。不仅是没有什么先进技术,同时在处理数据的时候还会因为CPU的占用率导致网络性能的下降。
当然了,这还是相对不错的intel网络PHY收发器。如果是螃蟹的性能上的损失就更大了。
但为什么一旦PPPOE任务从路由器上转到笔记本上网络性能就下降了呢?
其实这件事不应该是PPPOE来背锅。
PPPOE的建立过程是在客户端没有合法IP地址的时候,启动PPPOE的探索进程(Discovery),在网络上寻找PPPOE服务器并进行认证,一旦找到后就会建立一个PPPOE的会话(Session),在session中只有两种数据在跑,一个PPPOE的链接维护报文,这是一个相当小的数据包,对网络传输的性能影响几乎是0,另外一个就是你上网的数据传输数据包了。网速高低都是由这种数据包传输的速率决定的。
如果PPPOE不背锅那么速度降低的锅是谁来背呢?
速度降低的问题就得从交换机原理上来看了:
从理论上讲,你可以不经过任何设备,把三台或三台以上的计算机通过它们各自的一个网口连成网络——只要你把网线按照一定规则汇合连接起来就可以。
利用这种方法可以省去大量的设备。这也是以太网的一个基本技术。在这个基本技术基础上就产生了一个设备叫做集线器(HUB)。比手工把网线汇集的优势就是集线器带有信号再生和放大功能。
当一个计算机发送数据包的时候,在集线器上会形成广播发送到这个集线器上的所有连接设备上。
设备收听到广播后,根据自己的IP地址来判断数据是不是发给自己的,如果是就做处理;如果不是就抛弃掉不与理会。
从这个设计上不难看出,接在集线器上的设备在某个时间段内只有一个设备可以有效地发出数据,效率很低。
改进后的东西叫做交换机,不同于集线器这种物理层(Physical layer)设备,交换机是链路层设备(Data link layer),它的主要工作是依靠MAC地址来处理数据帧。
在交换机中最重要的功能是MAC地址表,在地址表中标定了某个MAC地址出现在交换机的哪个端口上。
在设备上打开这个表你会发现是这样的:
正因为有MAC地址表,交换可以做到将数据包直接投放到特定的端口上。
这时候一个端口上的数据收发就不会导致另外的一个端口等待,而是可以同时进行了。你得知道查MAC地址表虽然是一个很简单的操作,但每一帧数据都得查询。这个操作在交换机中有专门的芯片来负责处理,而你让计算机拨号的时候,这个操作就挪到了计算机上来做。它和计算机直接插了一根网线到交换机是完全不同的。
正是因为这种操作再加上你的笔记本是一个软网卡,一些配置相对较低的笔记本网络性能就绝对拼不过几百块钱价格但是带有交换机控制芯片的光猫了。
那么配置低的笔记本不行,软路由行不行呢?这个话得分两头来说了,很多现在市面上卖的软路由本身配置比笔记本还低,只不过用的操作系统是专门的路由器操作系统,摒弃了很多类似于Windows 、Mac OS这样系统的用户界面、系统处理等额外的对于路由器没有什么用处的处理功能。但从架构上来看和你的PC机并没有什么太大的变化。只不过是增加了很多的“网卡”而已。
例如现在的很多软路由上标称说是intel i211的网卡。你如果查一查你会发现这个芯片并不带有intel的高端功能:
其实也很好理解,很多软路由厂商利用的就是小白们的一知半解,觉得intel的网卡好,于是就给你的产品中配备了intel的网卡,但型号……啧啧,不言而喻吧?
同时这种软路由也不带有交换芯片,所有的MAC地址表任务依旧是靠CPU来完成的,在低配的软路由上性能的局限还是很大的,当然,在这种设备上堆砌CPU的性能可以达到一个理想的目标,但问题回来了,你购买一台几千块钱的软路由真的值得吗?
至于为什么还有这种软路由的主板存在,更多的原因是,这些主板的生产目的并不是用来做路由器的,而是作为工控产品设计的,能做路由器其实就是软路由厂商的脑洞和发挥而已。