USBでは、ホストと各ターゲットとの通信はホスト側によってスケジューリングされ、ターゲット側はホスト側からの要求に従ってデーターの送受信を行います。
(ターゲット側はホスト側からの要求がなければデーターの送受信をすることができない)
このスケジューリングを適切に行うため、USBでは送受信されるデータの内容に応じて「コントロール転送」、「バルク転送」、「インタラプト転送」、「アイソクロナス転送」と呼ばれる4種類の転送方式を使い分けています。
コントロール転送は、「標準リクエスト」、「クラスリクエスト」、「ベンダリクエスト」と呼ばれる様々なコマンドのやり取りに用いられます。
デバイスの接続時には、このコントロール転送によってどのようなデバイスが接続されたかが認識されるため、全てのUSBデバイスはコントロール転送をサポートする必要があります。
バルク転送は、時間的な制約のない大量のデータを正確に伝えるのに適した転送方式です。
データーに誤りがあった場合やFIFOに空きがない場合再送されるのが特徴です。
インタラプト転送は、少量のデーターの転送に用いられる転送方式です。
キーボードやマウスなどの入力データーの転送などに用いられます。
「インタラプト」と言ってもターゲット側から自発的に転送が行われるわけではなく、一定の周期でホスト側からポーリングすることによってデーターの転送が行われます。
アイソクロナス転送は、動画や音声データーのようなリアルタイム性を必要とするデーターの転送に適した転送方式です。
エラーが発生しても再送が行われないことや、一定の転送レートが保証されることが特長です。