web-dev-qa-db-ja.com

TCPとUDPの違いは?

TCPとUDPの違いは何ですか?

TCPは、タイムクリティカルでないアプリケーションの場合に使用され、UDPは、データの高速伝送を必要とするゲームまたはアプリケーションに使用されることを知っています。 TCPがHTTP、HTTP、FTP、SMTP、およびTelnetに使用されることを知っています。 UDPはDNSとDHCPに使用されることを知っています。

しかし、なぜ? TCPおよびUDPのどの特性が、それぞれのユースケースに役立ちますか?

136
user749414

TCPは、IPネットワーク上の接続指向のストリームです。すべての送信パケットが正しい順序で宛先に到達することを保証します。これは、送信者に送り返される確認応答パケットの使用と自動再送信を意味し、UDPよりも追加の遅延と一般的な非効率的な送信を引き起こします。

UDPはコネクションレスプロトコルです。通信はdatagram指向です。整合性は、単一のデータグラムでのみ保証されます。データグラムは宛先に到達し、順不同で到着することも、まったく到着しないこともあります。非ACKを使用するため、TCPよりも効率的です。一般に、TCP接続のオーバーヘッドよりもわずかな割合のパケット損失率が望ましいリアルタイム通信に使用されます。

特定の状況では、UDPが使用されるのは、ブロードキャストパケット送信が許可されるためです。これは、クライアントコンピューターがまだDHCPアドレスを受け取っていない(これがIPネゴシエーションプロトコルの目的である)ため、DHCPプロトコルなどの場合に基本的であり、TCPアドレス自体なしでIPストリームを確立する方法はありません。

113
Heisenbug

Skullboxの記事: から

TCP(Transmission Control Protocol)は、インターネットで最も一般的に使用されているプロトコルです。これは、TCPがエラー修正を提供するためです。 TCPプロトコルを使用すると、「配信の保証」が行われます。これは、主に「フロー制御」と呼ばれる方法が原因です。フロー制御は、データをいつ再送信する必要があるかを判断し、前のパケットが正常に転送されるまでデータのフローを停止します。これは、データのパケットが送信されると衝突が発生する可能性があるためです。これが発生すると、クライアントはパケット全体が完了し、元のパケットと同一になるまで、サーバーからのパケットを再要求します。

UDP(ユーザーデータグラムプロトコル)は、インターネット上で一般的に使用されるプロトコルです。ただし、Webページ、データベース情報などの重要なデータを送信するためにUDPが使用されることはありません。 UDPは、一般的にオーディオとビデオのストリーミングに使用されます。 Windows Mediaオーディオファイル(.WMA)、Real Player(.RM)などのストリーミングメディアは、速度を提供するためUDPを使用します! UDPがTCPより速い理由は、フロー制御またはエラー修正の形式がないためです。インターネット経由で送信されるデータは衝突の影響を受け、エラーが発生します。 UDPは速度のみに関係していることに注意してください。これが、ストリーミングメディアが高品質でない主な理由です。

2)TCPは、UDPのようにネットワークインターフェイスレベルでより多くの処理を必要とします。

3)TCPは、3ウェイハンドシェイク、輻輳制御、フロー制御、およびその他のメカニズムを使用して、信頼性の高い伝送を確保します。

4)UDPは、パケット損失がパケット損失よりも深刻な場合に主に使用されます。

50
p27

TCPは、2つの場所間の専用のスケジュールされたUPS/FedEx集荷/降車と考えてください。一方、UDPは、郵便はがきをメールボックスに投げることに相当します。

UPS/FedExは、郵送した荷物が確実に到着し、時間通りに到着するように最善を尽くします。ポストカードを使用すると、到着した場合はラッキーで、順不同または遅れて到着する可能性があります(休暇から帰宅した後、誰かからポストカードを何回もらったことがありますか?)

TCPは可能な限り保証された配信プロトコルに近いのに対し、UDPは単なる「ベストエフォート」です。

40
Marc B

UDPがDNSおよびDHCPに使用される理由:

DNS-TCPは、クライアントからよりも(接続をリッスンする)サーバーからより多くのリソースを必要とします。特に、TCP接続が閉じられると、サーバーはTIME_WAIT_2として知られる状態で2分間接続の詳細を記憶する(メモリに保持する)必要があります。これは、前の接続から誤って繰り返されるパケットが現在の接続の一部として解釈されるのを防ぐ機能です。 TIME_WAIT_2を維持すると、サーバー上のカーネルメモリが消費されます。 DNS要求は小さく、多くの異なるクライアントから頻繁に届きます。この使用パターンは、クライアントと比較してサーバーの負荷を悪化させます。接続も状態もクライアントとサーバーのどちらにも維持できないUDPを使用すると、この問題が改善されると考えられていました。

DHCP-DHCPはBOOTPの拡張です。 BOOTPは、クライアントの起動中にクライアントコンピューターがサーバーから構成情報を取得するために使用するプロトコルです。サーバーを見つけるために、BOOTP(またはDHCP)サーバーを要求するブロードキャストが送信されます。ブロードキャストは、UDPなどのコネクションレスプロトコルを介してのみ送信できます。したがって、BOOTPでは、サーバー検索ブロードキャストのために少なくとも1つのUDPパケットが必要でした。さらに、クライアントの起動中にBOOTPが実行されているため、これはクライアントがTCP/IPスタック全体をロードして実行できない場合があるため、UDPのみがクライアントがその時点で処理できるプロトコルです。時間。最後に、一部のDHCP/BOOTPクライアントには、UDPのみが搭載されています。たとえば、一部のIPサーモスタットはUDPのみを実装しています。理由は、それらが非常に小さなプロセッサと小さなメモリで構築されているため、TCPを実行できませんが、ブート時にIPアドレスを取得する必要があるためです。

