Como casi cualquier otro tipo de interfaz de comunicación, el USB se implementa como una pila de protocolos. Los niveles dentro de esta pila que son comunes a todos o varios tipos de dispositivos están definidos por los estándares USB mismos, lo que permite la compatibilidad y evita que cada dispositivo realice un diseño de protocolo redundante. Además, cada capa del protocolo abstrae detalles de los que la siguiente capa no necesita preocuparse. Entonces, cuando realmente está escribiendo la capa específica del dispositivo, solo tiene funciones genéricas de 'envío' y 'recepción' que obtienen datos del punto final A al punto final B. Usted, como diseñador del dispositivo, no tiene que preocuparse por como sucede eso Además, los niveles más bajos dentro de la pila de protocolos pueden cambiar la implementación siempre que expongan una interfaz común a la capa que se encuentra sobre ellos. De esta manera, cuando cambia una parte de la pila de protocolos, el resto de la pila no necesariamente tiene que cambiar.qué protocolo se está utilizando en algún nivel inferior de la pila. En términos generales, cada capa consecutiva en la pila encapsulará el mensaje producido por la siguiente capa más alta dentro de su propio campo de carga útil a medida que se envía un mensaje. Cuando se recibe un mensaje, cada capa despega la parte relevante para esa capa y reenvía su carga útil a la siguiente capa apropiada en la pila. Esto es cierto no solo para USB, sino para casi todos los buses de comunicación. La pila TCP / IP / Ethernet es probablemente la más utilizada, por ejemplo. Las tareas de las que las capas dadas son comúnmente responsables se describen en modelos, como el modelo OSI .
En USB, hay un protocolo de capa física que define los estados de voltaje / temporización / etc. en el cable y cómo deben ser interpretados. Obviamente, este protocolo debe ser parte de los estándares USB, no específico de un dispositivo dado (especialmente porque el host no tiene forma de saber qué tipo de dispositivo está a punto de conectarse a un puerto USB dado).
A continuación, hay un protocolo de administración del bus, que se utiliza para describir quién puede hablar en el bus cuando. Esto se llama la capa de acceso a medios en el modelo OSI. En USB, esta capa se puede resumir como "el dispositivo puede transmitir cuando el host le dice que lo haga", por lo que no hay un protocolo particularmente complicado en esta capa en USB.
A continuación, hay un protocolo estándar para describir un paquete de datos y cómo se debe enrutar del remitente al receptor. Esta capa también debe ser parte del estándar USB en sí mismo, de modo que la comunicación inicial para descubrir qué tipo de dispositivo se ha conectado pueda ocurrir antes de que el host conozca realmente el tipo específico de dispositivo. Además de cada dispositivo que tiene una ID particular en esta capa, también existe el concepto en USB de una ID de punto final. Esto permite que cualquier dispositivo tenga múltiples puntos finales USB, que son multiplexados y demultiplexados por la pila USB estándar, de la misma manera que los sockets son multiplexados y demultiplexados por la pila TCP / IP estándar. Una aplicación puede tratar cada uno de estos puntos finales como flujos de datos separados.
Finalmente, está el protocolo definido para el dispositivo en sí. Tenga en cuenta que en realidad hay algunos prediseñados comunes incluidos como parte del estándar USB para casos de uso común, como dispositivos de almacenamiento masivo, ratones, teclados, etc., para que cada fabricante de dispositivos no tenga que reinventar el rueda. Sin embargo, los dispositivos más complicados son libres de diseñar su propio protocolo personalizado en esta capa. La salida de esta capa para una transmisión dada se pasa como la carga útil de un paquete de datos en la capa anterior. Tenga en cuenta que, para dispositivos suficientemente complicados, la parte específica del dispositivo del protocolo puede dividirse en múltiples capas independientes, pero los niveles inferiores no tienen que saberlo ni preocuparse por eso. Todo lo que necesitan saber es que necesitan pasar un conjunto dado de bytes desde el host a un punto final de dispositivo particular o desde un punto final de dispositivo particular al host. Una vez más, tener la interfaz estándar entre capas permite la separación de preocupaciones, por lo que una capa no tiene que preocuparse por el funcionamiento interno de otra capa, sino solo los datos específicos que debería pasar o esperar recibir de las capas inmediatamente superiores o debajo de él en la pila.