トランスポート層と輻輳制御
トランスポート層は、ホスト間配信をプロセス間通信へと拡張し、信頼性があり、順序付けされ、輻輳制御されたバイトストリーム(TCP)または軽量なコネクションレス型データグラム(UDP)のいずれかをアプリケーションに提供します。一方、輻輳制御は、共有ネットワークが崩壊しないように送信レートを調整します。
Definition
トランスポート層は、異なるホスト上で実行されているアプリケーションプロセス間の論理的な通信を提供するプロトコル層であり、ネットワーク層のホスト間配信の上に、多重化、信頼性の高い配信、フロー制御、輻輳制御などのサービスを追加します。
Scope
この領域は、エンドツーエンドのトランスポートサービスを対象とします。具体的には、アプリケーションプロセスへのデータの多重化と逆多重化、信頼性の低いネットワーク上での信頼性の高いデータ転送の原則(確認応答、再送、シーケンス番号、スライディングウィンドウ)、コネクション指向の伝送制御プロトコルとコネクションレス型のユーザーデータグラムプロトコル、および輻輳制御の理論と実践が含まれます。ネットワークを介したパケットのルーティング(ネットワーク層)や、トランスポートサービスを使用するアプリケーションプロトコル(アプリケーション層)は対象外です。
Sub-topics
Core questions
- トランスポート層は、多重化と逆多重化を介して、どのようにして正しいアプリケーションプロセスにデータを配信するのでしょうか?
- 信頼性の低い、損失の多いネットワーク上で、どのようにして信頼性の高い、順序通りの配信を構築できるのでしょうか?
- TCPのコネクション確立、フロー制御、および信頼性メカニズムはどのように機能するのでしょうか?
- アプリケーションは、いつTCPの代わりにUDPを使用すべきでしょうか?
- 輻輳制御は、どのようにしてネットワークの過負荷を検出し、対応しながら公平性を保つのでしょうか?
Key concepts
- 多重化と逆多重化
- ポートとソケット
- 信頼性の高いデータ転送
- スライディングウィンドウ、Go-Back-N、選択的再送
- TCPスリーウェイハンドシェイク
- フロー制御
- 輻輳制御
- 加算増加/乗算減少 (AIMD)
- スロースタートと輻輳回避
- ユーザーデータグラムプロトコル (UDP)
Key theories
- 信頼性の低いチャネル上での信頼性の高いデータ転送
- 信頼性は、確認応答、再送タイマー、シーケンス番号、およびスライディングウィンドウプロトコル(Go-Back-Nと選択的再送)から構築されます。これらは、信頼性の低い基盤となるネットワークにもかかわらず、損失、重複、順序変更を検出し、回復します。
- TCP輻輳制御
- TCPは、パケット損失から輻輳を推測し、加算増加/乗算減少のダイナミクス(スロースタート、輻輳回避、高速回復)で送信ウィンドウを調整します。これにより、利用可能な帯域幅を探りながら、損失時には急激に後退します。
- コネクションレス型とコネクション指向型トランスポート
- UDPは、セットアップ、信頼性、輻輳制御のない薄いコネクションレス型サービスを提供し、遅延とオーバーヘッドを最小限に抑えます。一方、TCPはコネクション指向型で信頼性があり、輻輳制御されたバイトストリームを提供します。選択は、保証のために遅延と制御をトレードオフします。
Clinical relevance
トランスポート層の動作は、ほぼすべてのネットワークアプリケーションのパフォーマンスを形成します。TCPはWeb、電子メール、ファイル転送を確実に運び、UDPはDNS、リアルタイム音声およびビデオ、多くのゲームなどの低遅延用途を支えています。輻輳制御は、1980年代後半以降、インターネットが負荷によって崩壊するのを防いできたものであり、CUBICやBBRなどのアルゴリズムやQUICなどのプロトコルに関する継続的な研究は、遅延、スループット、公平性のバランスを調整し続けています。
History
TCPとIPは、元々1974年のCerf-Kahnの設計では一つのプロトコルでしたが、後に分割され、基本的なデータグラムサービスのみを必要とするアプリケーションのためにUDP(RFC 768, 1980)が追加されました。初期のインターネットで一連の輻輳崩壊が発生した後、Van Jacobsonの1988年の研究により、TCP輻輳制御の基盤となるスロースタートおよび輻輳回避アルゴリズムが導入され、これは数十年にわたってReno、CUBIC、BBRなどのバリアントに改良されてきました。
Debates
- 損失ベース、遅延ベース、モデルベースの輻輳制御
- 従来のTCPはパケット損失から輻輳を推測しますが、これは高帯域幅・高遅延リンクを十分に活用できず、反応が遅れる可能性があります。このため、BBRのような遅延ベースおよびモデルベースのアルゴリズムが促されました。このようなアルゴリズムが損失ベースのアルゴリズムと共存する場合の公平性と展開可能性については議論が続いています。
Key figures
- Van Jacobson
- Jon Postel
- Vinton Cerf
- Sally Floyd
Related topics
Seminal works
- kurose2021
- jacobson1988
- rfc9293
Frequently asked questions
- TCPの代わりにUDPを使用すべきなのはどのような場合ですか?
- 保証された配信よりも低遅延が重要であり、損失を許容できるか、または自分で処理できる場合にUDPを使用します。例えば、リアルタイムの音声/ビデオ、DNSクエリ、ゲームなどです。Webページ、ファイル転送、電子メールなどのように、信頼性のある順序通りの配信と組み込みの輻輳制御が必要な場合はTCPを使用します。
- 輻輳制御は具体的に何をするのですか?
- 輻輳制御は、パケット損失や遅延などの輻輳の兆候に基づいて、送信者がネットワークにデータを投入する速度を調整します。ネットワークが過負荷のときに後退し、それ以外の場合に余剰容量を探ることで、集約されたトラフィックをネットワークの容量近くに保ち、フロー間で帯域幅をほぼ公平に共有します。