集线器
无论你是一名电脑初学者,还是资深发烧友,有一种电脑设备你几乎每天都在与其打交道,这就是各种基于USB 接口的外设,例如USB 鼠标、USB 键盘、USB 摄像头、USB打印机、移动硬盘、闪盘等
实际上,USB 接I 1自诞生以来,其具有可热插拔、即插即用两大优异的特性,很快便赢得了用户的青睐。一时间各种基于USB 接[ 1的外设层出不穷,逐步将过去采用并口及串口的老旧设备淘汰出局。然而,这些品种繁多的USB 设备的出现,却使得用户不得不面临着一个新 的问 题---USB 接口不够用了。
提起USB Hub,相信通多童鞋对它都是“又爱又恨”。爱的是,它能解决电脑USB接口数量不够用的尴尬,恨的是,速度慢、带不动移动硬盘、每个接口的速度都还不一样。那你有没有想过,为啥USB Hub会如此招人恨呢?
说USB Hub速度慢,那你可是冤枉它了。只要USB Hub采用了品质足够好的主控芯片就不是问题,出问题的都是廉价货。
USB HUB用于设备扩展连接,所有USB DEVICE都连接在USB HUB的端口上。一个USB HOST总与一个根HUB (USB ROOT HUB)相连。USB HUB为其每个端口提供100mA电流供设备使用。同时,USB HUB可以通过端口的电气变化诊断出设备的插拔操作,并通过响应USB HOST的数据包把端口状态汇报给USB HOST。一般来说,USB设备与USB HUB间的连线长度不超过5m,USB系统的级联不能超过5级(包括ROOT HUB)。
USB Hub的下游各个接口会平分上游接口带宽,加上USB Hub本身也需要传输控制信号,所以下游各个设备的带宽是必然要小于上游设备的总带宽。
实际情况是,现在主流的USB 3.0设备都很难占满总带宽(5Gbps),比如主流的3.0 U盘大概只有100MB~200MB/s的传输速度,折合带宽也不到2Gbps,所以实际情况是不一定。
USB Hub的原理比较复杂,USB协议规范里最复杂的部分就是Hub的章节,USB Hub与网络设备(以太网)的Hub原理相差很多,如果真要类比的话,复杂度大概相当于网络的设备里的路由器。
USB协议中有控制传输、Bulk传输、中断传输、同步传输四种模式,其中:
控制传输用于传输控制设备一级的指令;
Bulk传输(中文名可能叫批传输)主要用于传输USB各种大块数据,比如U盘读写的数据;
中断传输,用于传输小块数据,鼠标键盘主要使用中断传输;
同步传输,用于传输实时性不够强的数据,也就是说不保证可靠性,部分USB音频设备使用这种传输;
USB Hub负责整合下游设备的各种传输信号,其中同步传输有一定限制,如果超过总带宽的某个比例(记忆中是20%),那么超出比例的同步传输将被丢弃;中断传输和控制传输占用的是保留带宽,不允许丢弃;Bulk传输占用剩下的带宽,如果没有同步传输,那么Bulk传输大概能占到90%以上的总带宽。
USB Hub整合数据以后向上游设备发送,如果上游还有USB Hub,那么上游的设备还会继续做同样的操作。另外,需要说明的是,通常来说主机上的USB接口,本身就是一个Root Hub,如果一个PC上有多个接口,可能是多个接口共用一个控制器,每个控制器上有一个Root Hub。
所以USB Hub相当于重新封装了各种数据包,类似于网络设备里的路由器,而不像交换机或者集线器(Hub)那么简单。
同时USB Hub自身还是一个USB设备,负责向上级汇报自己的下级有多少个设备,它本身也要占用一些带宽周期性汇报自己的状态。
由于以太网等很多网络(常见共享HUB连接的内部网)是基于总线方式,物理上是广播的,就是当一个机器发给另一个机器的数据,共享HUB先收到然后把它接收到的数据再发给其他的(来的那个口不发了)每一个口,所以在共享HUB下面同一网段的所有机器的网卡都能接收到数据。
交换式HUB的内部单片程序能记住每个口的MAC地址,以后就该哪个机器接收就发往哪个口,而不是像共享HUB那样发给所有的口,所以交换HUB下只有该接收数据的机器的网卡能接收到数据,当然广播包还是发往所有口。显然共享HUB的工作模式使得两个机器传输数据的时候其他机器别的口也占用了,所以共享HUB决定了同一网段同一时间只能有两个机器进行数据通信,而交换HUB两个机器传输数据的时候别的口没有占用,所以别的口之间也可以同时传输。这就是共享HUB与交换HUB不同的两个地方,共享HUB是同一时间只能一个机器发数据并且所有机器都可以接收,只要不是广播数据交换HUB同一时间可以有对机器进行数据传输并且数据是私有的。
全部0条评论
快来发表一下你的评论吧 !