他の人が述べたように、UDPはストリーミングメディア、特にオーディオにも役立ちます。遅延したパケットを単にドロップすると、ネットワークラグのもとで会話がより良く聞こえます。 UDPでそれを行うことはできますが、TCPを使用すると、ラグ中に取得できるのは一時停止だけで、その後に既に一時停止している分だけ常にオーディオが遅延します。双方向の電話スタイルの会話の場合、これは受け入れられません。

20
Heath Hunnicutt

違いの1つは短い

UDP:メッセージを送信し、宛先、コネクションレスプロトコルに到達した場合に振り返らない
TCP:メッセージを送信し、宛先に接続することを保証する、コネクション型プロトコル

15
mcaaltuntas

TCPは、実際のデータ送信が行われる前に接続を確立しますが、UDPはそうではありません。このようにして、UDPはより高速な配信を提供できます。したがって、DNS、タイムサーバーアクセスなどのアプリケーションはUDPを使用します。

UDPとは異なり、TCPは輻輳制御を使用します。ネットワーク負荷に応答します。 UDPとは異なり、ネットワークの輻輳が差し迫っていると速度が低下します。したがって、一定のスループットを好むマルチメディアのようなアプリケーションはUDPに向いているかもしれません。

また、UDPは信頼性が低く、パケット損失に反応しません。したがって、マルチメディア伝送のような損失に敏感なアプリケーションはUDPを好みます。ただし、TCPは信頼できるプロトコルであるため、Web転送、電子メール、ファイルダウンロードなどの信頼性を必要とするアプリケーションはTCPを優先します。

その上、今日のインターネットでは、UDPはミドルボックスのためTCPほど歓迎されていません。 skypeなどの一部のアプリケーションは、UDP接続がブロックされていると想定される場合、TCPに分類されます。

9
Timir

TcpプロトコルとUdpプロトコルの短い簡単な違い:

1)Tcp-伝送制御プロトコルおよびUdp-ユーザーデータグラムプロトコル。

2)Tcpは信頼性の高いプロトコルですが、Udpは信頼性の低いプロトコルです。

3)Tcpはストリーム指向で、Udpはメッセージ指向プロトコルです。

4)TcpはUdpよりも低速です。

2
msc
2
rapt

このスレッドを実行し、この方法で表現してみましょう。

TCP

-wayハンドシェイク

ボブ:ちょっとエイミー、秘密を伝えたい
エイミー:OK、どうぞ、準備ができました
ボブ:OK

通信
ボブ: 'I'、これは最初の文字です
Amy:最初の手紙を受け取ったので、2番目の手紙を送ってください
ボブ: ''、これは2番目の文字です
Amy:2番目の手紙を受け取りました。3番目の手紙を送ってください
ボブ: 'L'、これは3番目の文字です
しばらくして
ボブ: 'L'、これは3番目の文字
Amy:3番目の手紙を受け取り、4番目の手紙を送ってください
ボブ: 'O'、これは4番目の文字
エイミー:...
......

4-wayハンドシェイク
ボブ:私の秘密が明らかになりました、今、あなたは私の心を知っています。
エイミー:OK。何も言うことはない。
ボブ:はい。

UDP

ボブ:I LOVE U
エイミーは受け取りました:OVI L E

TCPはUDPよりも信頼性が高く、メッセージの順序も均等に保証されています。それが、UDPがより軽量で効率的である理由です。

1
Gearon

類推による簡単な説明

TCPはこのようなものです。

あなたが火星にペンパルを持っていると想像してください(インターネットの前の古き時代に書かれた手紙とやり取りしました)。

あなたはペンフレンドに非常に有能な人々の7つの習慣を送る必要があります。それで、あなたは7つの別々の手紙でそれを送ることに決めます:

  1. 手紙1-積極的になる
  2. 手紙2-終わりを念頭に置いて開始...

等.

など。手紙7-のこぎりを研ぐ

要件:

あなたのペンフレンドがallあなたの手紙-順番にそしてそれらが到着することperfectlyペン支払いが手紙1の前に手紙7を受け取った場合、それは良くありません。ペンフレンドが文字3以外のすべての文字を受け取った場合-それもまた良くありません。

要件が満たされていることを確認する方法は次のとおりです。

  • 確認レター:ペンフレンドは、「レター1を受け取りました」と言う確認レターを送信します。そうすれば、ペンフレンドがそれを受け取ったことを知ることができます。手紙が届かない、または順番どおりに届かない場合は、その手紙とそれ以降のすべての手紙を停止し、戻って再送信する必要があります。
  • フロー制御:クリスマスの頃、ペンフレンドが大量のメールを受信することを知っているので、ペンフレンドを圧倒したくないので、あなたは遅くなります。 (ペンフレンドは、ペンパルのメールボックスにある未読メッセージの数に関する絶え間ない更新を送信します-ペンパルがいっぱいになったために受信トレイが爆発しようとしていると言った場合、あなたのペンパルのそれらを読むことができなくなります。
  • 完璧な到着。手紙をメールで送信しているときに、破れたり、カタツムリが半分を食べたりすることがあります。すべての手紙が完璧な状態で届いたことをどうやって知るのですか?あなたのペンフレンドは、あなたが彼らが完全な手紙を持っているかどうか、そしてそれがあなたが送ったまさにその手紙であったかどうかをチェックできるメカニズムをあなたに与えます。 (例:ワードカウントなどを使用)。基本的なアナロジー。
0
BKSpurgeon