TCPとUDPの類似点と相違点

TCPとUDPの類似点と相違点

TCP/IPモデルのトランスポート層には、UDPユーザーデータグラムプロトコルとTCP伝送制御プロトコルの2つの異なるプロトコルがあります。

類似点

  • TCPそして、UDPプロトコルは、トランスポート層で実行されています
  • TCPそして、UDP通信がオープンポートに必要

違い

TCP

  • TCP全二重通信を提供するコネクション型プロトコルであり、データを送信する前にリンクを確立する必要があり、データ送信の負荷が比較的大きい。
  • TCPフロー制御や輻輳制御などのサービスを使用して、信頼性の高い通信を確保するために、信頼性の高い配信サービスを提供します。
  • TCPヘッダーの最小20バイトと最大60バイトには、送信元ポート、宛先ポート、シリアル番号、確認番号、データオフセット、制御フラグ、ウィンドウ、チェックサム、緊急ポインタ、オプション、その他の情報が含まれます。
  • TCP1対1の通信のみ。
  • TCPバイトストリーム通信用。
  • TCPデータ送信の順序を保証するにはTCP、接続のデータストリームの各バイトのシーケンス番号をコーディングして、送信順序を決定します。
  • TCPチェックサム、確認応答、シーケンス番号、タイムアウト再送信、接続管理、フロー制御、輻輳制御などの機能を提供します。
  • TCPファイル転送などの信頼性の高い伝送を必要とするアプリケーションに適しています

UDP

  • UDPコネクションレスです。つまり、データを送信する前に接続を確立する必要がなく、データ送信の負荷は比較的小さいです。
  • UDP確実な配信を保証せず、フロー制御と輻輳制御を使用しないベストエフォート配信を使用します。
  • UDP最初の8バイトには、送信元ポート、宛先ポート、長さ、チェックサム情報が含まれています。
  • UDPユニキャスト、マルチキャスト、ブロードキャストの機能があり、1対1、1対多、多対多、および多対1のデータ転送方法をサポートしています。
  • UDPこれはメッセージ通信を指向しており、アプリケーション層から渡されたメッセージはマージも分割もされませんが、これらのメッセージの境界は保持され、ヘッダーが追加された後にIPに配信されます。
  • UDPデータ送信の順序は保証されていません。アプリケーション層プログラムは、順序を制御するためにデータセグメントにシーケンス番号を追加する必要があります。
  • UDPのみでのIPエラー検出機能その少し余分な機能やポートの機能を超えるデータグラムサービス。
  • UDPインターネット電話、ビデオ会議、ライブブロードキャストなどのリアルタイムアプリケーションに適しています。

関連する問題

UDPが信頼性の高い伝送を実現

トランスポート層は、データの信頼できる伝送を保証することはできず、アプリケーション層を介してのみ達成できます。実装方法は、TCP信頼できる伝送の方法を参照できますが、実装は伝送層になく、主に確認メカニズムと再伝送メカニズムを実装することによって、実装がアプリケーション層に転送されます。 、確認ウィンドウ機構が、ある信頼性の高い伝送を達成するためにRUDPRTPUDTオープンソースの利用のようなUDP信頼できるデータ伝送を達成するために、加えて、そこに組み込まれているTCP信頼性とUDP速度のトレードオフKCPプロトコル。

TCPの短い接続と長い接続の違い

ショート接続:ClientするServerメッセージ、送信Server応答をClientした後、完成したら書き、両側今回はどんな開始できるclose操作を、これらは一般的にClient開始する最初のclose操作を。短い接続は、通常、Client/Serverその間の読み取り操作と書き込み操作のみを渡します。ショートリンクの管理は比較的簡単です。既存の接続を確立することは便利な接続であり、追加の制御方法は必要ありません。ただし、顧客の要求が頻繁である場合、TCP操作の確立と終了に時間と帯域幅浪費します。
ロング接続:ClientServerの書き込み、およびそれらの間の接続が完了した後は、積極的に、後続の読み取りおよび書き込み操作は、接続を省略することができ、より長い接続を使用していきます、閉じられていないTCP、操作およびクローズを確立するため、廃棄物の削減節約を時間は、リソースを頻繁に要求する顧客にとっては、長い接続に適していますが、クライアントが接続するにつれて、Server負荷はますます大きくなります。現時点では、長時間、未読をオフにするなど、負荷を減らすためのいくつかの戦略を採用する必要があります。リンクLRUアルゴリズムの記述、クライアントリンクの数の制限など

TCPスティッキパケット展開ソリューション

これTCPはバイトストリーム指向であり、上位層のビジネスデータを理解できないため、データパケットが下位層で分割および再編成されないという保証はありません。この問題は、上位層のアプリケーションプロトコルスタックの設計によってのみ解決できます。

  • メッセージの固定長:送信側は各データパケットを固定長にカプセル化します(十分でない場合は0埋めることができます)。これにより、受信側が受信バッファーで固定長のデータを読み取るたびに、各データパケットが自然に分割されます。来て
  • メッセージ境界を設定します。サーバーは、メッセージ境界に従ってメッセージのコンテンツをネットワークストリームから分離し、FTPプロトコルなどのセグメンテーションのためにパケットの最後にキャリッジリターンとラインフィード文字を追加します。
  • メッセージは、メッセージヘッダーとメッセージ本文に分かれています。メッセージヘッダーには、メッセージの全長(またはメッセージ本文の長さ)を示すフィールドが含まれています。

参考資料

https://zhuanlan.zhihu.com/p/108822858
https://www.cnblogs.com/liangyc/p/11628148.html
https://blog.csdn.net/m_xiaoer/article/details/72885418
https://blog.csdn.net/pangyemeng/article/details/50387078
https://blog.csdn.net/quiet_girl/article/details/50599777
https://blog.csdn.net/liuchenxia8/article/details/80428157
https://blog.csdn.net/qq_40732350/article/details/90902396
https://www.cnblogs.com/fundebug/p/differences-of-tcp-and-udp.html

おすすめ

転載: www.cnblogs.com/WindrunnerMax/p/12723155.html