← すべての問題
TCP プロトコルと UDP プロトコルの主な違いは何ですか?
中程度初級DevOps

TCP プロトコルと UDP プロトコルの主な違いは何ですか?

要点
TCP は接続指向で信頼性の高いプロトコルであり、配信、順序付け、 オーバーヘッドを犠牲にしてエラーチェックを行います。 UDP はシンプルなコネクションレス型プロトコルです 配達や注文の保証はありませんが、より速くて軽いです。

TCP と UDP は、IP 上で実行される 2 つの主要なトランスポート層プロトコルです。主な違い: TCP はコネクション指向で信頼性が高いのに対し、UDP はコネクションレスであり、「ファイア アンド フォーゲット」ベースで動作します。

TCP (RFC 9293)

  • 接続指向。 データを送信する前に、エンドポイントは 3 ウェイ ハンドシェイク (3WHS): SYN → SYN-ACK → ACK を実行し、初期シーケンス番号を同期します。
  • 信頼性が高く、順序付けられています。 各バイトにはシーケンス番号が付けられます。受信側は確認応答 (ACK) を送信し、失われたセグメントが再送信され、データが元の順序で再組み立てされます。整合性はチェックサムで検証されます。 RFC 9293 には、TCP が「信頼性の高い、順序どおりのバイトストリーム サービスを提供する」と記載されています。
  • バイト ストリーム、メッセージ境界なし。 TCP は非構造化バイト ストリームを配信します。メッセージ境界は保持されません (アプリケーションは独自のメッセージをフレーム化する必要があります)。対照的に、UDP はメッセージ指向です。各データグラムは個別の完全な単位として配信されるか、まったく配信されません (1 つの sendto = 1 recvfrom)。
  • フローと輻輳の制御。 TCP は送信速度を調整して、受信側もネットワークも過負荷にならないようにします。
  • トレードオフ: オーバーヘッドとレイテンシーが増加し、ヘッダーが大きくなります — 20 ~ 60 バイト (オプションなしで 20、MSS、ウィンドウ スケーリング、SACK などのオプションで拡張可能)。

UDP (RFC 768)

  • コネクションレス ハンドシェイクはありません。各データグラムは独立しています。
  • 保証はありません。 RFC は「配信と重複保護は保証されない」と明示的に述べています。つまり、UDP は失われたパケット、重複したパケット、または順序が乱れたパケットを回復しません。
  • 8 バイトのヘッダーを修正し、送信元ポート、宛先ポート、長さ、チェックサムの 4 つのフィールドのみを追加しました。
  • 利点: 遅延とオーバーヘッドが低く、さらにブロードキャスト/マルチキャストをサポートします。

いつどれを使用するか

  • TCP: Web (HTTP/HTTPS over TCP)、電子メール、ファイル転送、SSH — データの整合性が重要なあらゆる場所。
  • UDP: DNS ルックアップ、オンライン ゲーム、VoIP、ライブ ビデオ ストリーミング - 単一のパケット損失よりも速度が重要な場合。

共通のフォローアップポイント

  • UDP 自体はデータを順序付けしませんが、アプリケーションは独自のロジックをその上に重ねることができます (QUIC はこれを UDP 上で行います)。
  • HTTP/3 は UDP 上の QUIC で実行され、HTTP/1.1 および HTTP/2 は TCP 上で実行されます。
  • UDP チェックサムは、IPv4 では技術的にオプションです (ゼロ値は「計算されない」ことを意味します) が、IPv6 では必須です。
TCPUDPネットワーキング

今すぐダウンロードして、自分の課題で無料で試そう!

Windows版をダウンロード
10 15 クレジット無料 • クレジットカード不要バージョン: 読み込み中…

インストール不要 - ダウンロードして起動。登録不要 - Googleでログイン。