ネットワーキング
 Computer >> コンピューター >  >> ネットワーキング >> ネットワーキング

TCPとUDP

伝送制御プロトコルとユーザーデータグラムプロトコルは、インターネットプロトコルで広く使用されている2つのトランスポート層プロトコルです。プロトコルは、2台のコンピューターが相互に理解し、データを交換するために従う一連の手順とルールです。 TCPは2つの中で最も一般的に使用されるプロトコルですが、UDPは状況によってはより便利です。

全体的な調査結果

TCP
  • データが送信されたとおりに到着することを保証します。

  • データのストリームをエラーチェックします。

  • 20バイトのヘッダーでは、オプションで40バイトの関数データを使用できます。

  • UDPより遅い。

  • 信頼性が必要なアプリに最適です。

UDP
  • データが到着する保証はありません。

  • エラーチェックは提供されていません。

  • 8バイトのヘッダーでは、必須の関数データのみが許可されます。

  • TCPより高速です。

  • 速度が必要なアプリに最適です。

どちらのプロトコルも、インターネットを介してパケットでデータを送信します。 2つのうち、TCPはコネクション型です。接続が確立されると、データは双方向に移動します。 UDPは、コネクションレス型のより単純なプロトコルです。

TCPはUDPよりも堅牢です。エラー訂正機能と高い信頼性を提供します。 UDPは、主にエラー訂正を提供しないため、TCPよりも高速です。さらに、TCPはフロー制御を処理しますが、UDPにはフロー制御のオプションがありません。

信頼性に最適:TCP

TCP
  • データの配信が保証されています。

  • データパケットを追跡します。

  • パケットにエラーがないかチェックします。

  • フロー制御。

  • 20バイトのヘッダーとその他のオプション。

UDP
  • 配達の保証はありません。

  • パケットが失われる可能性があります。

  • フロー制御なし。

  • ヘッダーは8バイトに制限されています。

TCPは、受信者へのデータ配信を保証します。データが失われた場合、TCPは失われたデータを回復して再送信するための手順を実行します。これを行うために、TCPはデータのパケットを追跡し、パケットにエラーがないかチェックします。

UDPはデータの配信を保証しません。さらに、UDPパケットは転送中に失われたり、破損したりする可能性があります。

TCPとUDPはどちらも、ネットワーク接続を介して転送するためのメッセージデータのパッケージ化の一部としてヘッダーを使用します。 TCPは2つのプロトコルの中でより堅牢であるため、そのヘッダーは20バイトと大きく、追加データのオプションがありますが、UDPヘッダーのサイズは8バイトに制限されています。

速度に最適:UDP

TCP
  • 多くの機能を実行するため、低速です。

UDP
  • 機能が制限されているため高速です。

TCPは信頼性がありますが、主に多くの機能を実行するため、UDPよりも低速です。ゲーマーやビデオを扱う人々など、可能な限り最速の速度を必要とするエンドユーザーは、UDPの恩恵を受けます。

使用に最適:用途によって異なります

TCP
  • Web、ファイル転送、電子メール、およびセキュアシェルに最適です。

UDP
  • VPN、ストリーミングビデオ、VoIP、ライブブロードキャスト、オンラインゲームに最適です。

TCPは信頼性が高いため、Web、電子メール、FTPなど、高い信頼性を必要とするが速度を要求しない状況に最適です。

UDPの速度は、オンラインゲーム、ライブブロードキャスト、VPNトンネリング、およびストリーミングビデオに最適です。

TCPヘッダー形式

各TCPヘッダーには、合計20バイト(160ビット)のサイズの10個の必須フィールドがあります。オプションで、最大40バイトのサイズの追加データフィールドを含めることができます。

TCPとUDP

8ビットは1バイトに相当します。

