Ett USB-system har en asymmetrisk utformning. Det består av en värd, flera nedströms USB-portar och flera perifera enheter som är anslutna i en stjärntopologi. Ytterligare USB-hubbar kan ingå i nivåerna, vilket gör det möjligt att skapa en trädstruktur med upp till fem nivåer.
En USB-värd kan ha flera värdkontrollanter. Varje värddator har en eller flera USB-portar. Upp till 127 enheter, inklusive hubb-enheterna, kan anslutas till en enda värddator.
USB-enheter kopplas samman i serie genom hubbar. Det finns alltid en hubb som kallas rotnav. Roothubben är inbyggd i värdkontrollen. Det finns särskilda hubbar som kallas "sharing hubbar". Dessa gör det möjligt för flera datorer att få tillgång till samma kringutrustning. De fungerar genom att växla tillgången mellan datorerna, antingen manuellt eller automatiskt. De är populära i små kontorsmiljöer. I nätverkstermer konvergerar de snarare än divergerar grenar.
En fysisk USB-enhet kan ha flera logiska underenheter som kallas enhetsfunktioner. En enskild enhet kan ha flera funktioner, t.ex. en webbkamera (videoenhetsfunktion) med inbyggd mikrofon (ljudenhetsfunktion).
Kommunikationen mellan USB-enheter baseras på pipes (logiska kanaler). Pipes är anslutningar från värddatorn till en logisk enhet på enheten som kallas för en slutpunkt. Begreppet slutpunkt används ibland för att felaktigt hänvisa till röret. En USB-enhet kan ha upp till 32 aktiva pipes, 16 in till värdkontrollenheten och 16 ut ur kontrollenheten.
Varje slutpunkt kan överföra data i endast en riktning, antingen in i eller ut ur enheten, så varje pipe är enkelriktad. Slutpunkterna grupperas i gränssnitt och varje gränssnitt är associerat med en enda enhetsfunktion. Ett undantag från detta är slutpunkt noll, som används för enhetens konfiguration och som inte är associerad med något gränssnitt.
När en USB-enhet först ansluts till en USB-värd startar processen för att räkna upp USB-enheter. Uppräkningen startar genom att skicka en återställningssignal till USB-enheten. USB-enhetens hastighet bestäms under återställningssignalen. Efter återställning läses USB-enhetens information av värden, varefter enheten tilldelas en unik 7-bitars adress. Om enheten stöds av värden laddas de enhetsdrivrutiner som behövs för att kommunicera med enheten och enheten ställs in i ett konfigurerat tillstånd. Om USB-värden startas om upprepas uppräkningsprocessen för alla anslutna enheter.
Värdkontrollanten frågar efter trafik på bussen, vanligtvis i en rundgång, så ingen USB-enhet kan överföra data på bussen utan en uttrycklig begäran från värdkontrollanten.
Värdstyrenheter
Datorhårdvaran som innehåller värdkontrollenheten och rotnavet har ett gränssnitt för programmeraren. Det kallas Host Controller Device (HCD) och definieras av maskinvarutillverkaren.
För USB 1.0 och 1.1 fanns det två olika HCD-implementationer, Open Host Controller Interface (OHCI) och Universal Host Controller Interface (UHCI). OHCI utvecklades av Compaq, Microsoft och National Semiconductor, UHCI av Intel.
VIA Technologies har licensierat UHCI-standarden från Intel; alla andra chipset-utvecklare använder OHCI. UHCI är mer beroende av programvara. Detta innebär att UHCI är något mer processorkrävande än OHCI, men lättare och billigare att göra. Eftersom det fanns två olika implementeringar måste operativsystem- och maskinvaruförsäljare utveckla och testa båda. Detta ökade kostnaderna.
USB-specifikationen specificerar inga HCD-gränssnitt och berörs inte av dem. Med andra ord definierar USB formatet för dataöverföring genom porten, men inte det system genom vilket USB-hårdvaran kommunicerar med datorn i den.
Under designfasen av USB 2.0 insisterade USB-IF på att det bara skulle finnas en implementering. USB 2.0 HCD-tillämpningen kallas Enhanced Host Controller Interface (EHCI). Endast EHCI kan stödja höghastighetsöverföringar (480 Mbit/s). De flesta PCI-baserade EHCI-styrenheter har andra HCD-implementationer som kallas "companion host controller" för att stödja full hastighet (12 Mbit/s) och kan användas för alla enheter som säger sig tillhöra en viss klass. Ett operativsystem ska implementera alla enhetsklasser, så att det kan tillhandahålla generiska drivrutiner för alla USB-enheter. Enhetsklasserna bestäms av Device Working Group of the USB Implementers Forum.
USB-enhetsklasser
Enhetsklasserna omfattar:
| Klass | Användning | Beskrivning | Exempel |
| 00h | Enhet | Ospecificeradklass 0 | (Enhetsklassen är ospecificerad. Gränssnittsbeskrivningar används för att fastställa vilka drivrutiner som krävs.) |
| 01h | Gränssnitt | Ljud | Högtalare, mikrofon, ljudkort |
| 02h | Båda | Kommunikation och CDC-kontroll | Ethernet-adapter, modem, adapter för seriell port |
| 03h | Gränssnitt | Anordning för mänskligt gränssnitt (HID) | Tangentbord, mus, joystick |
| 05h | Gränssnitt | Enhet för fysiskt gränssnitt (PID) | Joystick med kraftåterkoppling |
| 06h | Gränssnitt | Bild | Digitalkamera (de flesta kameror fungerar som Mass Storage för direkt åtkomst till lagringsmedia). |
| 07h | Gränssnitt | Skrivare | Laserskrivare, bläckstråleskrivare |
| 08h | Gränssnitt | Masslagring | USB-flash-enhet, minneskortläsare, digital ljudspelare, externa enheter |
| 09h | Enhet | USB-hubb | Nav med full hastighet, nav med hög hastighet |
| 0Ah | Gränssnitt | CDC-data | (Denna klass används tillsammans med klass 02h - Kommunikation och CDC-kontroll.) |
| 0Bh | Gränssnitt | Smartkort | USB-kortläsare för smartkort |
| 0Dh | Gränssnitt | Säkerhet för innehåll | - |
| 0Eh | Gränssnitt | Video | Webbkamera |
| 0Fh | Gränssnitt | Personlig hälso- och sjukvård | - |
| DCh | Båda | Diagnostisk anordning | Testutrustning för USB-överensstämmelse |
| E0h | Gränssnitt | Trådlös styrenhet | Wi-Fi-adapter, Bluetooth-adapter |
| EFh | Båda | Diverse | ActiveSync- och Palm-synkroniseringsenhet |
| FEh | Gränssnitt | Tillämpningsspecifik | IrDA-bron |
| FFh | Båda | Leverantörsspecifik | (Denna klasskod anger att enheten behöver leverantörsspecifika drivrutiner.) |
Anmärkning klass 0: Använd klassinformation i gränssnittsbeskrivningarna. Denna basklass definieras för att användas i enhetsbeskrivningar för att ange att klassinformation ska bestämmas från gränssnittsbeskrivningarna i enheten.