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


46

ルーターには、ポート転送を設定するときに選択できる2つのプロトコル(および「両方」のオプション)があります:UDPとTCP。これら2つのプロトコルの違いは何ですか?また、ポートフォワーディングでいつ他のプロトコルを選択しますか?

回答:


51

TCPは、データが行き先に到達することを確認するために、ACKと再試行によって支援されます。UDPはコネクションレスであり、「発火して忘れる」。UDPは、ストリーミングタイプのアプリケーションで主に使用されます。一部のデータが失われても、再度送信する必要はありません。

どちらを使用するかは、アプリケーションによって異なります。たとえば、WebサーバーはTCPを使用します。


3
それは理にかなっています-ビデオをストリーミングしている場合、既にそのポイントを通過しているため、後で欠落しているフレームを再送信することは意味がありません。ありがとう
ガイ

15
+1。さらに付け加えると、より深い理解を求めている人は、W。リチャードスティーブンスの主題に関する多くの優れた本を読むべきです。「TCP / IP Illustrated、v1」および「UNIX Network Programming」は、優れたチュートリアルおよびリファレンスとして機能します。
ムラリSuriar

73

ここで良い要約を見つけることができます:

UDPとTCPインターネットプロトコルの違いは何ですか?

TCPとUDPはどちらもトランスポートレイヤーTCP / IPモデルで動作しますが、使用方法が大きく異なります。

最も重要な違いは次のとおりです。

  • 信頼性
    TCP:接続指向
    UDP:コネクションレス
  • 順序付き
    TCP:メッセージ受信の順序は保証されます
    UDP:順序は保証されません
  • プロトコルの重み
    TCP:接続/順序のオーバーヘッドのために重い
    UDP:軽量、オーバーヘッドが非常に少ない
  • パケット
    TCP:ストリーミング、データは「ストリーム」として読み取られ、1つのパケットが終了し、別のパケットが開始する場所を区別しません。読み取り呼び出しごとに複数のパケットが存在する場合があります。
    UDP:データグラム、読み取り呼び出しごとに1パケット。

フレーム構造

ネットワークを介してデータを送信する場合、いわゆる「フレーム」にカプセル化する必要があります。使用されているプロトコルとトポロジに応じて、カプセル化のさまざまな方法があります。次の図は、TCPフレーム構造とUDPフレーム構造の違いを示しています。

これはTCPフレーム構造です。

TCPフレーム

これはUDPフレーム構造で、はるかに単純です。

UDPフレーム

TCPを使用する一般的なプロトコルは、HTTP、FTP、およびSMTPです。UDPを使用するプロトコルの例は、DNSおよびDHCPです。


@splattne -メッセージの順序領収書は保証ではなく、送信することである
オリオン座ゼータ星

@Alnitak:もちろんです。つまり、受信は送信順序で保証されます。これを明確にするために更新します。
スプラット

43

CEOレベルの説明:

UDPは、ビンの一般的な方向に紙を投げるときです。

TCPは見逃したときに、同じ用紙の正確なコピーをビンに落ちるまで何度も投げます。紙の無駄があり、TCPパケットを再送しても、ネットワークまたはシステムのリソースが無駄になります。


1
それは非常に良い「CEOレベル」の説明です-私はそれが好きです!
ケイティウス2009年

私は最高経営責任者ではありませんが、なぜこれまで誰も私に言っていないのです!:p
ニコラスドリアー2009年

これは素晴らしいです!
シャイレント2009年

7

TCPとUDPは、どちらもIP上で実行されるプロトコルです。TCPは配信を保証していますが、UDPは保証していません。転送しようとしているサービスに応じて、ポート転送用のいずれかを選択します。HTTP。たとえば、TCPです。転送しようとしているサービスがどのプロトコルかわからない場合は、ほぼ確実にTCPです。


3

質問の他の部分に答えるには、アプリケーションが使用するものを転送する必要があります。HTTPトラフィックを転送するには、TCPを選択します。TFTPトラフィックを転送するには、UDPを選択します。p2pプログラムは主にtcpとudpの両方を使用するため、両方を転送します。

それはすべて、使用しているプロトコルとプログラムに依存します。


あなたは完全に正しいわけではありません。dnsはtcp / 53も使用します。ゾーン転送用]。
pQd 2009年

はい。また、通常のDNSクエリをtcp経由で送信することも完全に有効です。例をUDPのみを使用するTFTPに変更しました。
hayalci 2009年

2

これまでに述べた違いだけでなく、TCPも提供します

フロー制御。受信者は、ウィンドウメカニズムを使用して、送信者がさらにデータを送信する許可を待つ前に、送信者から受信するオクテット(バイト)の数を制限します。ウィンドウのサイズは、受信者が会話の進行に合わせて変更できます。これにより、受信者は送信者からのデータのレートを「スロットル」できます。UDPはこれを許可せず、受信者ができることは、到着時にバッファリングまたは処理できないデータを破棄することだけです。

