USB是一种主从结构。主机叫做Host,从机叫做Device(也叫做设备),集线器也被当作一种特别的设备处理。USB的数据交换只能发生在主机和设备之间,主机和主机,设备和设备之间不能互连。为了在物理上区别主机和设备,使用了不同的插头和插座,这个在USB的衔接器一节中会讲到。一切的数据传输都由主机自动建议,而设备仅仅被迫的担任应对。例如,在读数据时,USB先宣布读指令,设备收到该指令后,才回来数据。在USB OTG中,一个设备能够在从机和主机之间切换,这样就能够完成设备与设备之间的衔接,大大增加了USB的使用范围。但这时仍然没有脱离这种主从关系,两个设备之间必定有一个作为主机,另一个作为从机。USB OTG增加了一种MINI USB接头,比一般的4线USB多了一个ID表识线,用来标明它是主机仍是设备,这个今后会讲到。
USB的拓扑结构为金字塔型。由一个USB主控制器动身,下面接USB集线器,USB集线器将一个USB口扩展为多个USB口,多个USB口又能够经过集线器为更多个接口。但USB协议中对集线器的层数是有约束的,USB1.1规则最多为4层,USB2.0规则最多为6层。理论上,一个USB主控制器最多可接127个设备,这是由数据包中的7位地址位决议的,可是实践上不会接这么多的设备。咱们所说的一个USB主控制器能够衔接多个USB设备,并不是直接简略的将多个设备并联或许串联,而是要由集线器担任端口扩展,才干衔接更多的设备。在咱们的电脑上,也有一个(或许多个,视USB主控制器的个数而定)集线器,它叫做根集线器,直接连在USB主控制器上。在设备办理器中,咱们能够看到USB主控制器和根集线器。如下图所示。USB数据传输途径如下:USB主控制器宣布数据包,经过根集线器,再经过下面的集线器(如果有的话),再发给USB设备;设备回来数据,交给它上层的集线器,上层的集线器再交给更上层的集线器,直到USB主控制器停止。而USB主控制器就能够跟CPU打交道了。在规范的PC机上,USB主控制器是挂在PCI总线上的。在Windows中,USB由各种驱动程序担任办理,最后由驱动程序发生功用设备(FDO),这便是咱们所看到的实践设备了。咱们的应用程序就能够经过Windows供给的各种API进行拜访USB设备了,例如CreateFile,ReadFile,DeviceIOControl等等。