TCPヘッダーは、送信元と宛先の通信エンドポイントから次の順序で表示されます。

  • 送信元TCPポート番号 (2バイトまたは16ビット):送信元TCPポート番号は送信側デバイスを表します。
  • 宛先TCPポート番号 (2バイトまたは16ビット):宛先TCPポート番号は、受信デバイスの通信エンドポイントです。
  • シーケンス番号 (4バイトまたは32ビット):メッセージ送信者は、シーケンス番号を使用してメッセージのグループの順序をマークします。
  • 確認番号 (4バイトまたは32ビット):送信者と受信者の両方が確認応答を使用します 最近受信された、または送信が予想されるメッセージのシーケンス番号を伝達するための番号フィールド。
  • TCPデータオフセット (4ビット):データオフセットフィールドには、TCPヘッダーの合計サイズが4バイトの倍数で格納されます。オプションのTCPフィールドを使用しないヘッダーのデータオフセットは5(20バイトを表す)ですが、最大サイズのオプションのフィールドを使用するヘッダーのデータオフセットは15(60バイトを表します)です。
  • 予約データ (3ビット):TCPヘッダーの予約データの値は常にゼロです。このフィールドは、ヘッダーの合計サイズを4バイトの倍数に揃えます。これは、コンピューターのデータ処理の効率にとって重要です。
  • 制御フラグ (最大9ビット):TCPは、6つの標準フラグと3つの拡張制御フラグのセット(それぞれがオンまたはオフを表す個々のビット)を使用して、特定の状況でのデータフローを管理します。
  • ウィンドウサイズ (2バイトまたは16ビット):TCP送信者は、ウィンドウサイズと呼ばれる数値を使用します。 代わりに確認応答を要求する前に、受信者に送信するデータの量を調整します。ウィンドウサイズが小さすぎると、ネットワークデータ転送が不必要に遅くなります。ウィンドウサイズが大きすぎると、ネットワークリンクが飽和状態になったり、受信者が受信データを十分に高速に処理できなくなったりして、パフォーマンスが低下する可能性があります。プロトコルに組み込まれているウィンドウアルゴリズムは、サイズ値を動的に計算し、TCPヘッダーのこのフィールドを使用して、送信者と受信者の間の変更を調整します。
  • TCPチェックサム (2バイトまたは16ビット):TCPヘッダー内のチェックサム値は、受信者が破損または改ざんされたメッセージを検出するのに役立つ数学的手法として、プロトコル送信者によって生成されます。
  • 緊急のポインタ (2バイトまたは16ビット):緊急ポインターフィールドは、多くの場合ゼロに設定されて無視されますが、制御フラグの1つと組み合わせて、メッセージのサブセットを優先処理が必要であることを示すデータオフセットとして使用できます。
  • TCPオプションデータ (0〜40バイト):オプションのTCPデータの使用には、特別な確認応答とウィンドウスケーリングアルゴリズムのサポートが含まれます。

UDPヘッダー形式

UDPはTCPと比較して機能が制限されているため、そのヘッダーは小さくなります。 UDPヘッダーには8バイトが含まれ、次の4つの必須フィールドに分割されます。

  • 送信元UDPポート番号 (2バイト):送信元UDPポート番号は送信側デバイスを表します。
  • 宛先UDPポート番号 (2バイト):宛先UDPポート番号は、受信デバイスの通信エンドポイントです。
  • データの長さ (2バイト):UDPの長さフィールドは、ヘッダーとデータの両方を含む、各データグラムの合計サイズを表します。このフィールドの値の範囲は、最小8バイト(必要なヘッダーサイズ)から65,000バイトを超えるサイズまでです。
  • UDPチェックサム (2バイト):TCPと同様に、UDPチェックサムを使用すると、受信者は着信データでメッセージの破損したビットをクロスチェックできます。

最終評決

TCPが最も一般的に使用されるプロトコルである理由があります。堅牢で信頼性が高く、送信されたとおりにデータが受信されることを保証します。エラーチェックされた情報の流れによって、わずかに速度が低下する可能性がありますが、ほとんどの場合、遅延は大きな問題にはなりません。

UDPがTCPよりも明るく輝くのは、ビデオ、VPN、オンラインゲームのストリーミングなど、速度が非常に重要な場合です。


  1. シリアル化とは

    最近のプロジェクト更新会議で、私のチームは、シリアライゼーションを使用してこのアプリケーションとの間でデータをやり取りする方法について話しました。 ソフトウェア プロジェクトにもっと関わりたいと考えていたあるエンジニアは、この用語になじみがないと言っていました。 より大規模なプロジェクトに飛び込むまで発生しない、このような重要なプロセスを見落としがちです。ある時点で私がそうであったように、これはこの人に当てはまりました。 だからそれについて書きたかった。その日、私は同僚がシリアライゼーションについて学ぶのを手伝いました。あなたは今日それについて学ぶことになります. シリアライゼーシ

  2. TCP と UDP の違い — 違いとどちらのプロトコルが速いか?

    コンピュータ ネットワーキングを始めようとしている場合、または一部のアプリケーションのネットワーク設定を調べたことがある場合は、TCP と UDP という用語を見たことがあるでしょう。 TCP (Transmission Control Protocol の略) と UDP (User Datagram Protocol) は、インターネット プロトコル スイートの一部です。 TCP と UDP は、インターネット上で情報を送信するための異なる方法です。 しかし、それらが何を表しているかを知っていても、どのプロトコルを使用すべきか、またはなぜ一方を他方よりも優先して使用するのかを知ることは