不連続な確認応答(選択的確認応答を使用して、送信者が欠落フレームと受信者が既に持っているが通常の方法では確認できない後続フレームではなく欠落フレームのみを再送信できるようにする)、輻輳処理、適応再送信(確認応答が受信されない場合、送信されたフレームを再送信するまでの時間を決定するタイマーの調整)。これらはUDPとは関係ありませんが、TCPが同じペイロードボリュームのネットワーク負荷を大幅に増加させることなくUDP経由で追加のサービスを提供するのに役立ちます。


2

TCPは、データが受信者に届くように努力します。UDPはサポートしていません。


違う。IPプロトコルは信頼性が低く、データが失われる可能性があります。TCPは、送信されたデータ(小さな部分に分割され、IPパケットを介して送信される)が受信者に届くように努力します(必要に応じて最終的に小さな部分を再送信します)。
匿名

@ Anonymous-あなたは基本的に私が上で言ったことを書き直した。どうしたの?
J.ポルファー

IPは、基盤となるフレームワーク(スタック)であり、UDPとTCPの両方が使用する基本的な通信プロトコルであることがわかると思います。私が知る限り、JUST IPを使用してインターネット上で実際に有用なデータを通信することはできません。基本的なpingなどでも、IP上のプロトコル(もう1つのメイン; ICMP)を使用します。
リーB

1

一方と他方を説明するすべての答えを気にしないでください。ポートフォワードを設定するためのルールは非常に単純です。使用しているプロトコル/アプリケーションのドキュメントでUDPを使用する場合を除き、TCPを選択する必要があります。通常、UDPを使用するものは、ストリーミング、または信頼性(特にDNSおよびNTP)よりも軽量なプロトコル/速度を優先する非常に単純なものに関連しています。TCPやUDP以外にも、ICMP、トンネリングプロトコルなどのプロトコルがあることに注意してください。


1

プロトコルがよく知られているほど、経路上のより多くのルーターがプロトコルに介入します。tcpパケットを送信すると、受信したパケットが非常に破損している可能性が高くなります。通常、UDPはそれほど複雑ではなく、他の254のIP Paylodプロトコルは通常完全に変更されていません。


0

ユーザーデータグラムプロトコル(UDP)

これは、インターネットプロトコルスイートの基本プロトコルの一部です。ネットワークコンピュータ上のプログラムは、データグラムとも呼ばれる短いメッセージを送信できます。UDPは信頼性を保証しません(データグラムが順不同で到着したり、複製されたり、予告なしに欠落したりすることがあります)。すべてのパケットが実際に配信されるかどうかのチェックが行われないという事実は、保証された配信を必要としないアプリケーションにとって、UDPがより速く、より効率的であることを証明します。UDPはそのような状況でその用途を見つけます:

時間に敏感なアプリケーション。遅延パケットによる問題は回避されます

また、膨大な数のクライアントからの小さなクエリに応答するサーバーにも役立ちます。UDPは、パケットブロードキャスト(ローカルネットワーク上のすべてに伝達)とマルチキャスト(すべてのサブスクライバに伝達)をサポートしています。

伝送制御プロトコル(TCP)

インターネットプロトコルスイートでのこのプロトコルの重要性から、TCP / IPと呼ばれることがよくあります。TCPは、2つのエンドシステムのみに関係するより高いレベルで動作します(たとえば、WebブラウザーとWebサーバー間)。TCPは、あるコンピューター上のあるプログラムから別のコンピューター上の別のプログラムへのデータストリームの信頼性の高い順次配信を提供します。TCPの一般的な用途は、電子メールサポートとファイル転送およびWebアプリケーションを再グループ化します。管理タスクの中で、TCPはメッセージサイズ、メッセージの交換速度、およびネットワークトラフィックの輻輳を制御します。IPに関しては、インターネット経由で転送されるメッセージとして、コンピューターからコンピューターへの低レベルの転送を処理します。


0

どちらも、インターネットプロトコルまたはIPと呼ばれるものの上に構築されたネットワークプロトコルです。インターネットプロトコルは、インターネットの主要なプロトコルであり、たとえばWebの閲覧を可能にするものです。そのため、これらのプロトコルがTCP / IPまたはUDP / IPとして記述されることがよくあります。これらは、実際にはインターネットのコアプロトコルです。

どちらの場合も、データはパケットと呼ばれるチャンクに分割されます。TCPは、これらのパケットが宛先に、正しい順序でエラーなしで到達することを保証します。

一方、UDPは、データパケットが到着することさえ保証しません。到着した場合にエラーが発生しないことのみを保証します。

通常、他のプロトコルはTCPおよびUDP上で実行され、オペレーティングシステム内ではなくアプリケーション内で動作するため、アプリケーションプロトコルとして知られています。Webブラウズは、TCPプロトコルを使用するHTTPプロトコルを使用します。

ドメイン名の検索またはDNSクエリは、多くの場合UDPを使用しますが、TCPも使用できます。多くのストリーミングサービスは、別のアプリケーションプロトコルの下でUDPを使用します。

それがあなたの質問にもっと簡単な英語で答えることを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.