コンピュータ ネットワーク (第 8 版) - 第 5 章 トランスポート層

5.1 トランスポート層プロトコルの概要

5.1.1 プロセス間の通信

図 5-1 では、2 つのトランスポート層の間に太い暗い双方向矢印があり、「トランスポート層はアプリケーション プロセス間の論理通信を提供する」ことを示しています。

図 5-1 トランスポート層は、相互に通信するアプリケーション プロセスに論理通信を提供します。

5.1.2 トランスポート層の 2 つの主要なプロトコル

5.1.3 トランスポート層ポート

プロトコル スタック層間のこの抽象プロトコル ポートはソフトウェア ポートであり、ルーターやスイッチのハードウェア ポートとはまったく異なる概念であることに注意してください。ハードウェア ポートは、さまざまなハードウェア デバイスが対話するインターフェイスであり、ソフトウェア ポートは、アプリケーション層のさまざまなプロトコル プロセスがトランスポート エンティティと対話する場所です

クライアントが通信要求を開始するときは、まず相手のサーバーの IP アドレス (宛先ホストの検索に使用) とポート番号 (宛先プロセスの検索に使用) を知る必要があります。したがって、トランスポート層のポート番号は次の 2 つに分類されます。

(1)サーバーが使用するポート番号は        2 つのカテゴリに分かれており、最も重要なカテゴリはウェルノウン ポート番号(ウェルノウン ポート番号)またはグローバル ポート番号と呼ばれ、値は0 ~ 1023です。

表 5-2 一般的に使用されるウェルノウン ポート番号
アプリ FTP TELNET SMTP DNS TFTP HTTP SNMP SNMP(トラップ) HTTPS
既知のポート番号 21 23 25 53 69 80 161 162 443

もう 1 つのタイプは登録ポート番号と呼ばれ、値の範囲は 1024 ~ 49151 です。このタイプのポート番号は、既知のポート番号を持たないアプリケーションによって使用されます。

(2)クライアントが使用するポート番号        は49151~65535です。このタイプのポート番号は、クライアント プロセスの実行中にのみ動的に選択されるため、一時ポート番号とも呼ばれます。

5.2 ユーザーデータグラムプロトコル UDP

5.2.1 UDPの概要

UDP の主な特徴は次のとおりです: シンプルで便利ですが、信頼性が低い (複数のアプリケーション タイプ)

(1) UDPはコネクションレス、つまりデータ送信前にコネクションを確立する必要がない(もちろんデータ送信終了時に解放するコネクションもない)ため、データ送信前のオーバーヘッドや遅延が軽減される。

(2) UDP はベストエフォート配信を使用します。つまり、信頼性の高い配信が保証されていないため、ホストは複雑な接続ステータス テーブル (パラメータが多数あります) を維持する必要がありません。

(3) UDP はメッセージ指向です。送信者からアプリケーション プログラムに渡された UDP パケットにはヘッダーが追加され、IP 層に渡されます。UDP は、アプリケーション層によって渡されたパケットをマージも分割もせず、これらのパケットの境界を保持します

(4) UDPには輻輳制御がないため、ネットワークの輻輳によって送信元ホストの送信速度が低下することはありません。

(5) UDP は、1 対 1、1 対多、多対 1、および多対多の対話型通信をサポートします

(6) UDP ヘッダーのオーバーヘッドは小さく、わずか 8 バイトであり、TCP の 20 バイトのヘッダーよりも短いです。

5.2.2 UDPヘッダフォーマット

UDP チェックサムを計算する方法は、IP データグラム ヘッダー チェックサムを計算する方法と似ています。ただし、違いは、IP データグラム チェックサムは IP データグラムのヘッダーのみをチェックするのに対し、UDP チェックサムはヘッダーとデータ部分の両方をチェックすることです

5.3 伝送制御プロトコル TCP の概要

5.3.1 TCP の主な機能

(1) TCP はコネクション指向のトランスポート層プロトコルです。

(2) 各 TCP 接続は2 つのエンドポイントのみを持つことができ、各 TCP 接続はポイントツーポイント(1 対 1) のみ可能です。

(3) TCP は信頼性の高い配送サービスを提供します。TCP 接続を通じて送信されるデータは、エラーがなく、失われず、繰り返されず、順番に到着します

(4) TCP は全二重通信を提供します。TCP を使用すると、通信の両側のアプリケーション プロセスがいつでもデータを送信できます。

(5)バイトストリームを指向TCP における「ストリーム」とは、プロセスに流入またはプロセスから流出する一連のバイトを指します「バイト ストリーム指向」の意味は、アプリケーションと TCP 間の対話は一度に 1 つのデータ ブロック (さまざまなサイズ) であるにもかかわらず、TCP はアプリケーションによって渡されたデータを一連の非構造化バイトストリームとしてのみ認識することです

5.3.2 TCP接続

5.4 信頼性の高い伝送のしくみ

5.4.1 待機停止プロトコル

全二重通信の当事者は送信者でもあり、受信者でもあります。以下の問題を説明する便宜上、A がデータを送信し、B がデータを受信して​​確認を送信する場合のみを考慮します。したがって、A は送信者と呼ばれ、B は受信者と呼ばれます。ここでは信頼性の高い送信の原理について説明するため、データが送信されるレベルに関係なく、送信されるデータ ユニットはパケットと呼ばれます。「待機停止」とは、パケットを送信するたびに送信を停止し、相手の確認を待つことを意味します。確認を受信したら次のパケットを送信します。

1. エラー状態がない

2. 何か問題が発生しました

3. 確認漏れと確認遅延

4. チャネル使用率        (長所: シンプル 、短所: チャネル使用率が低すぎる)

5.4.2 連続 ARQ プロトコル

5.5 TCPセグメントヘッダー形式

