거의 모든 다른 유형의 통신 인터페이스와 마찬가지로 USB는 프로토콜 스택으로 구현됩니다.. 이 스택 내에서 모든 또는 여러 유형의 장치에 공통적 인 레벨은 USB 표준 자체에 의해 정의되며, 이는 호환성을 가능하게하고 각 장치가 중복 프로토콜 설계를 수행하지 못하게합니다. 또한 프로토콜의 각 계층은 다음 계층에서 걱정할 필요가없는 세부 정보를 추상화합니다. 따라서 실제로 장치 별 계층을 작성할 때는 끝점 A에서 끝점 B로 데이터를 가져 오는 일반 '보내기'및 '받기'기능 만 있으면됩니다. 장치 디자이너는 신경 쓰지 않아도됩니다. 어떻게되는지 또한 프로토콜 스택 내의 하위 레벨은 상위 인터페이스에 공통 인터페이스를 노출하는 한 구현을 변경할 수 있습니다. 이렇게하면 프로토콜 스택의 일부가 변경 될 때 나머지 스택을 반드시 변경할 필요는 없습니다.이는 프로토콜 스택의 약간 낮은 수준으로 사용되고있다. 일반적으로 스택 아래의 각 연속 레이어는 메시지가 전송 될 때 고유 한 페이로드 필드 내에서 다음으로 높은 레이어가 생성 한 메시지를 캡슐화합니다. 메시지가 수신되면 각 레이어는 해당 레이어와 관련된 부분을 벗겨 내고 페이로드를 스택의 다음 적절한 레이어로 전달합니다. 이것은 USB뿐만 아니라 거의 모든 통신 버스에서도 마찬가지입니다. 예를 들어 TCP / IP / 이더넷 스택이 가장 일반적으로 사용됩니다. 주어진 계층이 일반적으로 담당하는 작업은 OSI 모델 과 같은 모델로 설명됩니다 .
USB에는 전압 상태 / 타이밍 등을 정의하는 물리 계층 프로토콜이 있습니다. 전선에서 어떻게 해석해야하는지 이 프로토콜은 분명히 특정 장치에 국한되지 않고 USB 표준 자체의 일부 여야합니다 (특히 호스트는 어떤 종류의 장치가 주어진 USB 포트에 연결 될지 알 수 없기 때문에).
다음으로 버스에서 대화 할 수있는 사람을 설명하는 데 사용되는 버스 관리 프로토콜이 있습니다. 이것을 OSI 모델에서 미디어 액세스 계층이라고합니다. USB에서이 계층은 "호스트가 지시 할 때 장치가 전송할 수 있음"으로 요약 될 수 있으므로 USB의이 계층에는 특별히 복잡한 프로토콜이 없습니다.
다음으로, 데이터 패킷 을 설명하기 위한 표준 프로토콜 과 발신자에서 수신자로 라우팅되는 방법이 있습니다. 이 계층은 USB 표준 자체의 일부 여야하므로 특정 유형의 장치가 호스트에 의해 실제로 알려지기 전에 어떤 유형의 장치가 연결되었는지 알아 내기위한 초기 통신이 발생할 수 있습니다. 이 계층에서 특정 ID를 가진 각 장치 외에 엔드 포인트 ID의 USB 개념도 있습니다. 이를 통해 특정 장치에 표준 USB 스택에 의해 다중화 및 역 다중화되는 여러 USB 엔드 포인트를 가질 수 있습니다. 표준 TCP / IP 스택에 의해 소켓이 다중화 및 역 다중화되는 것과 같은 방식입니다. 애플리케이션은 이러한 각 엔드 포인트를 개별 데이터 스트림으로 처리 할 수 있습니다.
마지막으로 장치 자체에 대해 정의 된 프로토콜이 있습니다. 실제로 대용량 저장 장치, 마우스, 키보드 등과 같은 일반적인 사용 사례에 대한 USB 표준의 일부로 사전 디자인 된 것들이 포함되어 있기 때문에 모든 장치 제조업체는 제품을 다시 발명 할 필요가 없습니다. 바퀴. 그러나 더 복잡한 장치는이 계층에서 자체 사용자 지정 프로토콜을 자유롭게 디자인 할 수 있습니다. 주어진 전송에 대한이 계층의 출력은 이전 계층에서 데이터 패킷의 페이로드로 전달됩니다. 충분히 복잡한 장치의 경우 프로토콜의 장치 별 부분이 여러 개의 독립적 인 계층으로 나눌 수 있지만 하위 수준에서는 알지 못하거나 신경 쓰지 않아도됩니다. 그들이 알아야 할 것은 호스트에서 특정 장치 엔드 포인트로 또는 특정 장치 엔드 포인트에서 호스트로 주어진 바이트 세트를 전달해야한다는 것입니다. 다시 한 번, 계층 간 표준 인터페이스를 사용하면 우려 사항을 분리 할 수 있으므로 한 계층은 다른 계층의 내부 작업에 신경 쓰지 않아도되며, 바로 위 또는 계층에서 전달하거나 수신해야하는 특정 데이터 만 스택 아래에.