
コンピュータネットワークにおいて、トランスポート層は、インターネットプロトコルスイートとOSIモデルのネットワークスタックにおけるプロトコルの階層化アーキテクチャにおける方法の概念的な区分である。この層のプロトコルは、アプリケーションにエンドツーエンドの通信サービスを提供します。[1] :§1.1.3 コネクション指向通信、信頼性、フロー制御、多重化などのサービスを提供します。
インターネットの基礎となるインターネットプロトコルスイート[ 1]のトランスポート層の実装とセマンティクスの詳細は、一般的なネットワークのOSIモデルとは異なります。インターネットのこの層で現在使用されているプロトコルはすべて、TCP/IPの開発に由来しています。OSIモデルでは、トランスポート層はレイヤー4、またはL4と呼ばれることがよくありますが、[2] TCP/IPでは番号付きの層は使用されません。
インターネット プロトコル スイートの最もよく知られているトランスポート プロトコルは、伝送制御プロトコル(TCP) です。これは接続指向の伝送に使用され、一方、コネクションレスのユーザー データグラム プロトコル(UDP) は、より単純なメッセージ伝送に使用されます。TCP は、信頼性の高い伝送とデータ ストリーム サービスを組み込んだステートフル設計のため、より複雑なプロトコルです。TCP と UDP を合わせると、インターネット上のトラフィックのほとんどすべてが構成され、すべての主要なオペレーティング システムに実装されている唯一のプロトコルです。定義され実装されている追加のトランスポート層プロトコルには、データグラム輻輳制御プロトコル(DCCP) とストリーム制御伝送プロトコル(SCTP) があります。
サービス
トランスポート層サービスは、トランスポート層プロトコルへのプログラミングインターフェースを介してアプリケーションに伝達されます。サービスには次の機能が含まれます。[4]
- コネクション指向通信:[5]通常、アプリケーションにとっては、ユーザーデータグラムプロトコル(UDP)やインターネットプロトコル(IP)のデータグラムモデルなどの基盤となるコネクションレスモデルを扱うよりも、接続をデータストリームとして解釈する方が簡単です。
- 同一順序の配信: ネットワーク層では、通常、データ パケットが送信された順序と同じ順序で到着することを保証しませんが、多くの場合、これは望ましい機能です。これは通常、セグメント番号付けを使用して行われ、受信側はそれらをアプリケーションに順番に渡します。これにより、ヘッドオブライン ブロッキングが発生する可能性があります。
- 信頼性:ネットワークの輻輳やエラーにより、転送中にパケットが失われる場合があります。トランスポート プロトコルは、チェックサムなどのエラー検出コードを使用して、データが破損していないことを確認し、送信者にACKまたはNACKメッセージを送信して正しく受信されたことを確認します。自動再送要求スキームを使用して、失われたデータや破損したデータを再送信できます。
- フロー制御: 2 つのノード間のデータ転送速度は、高速な送信者が受信データ バッファでサポートできる量を超えるデータを転送してバッファ オーバーランが発生しないように管理する必要がある場合があります。これは、バッファ アンダーランを減らすことで効率を向上させるためにも使用できます。
- 輻輳回避:輻輳制御は、通信ネットワークへのトラフィックの流入を制御し、中間ノードおよびネットワークの処理能力またはリンク能力の過剰使用を回避し、パケットの送信速度を下げるなどのリソース削減手順を実行することで、輻輳による崩壊を回避します。たとえば、自動再送要求によってネットワークが輻輳状態のままになることがあります。この状況は、スロースタートなどの輻輳回避をフロー制御に追加することで回避できます。これにより、送信開始時またはパケット再送信後に帯域幅の消費を低いレベルに維持できます。
- 多重化:ポートは、単一のノード上で複数のエンドポイントを提供できます。たとえば、郵便の住所の名前は多重化の一種であり、同じ場所の異なる受信者を区別します。コンピュータ アプリケーションはそれぞれ独自のポートで情報をリッスンするため、複数のネットワーク サービスを同時に使用できます。これは、 TCP/IP モデルではトランスポート層の一部ですが、OSI モデルではセッション層の一部です。
分析
トランスポート層は、ホスト コンピュータ上の適切なアプリケーション プロセスにデータを配信する役割を担います。この役割では、さまざまなアプリケーション プロセスからのデータを統計的に多重化してデータ セグメントを形成し、各トランスポート層データ セグメントのヘッダーに送信元ポート番号と宛先ポート番号を追加します。送信元および宛先 IP アドレスとともに、ポート番号はネットワーク ソケット、つまりプロセス間通信の識別アドレスを構成します。OSI モデルでは、この機能はセッション層によってサポートされています。
一部のトランスポート層プロトコル (TCP など、UDP ではない) は仮想回線をサポートし、基盤となるパケット指向データグラムネットワーク上で接続指向通信を提供します。バイト ストリームは、アプリケーション プロセスのパケット モード通信を隠蔽しながら配信されます。これには、接続の確立、データ ストリームをセグメントと呼ばれるパケットに分割、セグメントの番号付け、および順序の乱れたデータの並べ替えが含まれます。
最後に、TCP などの一部のトランスポート層プロトコルは、エンドツーエンドの信頼性の高い通信、つまりエラー検出コードと自動再送要求(ARQ) プロトコルによるエラー回復を提供しますが、UDP は提供しません。ARQ プロトコルはフロー制御も提供し、輻輳回避と組み合わせることができます。
UDP は非常に単純なプロトコルであり、仮想回線や信頼性の高い通信は提供せず、これらの機能をアプリケーションプログラムに委任します。UDP パケットは、セグメントではなく、 データグラムと呼ばれます。
TCP は、 HTTP Web ブラウジングや電子メール転送など、多くのプロトコルに使用されます。UDP は、多数のホストへの再送信が不可能なため、マルチキャストやブロードキャストに使用できます。UDP は通常、スループットが高く、待ち時間が短いため、IP-TV や IP テレフォニーなど、パケット損失が時々許容されるリアルタイムのマルチメディア通信や、オンライン コンピュータ ゲームによく使用されます。
X.25、フレームリレー、ATMなどの多くの非 IP ベース ネットワークでは、トランスポート層ではなく、ネットワーク層またはデータ リンク層で接続指向の通信を実装しています。X.25、電話ネットワーク モデム、および無線通信システムでは、信頼性の高いノード間通信が下位のプロトコル層で実装されています。
OSI 接続モード トランスポート層プロトコル仕様では、エラー回復が最も少ないTP0から、信頼性の低いネットワーク向けに設計された TP4まで、5 つのクラスのトランスポート プロトコルが定義されています。
プロトコルの骨化により、TCPとUDPはインターネット上で広く使用されている唯一のトランスポートプロトコルです。[6]ミドルボックスの不耐性を回避するために、新しいトランスポートプロトコルは、許容されているプロトコルのワイヤイメージを模倣するか、 UDPにカプセル化されて、ある程度のオーバーヘッドを受け入れます(たとえば、外部チェックサムが内部整合性チェックによって冗長化されるため)。[7] QUICは後者のアプローチを採用し、UDPの上に信頼性の高いストリームトランスポートを再構築します。[8]
プロトコル
このリストには、インターネット プロトコル スイート、OSI プロトコル スイート、NetWareのIPX/SPX、AppleTalk、およびファイバー チャネルのトランスポート層に一般的に配置されるプロトコルがいくつか示されています。
- ATP、AppleTalk トランザクション プロトコル
- CUDP、サイクリックUDP [9]
- DCCP、データグラム輻輳制御プロトコル
- FCP、ファイバーチャネルプロトコル
- IL、IL プロトコル
- MPTCP、マルチパスTCP
- NORM、NACK 指向の信頼性の高いマルチキャスト
- クイック
- RDP、信頼性の高いデータ プロトコル
- RUDP、信頼性の高いユーザー データグラム プロトコル
- SCTP、ストリーム制御伝送プロトコル
- SPX、シーケンスパケット交換
- SST、構造化ストリームトランスポート
- TCP、伝送制御プロトコル
- UDP、ユーザーデータグラムプロトコル
- UDP-Lite
- μTP、マイクロトランスポートプロトコル
インターネットトランスポート層プロトコルの比較
- ^ RUDP は正式に標準化されていません。1999 年以降、標準関連の開発は行われていません。
- ^ データ チャンク ヘッダーとオーバーヘッド チャンクを除きます。埋め込まれたチャンクがなければ、SCTP パケットは本質的に役に立たなくなります。
- ^ 次のようにカウントされます: 12 バイトの SCTP ヘッダー + 16 バイトの DATA チャンク ヘッダー、または 20 バイトの I-DATA チャンク ヘッダー + 16 バイト以上の SACK チャンク。追加の非データ チャンク (例: AUTH) や追加データ チャンクのヘッダーは、50 バイト以上になるとオーバーヘッドが簡単に増加する可能性があるため、カウントされません。
OSIトランスポートプロトコルの比較
ISO/IEC 8073/ITU-T 勧告 X.224、「情報技術 - 開放型システム間相互接続 - 接続モード トランスポート サービス提供プロトコル」では、クラス 0 (TP0) からクラス 4 (TP4) まで指定された 5 つの接続モード トランスポート プロトコル クラスが定義されています。クラス 0 にはエラー回復機能がなく、エラーのない接続を提供するネットワーク層で使用するために設計されています。クラス 4 は TCP に最も近いですが、TCP には OSI がセッション層に割り当てる正常終了などの機能が含まれています。すべての OSI 接続モード プロトコル クラスは、データの高速化とレコード境界の保持を提供します。クラスの詳細な特性を次の表に示します。[10]
ISO/IEC 8602/ITU-T勧告X.234で規定されているコネクションレストランスポートプロトコルも存在する。[11]
参考文献
- ^ ab R. Braden編 (1989 年 10 月)。インターネット ホストの要件 - 通信層。ネットワーク ワーキング グループ。doi : 10.17487 /RFC1122。STD 3。RFC 1122。 インターネット標準 3。RFC 1349、4379、5884、6093、6298、6633、6864、8029、9293 によって更新されました。
- ^ 「インターネット プロトコル スイートの紹介」。システム管理ガイド、第 3 巻。
- ^ 「X.225: 情報技術 - 開放型システム間相互接続 - コネクション指向セッションプロトコル: プロトコル仕様」。2021年2月1日時点のオリジナルよりアーカイブ。2023年3月10日閲覧。
- ^ 「トランスポート層」(PDF) . Galgotias University .
- ^ ヒーナ、ケラ。 「データ通信とネットワーク」(PDF)。ガルゴティアス大学。 p. 9.
- ^ パパステルジオウら。 2017、p. 620-621。
- ^ パパステルジオウら。 2017、p. 623-624。
- ^ コーベット 2018.
- ^ Brian C. Smith、「Cyclic-UDP: 優先度主導型ベストエフォートプロトコル」(PDF) 、2020年2月23日閲覧
- ^ 「ITU-T 勧告 X.224 (1995 年 11 月) ISO/IEC 8073」。itu.int 。2017 年1 月 17 日に取得。
- ^ 「ITU-T 勧告 X.234 (07/1994) ISO/IEC 8602」。itu.int 。2017 年1 月 17 日に取得。
文献
- ジョナサン・コーベット(2018年1月29日)。 「プロトコルの硬直化に対する解決策としての QUIC」。LWN.net。
- Papastergiou, Giorgos; Fairhurst, Gorry; Ros, David; Brunstrom, Anna; Grinnemo, Karl-Johan; Hurtig, Per; Khademi, Naeem; Tüxen, Michael; Welzl, Michael; Damjanovic, Dragana; Mangiante, Simone (2017). 「インターネット トランスポート層の骨化の解消: 調査と今後の展望」. IEEE Communications Surveys & Tutorials . 19 : 619–639. doi :10.1109/COMST.2016.2626780. hdl : 2164/8317 . S2CID 1846371.