TCP セグメント ヘッダーの最初の 20 バイトは固定されており(図 5-13 を参照)、その後に必要に応じて追加される 4n バイトのオプションが続きます (n は整数)したがって、TCP ヘッダーの最小長は 20 バイトです

ヘッダーの固定部分の各フィールドの意味は次のとおりです。

(1)送信元ポート宛先ポート

(2)シリアル番号

ヘッダーのシーケンス番号フィールドの値は、このセグメントで送信されるデータの最初のバイトのシーケンス番号を指します

(3)確認番号は        4 バイトを占め、相手の次のメッセージ セグメントから受信されると予想される最初のデータバイトシーケンス番号です。

確認番号=Nの場合は、シーケンス番号N-1までのデータが全て正しく受信されたことを意味する。

(4)データオフセット

(5)予約済み

(6)緊急URG (URGent)

(7)確認ACK (ACKnowledgment)

(8)プッシュPSH (PuSH)

(9)リセットRST (ReSeT)

(10)同期SYN(SYN同期)

(11) Terminate FIN (FINish、「終了した」「終了した」という意味)

(12)

(13)チェックサム

(14)緊急ポインタ

(15)オプション

TCP は当初、最大セグメント長 MSS (最大セグメント サイズ) [RFC879]というオプションを 1 つだけ指定していました。MSS という用語の意味に注意してください。MSS は、TCP セグメントのデータ フィールドの最大長です。データ フィールドと TCP ヘッダーを加えたものが、TCP セグメント全体に相当します

5.6 TCPの信頼性のある送信の実装

5.6.1バイト単位のスライディングウィンドウ

5.6.2 タイムアウト再送時間の選択

5.6.3 SACKの選択

5.7 TCP フロー制御

5.7.1 スライディング ウィンドウを使用してフロー制御を実現する

フロー制御は、送信側の送信速度が速すぎるのを防ぎ、受信側が時間内に受信できるようにすることです

5.7.2 TCP 伝送効率

5.8 TCP輻輳制御

5.8.1 輻輳制御の一般原則

コンピュータ ネットワークのリンク容量 (つまり、帯域幅)、スイッチング ノードのキャッシュとプロセッサなどはすべてネットワーク リソースです。ある時点で、ネットワーク内の特定のリソースに対する需要が、そのリソースが提供できる利用可能な部分を超えると、ネットワークのパフォーマンスが低下します。この状況は輻輳と呼ばれます。ネットワーク輻輳の条件は、次の関係として表すことができます。

Σリソースの需要 > 利用可能なリソース (5-7)

輻輳制御は、ネットワークに過剰なデータが注入されるのを防ぎ、ネットワーク内のルーターやリンクが過負荷にならないようにすることです輻輳制御には前提条件があります。それは、ネットワークが既存のネットワーク負荷に耐えられることです。輻輳制御は、すべてのホスト、すべてのルーター、およびネットワーク伝送パフォーマンスの低下に関連するすべての要素が関与するグローバル プロセスです。

5.8.2 TCP輻輳制御方式

TCP 輻輳制御には、スロースタート、輻輳回避、高速再送信、および高速回復の4 つのアルゴリズムがあります(ドラフト標準 RFC 5681 を参照)。これらのアルゴリズムの原理を以下に紹介します。輻輳制御に焦点を当てて説明するため、次のように仮定します。

(1) データは一方向に送信され、相手は確認メッセージのみを送信します。

(2) 受信方向には常に十分なバッファ スペースがあるため、送信ウィンドウのサイズはネットワークの輻輳レベルによって決まります。

1. スロースタートと混雑回避

輻輳回避アルゴリズムの目的は、輻輳ウィンドウ cwnd を徐々に増加させることです (具体的なアルゴリズムについては [RFC 5681] を参照)。アルゴリズムを実行した後の結果はおよそ次のようになります。往復時間 RTT が経過するたびに、送信側の輻輳ウィンドウ cwnd のサイズは、スロー スタート段階のように 2 倍になるのではなく、1 ずつ増加します。したがって、輻輳回避フェーズは「Additive IncreaseAI (Additive Increase) と呼ばれ、輻輳回避フェーズ中に輻輳ウィンドウ cwnd がゆっくりと直線的に増加することを示します。

ただし、「輻輳回避」は輻輳を完全に回避するものではなく、輻輳ウィンドウの拡大がより遅くなり、ネットワークが輻輳しにくくなることに注意してください。

5.8.3 アクティブキュー管理 AQM

5.9 TCPトランスポート接続管理

5.9.1 TCP接続の確立

TCP 接続を確立するプロセスはハンドシェイクと呼ばれ、クライアントとサーバーの間で 3 つの TCP セグメントを交換する必要があります図 5-28 は、TCP 接続を確立する 3 パケットのハンドシェイク プロセスを示しています。

図 5-28 3 パケット ハンドシェイクを使用した TCP 接続の確立

上記の接続確立プロセスは3 パケット ハンドシェイクと呼ばれます。図 5-28 では、B から A に送信されたメッセージ セグメントも 2 つのメッセージ セグメントに分割できることに注意してください。最初に確認応答セグメント (ACK = 1、ack = x + 1) を送信し、次に同期セグメント (SYN = 1、seq = y) を送信できます。このプロセスは4 パケットのハンドシェイク(接続の解放)になりますが、効果は同じです。

A はなぜ最終的に確認を送信する必要があるのでしょうか? これは主に、無効な接続要求セグメントが突然 B に送信されてエラーが発生するのを防ぐためです

5.9.2 TCPコネクションの解放

5.9.3 TCPの有限状態マシン

この章の重要な概念

エクササイズ

おすすめ

転載: blog.csdn.net/qq_50564231/article/details/133517583