トランスポート層
100%

ネットワークの基本 · レッスン 6

トランスポート層

TCP と UDP がポートを使い、アプリケーション端点間へ異なる配送の性質を提供する仕組みを学びます。

トランスポート層は IP ネットワークを介してアプリケーション端点を結びます。TCP と UDP はどちらも16ビットのポート番号を使いますが、アプリケーションへ提供する通信モデルと保証は異なります。

ポートとソケット

宛先ポートは、OS が待ち受けソケットへ通信を届けるのに役立ちます。接続やフローは1つのポートだけでなく、プロトコル、送信元・宛先アドレス、送信元・宛先ポートの組み合わせで識別します。そのため同じサーバーポートで多数のクライアントを同時に扱えます。

1つの TCP サーバーポートが複数のクライアントを同時に扱えるのはなぜですか?

TCP バイトストリーム

TCP は接続が存続する間、信頼性のある順序付きバイトストリームを提供します。シーケンス番号、確認応答、再送、フロー制御、輻輳制御を使います。アプリケーションメッセージの境界は保持しません。1回の書き込みが複数回の読み取りで届いたり、複数の書き込みが1回の読み取りで返ったりするため、アプリケーション自身がフレーミングを定義します。

信頼性は絶対的な配送ではありません。タイムアウト、リセット、障害があり得て、確認応答もアプリケーションがデータを永続保存した証拠ではありません。

TCP ではアプリケーションメッセージの境界はどうなりますか?

TCP ハンドシェイク

通常の TCP 接続は3ウェイハンドシェイクで始まります。

  1. 開始側が初期シーケンス情報を持つ SYN を送る。
  2. 待ち受け側が自身のシーケンス情報と確認応答を持つ SYN-ACK を返す。
  3. 開始側が ACK を返す。

これにより両端にトランスポート状態を確立しますが、アプリケーションサーバーの認証や、要求操作の成功までは証明しません。

通常の TCP 3ウェイハンドシェイクの順序はどれですか?

UDP データグラム

UDP はデータグラム境界を保持し、チェックサムによるエラー検出を提供しますが、TCP のような接続状態、順序、再送、フロー制御、輻輳制御は提供しません。必要な信頼性や輻輳動作はアプリケーションが追加できます。UDP が自動的に高速とは限らず、性能は設計、ワークロード、経路、実装次第です。

UDP がアプリケーションへ提供する性質はどれですか?

トランスポート端点を調べる

状態を変えずに ss で待ち受け中・接続中のソケットを調べます。

$ ss -lntup
$ ss -tn state established

プロセス情報には権限が必要な場合があります。待ち受けソケットが証明するのはローカルのトランスポート境界での準備だけで、ファイアウォール、ルーティング、アドレスファミリー、TLS、アプリケーションの正常性は別に検査します。

待ち受け中の TCP ソケットが確立する事実は何ですか?

レッスン完了

トランスポート層 を完了しました

TCP のストリーム動作と UDP のデータグラム動作を区別できるようになりました。

  • プロトコル、アドレス、ポートでフローを識別する。

  • TCP を、メッセージ境界を持たない信頼性のある順序付きバイトストリームとして扱う。

  • TCP ハンドシェイクが証明することと、しないことを理解する。

  • UDP の信頼性と輻輳動作をアプリケーション設計上の選択として扱う。

  • ローカルソケット状態を越えてアプリケーションの正常性を検証する。

学習進捗を保存

無料アカウントを作成してこのレッスンを保存し、どのデバイスからでも学習を続けられます。

無料アカウントを作成
次のレッスン
ネットワークの基本 に戻る