Um sistema USB tem um design assimétrico. É feito de um host, várias portas USB downstream e vários dispositivos periféricos conectados em uma topologia estelar. Hubs USB adicionais podem ser incluídos nas camadas, permitindo a ramificação em uma estrutura em árvore com até cinco níveis de camadas.
Um host USB pode ter vários controladores de host. Cada controlador anfitrião fornece uma ou mais portas USB. Até 127 dispositivos, incluindo os dispositivos de hub, podem ser conectados a um único controlador anfitrião.
Os dispositivos USB são ligados em série através de hubs. Há sempre um hub conhecido como o hub raiz. O hub raiz é embutido no controlador anfitrião. Há hubs especiais, chamados de "hubs compartilhados". Estes permitem que vários computadores acessem os mesmos dispositivos periféricos. Eles funcionam alternando o acesso entre os PCs, seja manualmente ou automaticamente. Eles são populares em ambientes de pequenos escritórios. Em termos de rede, eles convergem ao invés de divergir entre as filiais.
Um dispositivo USB físico pode ter vários sub-dispositivos lógicos que são chamados de funções de dispositivo. Um único dispositivo pode fornecer várias funções, por exemplo, uma webcam (função de dispositivo de vídeo) com um microfone embutido (função de dispositivo de áudio).
A comunicação do dispositivo USB é baseada em tubos (canais lógicos). As tubulações são conexões do controlador anfitrião a uma entidade lógica no dispositivo nomeada um ponto final. O termo endpoint é usado ocasionalmente para se referir incorretamente à tubulação. Um dispositivo USB pode ter até 32 tubos ativos, 16 para o controlador anfitrião e 16 para fora do controlador.
Cada terminal pode transferir dados em uma única direção, seja para dentro ou fora do dispositivo, de modo que cada tubo é unidirecional. Os pontos terminais são agrupados em interfaces e cada interface é associada a uma única função do dispositivo. Uma exceção a isto é o ponto final zero, que é usado para configuração do dispositivo e que não está associado a nenhuma interface.
Quando um dispositivo USB é conectado pela primeira vez a um host USB, o processo de enumeração do dispositivo USB é iniciado. A enumeração começa enviando um sinal de reset para o dispositivo USB. A velocidade do dispositivo USB é determinada durante a sinalização de reset. Após o reset, a informação do dispositivo USB é lida pelo host, então o dispositivo recebe um endereço único de 7 bits. Se o dispositivo for suportado pelo host, os drivers necessários para comunicação com o dispositivo são carregados e o dispositivo é configurado para um estado configurado. Se o host USB for reiniciado, o processo de enumeração é repetido para todos os dispositivos conectados.
O controlador anfitrião faz o levantamento do ônibus para tráfego, geralmente de forma rotunda, de modo que nenhum dispositivo USB pode transferir quaisquer dados no ônibus sem uma solicitação explícita do controlador anfitrião.
Controladores anfitriões
O hardware do computador que contém o controlador anfitrião e o hub raiz tem uma interface para o programador. É chamado de Host Controller Device (HCD) e é definido pelo implementador de hardware.
Para USB 1.0 e 1.1, houve duas implementações diferentes de HCD, Open Host Controller Interface (OHCI) e Universal Host Controller Interface (UHCI). A OHCI foi desenvolvida pela Compaq, Microsoft e National Semiconductor, a UHCI pela Intel.
A VIA Technologies licenciou o padrão UHCI da Intel; todos os outros implementadores de chipset utilizam OHCI. A UHCI confia mais no software. Isto significa que a UHCI é um pouco mais intensiva em processador do que a OHCI, mas mais fácil e mais barato de fazer. Como havia duas implementações diferentes, os fornecedores de sistemas operacionais e os fornecedores de hardware precisavam desenvolver e testar em ambos. Isto aumentou o custo.
A especificação USB não especifica nenhuma interface HCD e não está preocupada com elas. Em outras palavras, USB define o formato de transferência de dados através da porta, mas não o sistema pelo qual o hardware USB se comunica com o computador em que se encontra.
Durante a fase de projeto do USB 2.0, o USB-IF insistiu que havia apenas uma implementação. A implementação do HCD USB 2.0 é chamada de Enhanced Host Controller Interface (EHCI). Somente a EHCI pode suportar transferências de alta velocidade (480 Mbit/s). A maioria dos controladores EHCI baseados em PCI tem outras implementações de HCD chamadas "companion host controller" para suportar Full Speed (12 Mbit/s) e podem ser usadas para qualquer dispositivo que afirma ser um membro de uma determinada classe. Um sistema operacional deve implementar todas as classes de dispositivos, para que possa fornecer drivers genéricos para qualquer dispositivo USB. As classes de dispositivos são decididas pelo Grupo de Trabalho de Dispositivos do Fórum de Implementadores USB.
Classes de dispositivos USB
As classes de dispositivos incluem:
| Classe | Utilização | Descrição | Exemplos |
| 00h | Dispositivo | Classe não especificada 0 | (A classe do dispositivo é indeterminada. Os descritores de interface são usados para determinar os drivers necessários). |
| 01h | Interface | Áudio | Alto-falante, microfone, placa de som |
| 02h | Ambos | Comunicações e Controle CDC | Adaptador Ethernet, modem, adaptador de porta serial |
| 03h | Interface | Dispositivo de Interface Humana (HID) | Teclado, mouse, joystick |
| 05h | Interface | Dispositivo de Interface Física (PID) | Forçar joystick de feedback |
| 06h | Interface | Imagem | Câmera digital (A maioria das câmeras funciona como armazenamento em massa para acesso direto aos meios de armazenamento). |
| 07h | Interface | Impressora | Impressora a laser, impressora a jato de tinta |
| 08h | Interface | Armazenamento em massa | USB flash drive, leitor de cartão de memória, leitor de áudio digital, unidades externas |
| 09h | Dispositivo | concentrador USB | Cubo de velocidade total, cubo de alta velocidade |
| 0Ah | Interface | CDC-Dados | (Esta classe é utilizada juntamente com a classe 02h - Comunicações e Controle CDC). |
| 0Bh | Interface | Cartão inteligente | Leitor USB de cartões inteligentes |
| 0Dh | Interface | Segurança de conteúdo | - |
| 0Eh | Interface | Vídeo | Webcam |
| 0Fh | Interface | Cuidados pessoais de saúde | - |
| DCh | Ambos | Dispositivo de diagnóstico | Dispositivo de teste de conformidade USB |
| E0h | Interface | Controlador sem fio | Adaptador Wi-Fi, adaptador Bluetooth |
| EFh | Ambos | Diversos | Dispositivo de sincronização ActiveSync e Palm |
| FEh | Interface | Aplicação específica | Ponte IrDA |
| FFh | Ambos | Específico do fornecedor | (Este código de classe indica que o dispositivo precisa de drivers específicos do fornecedor). |
Nota classe 0: Use as informações de classe nos Descritores de Interface. Esta classe base é definida para ser usada nos Descritores de Dispositivos para indicar que as informações de classe devem ser determinadas a partir dos Descritores de Interface no dispositivo.