私のルーターには、ポート転送の設定時にUDPとTCPの2つのプロトコル(および「両方」のオプション)を選択できます。これらの2つのプロトコルの違いは何ですか?また、ポート転送でどちらを選択するのですか?
[〜#〜] tcp [〜#〜] は、データが意図したとおりに到達することを確認するために、ackと再試行によってサポートされています。 [〜#〜] udp [〜#〜] はコネクションレスで、「ファイアアンドフォーゲット」です。 UDPは主にストリーミングタイプのアプリケーションに使用されます。データが失われた場合、再度送信する必要はありません。
どちらを使用するかは、アプリケーションによって異なります。たとえば、WebサーバーはTCPを使用します。
ここで良い要約を見つけることができます:
TCPとUDPはどちらもトランスポート層のTCP/IPモデルで機能しますが、使い方は大きく異なります。
最も重要な違いは次のとおりです。
フレーム構造
データがネットワーク経由で送信される場合、いわゆる「フレーム」にカプセル化する必要があります。使用されているプロトコルとトポロジに応じて、さまざまなカプセル化の方法があります。次の画像は、TCPとUDPフレーム構造の違いを示しています。
これはTCPフレーム構造です:
これはUDPフレーム構造であり、はるかに単純です。
TCP=を使用する典型的なプロトコルはHTTP、FTP、SMTPです。UDPを使用するプロトコルの例はDNSとDHCPです。
そして、CEOレベルの説明:
UDPは、ごみ箱の一般的な方向に紙を投げるときです。
TCPはそれが見当たらないとき、あなたはそれがビンに落ちるまで同じ紙の正確なコピーを何度も何度も投げます。 TCPパケットが再送信されても、ネットワークまたはシステムリソースの浪費という結果になります。
TCPとUDPはどちらもIP上で実行されるプロトコルです。 TCPは配信が保証されていますが、UDPはそうではありません。転送しようとしているサービスに応じて、ポート転送にどちらか一方を選択します。たとえば、HTTPはTCPです。転送しようとしているサービスのプロトコルがわかっている場合、それはほぼ確実にTCPです。
質問の他の部分に回答するには、アプリケーションが使用するものを転送する必要があります。 HTTPトラフィックを転送するには、TCPを選択します。 TFTPトラフィックを転送するには、UDPを選択します。 p2pプログラムは主にtcpとudpの両方を使用するため、両方を転送します。
すべては、使用しているプロトコルとプログラムによって異なります。
これまでに述べた違いと同様にTCPも提供します
フロー制御。ウィンドウメカニズムを使用して、受信者は送信者がデータを送信する許可を待つ前に、送信者から受信するオクテット(バイト)の数を制限します。ウィンドウのサイズは、会話の進行中に受信者が変更できます。これにより、受信者は送信者から送信されるデータの速度を「調整」できます。UDPではこれが許可されておらず、受信者ができることは、到着時にバッファリングまたは処理できないデータを破棄することだけです。
非連続確認応答などのいくつかのより技術的な機能(選択的確認応答を使用して、受信者がすでに持っているが、通常の方法では確認できなかった後続のフレームではなく、欠落しているフレームだけを再送信できるようにします)、輻輳処理およびアダプティブ再送信(確認応答が受信されない場合に送信フレームを再送信する時間を決定するタイマーを調整する)。これらはUDPには関係ありませんが、TCPを使用すると、同じペイロードボリュームのネットワーク負荷を大幅に増加させることなく、UDPを介して追加のサービスを提供できます。
TCPは、データが確実に受信者に届くように努力します。 UDPにはありません。
どちらか一方を説明するすべての答えを気にしないでください。ポートフォワードを設定するためのルールは非常に単純です。使用しているプロトコル/アプリケーションのドキュメントでUDPを使用する場合を除き、TCPを選択する必要があります。通常、UDPを使用するものは、ストリーミング、または信頼性よりも軽量のプロトコル/速度を優先する非常に単純なもの(特にDNSおよびNTP)に関連しています。 TCPおよびUDP以外にも他のプロトコルがあることに注意してください-ICMP、トンネリングプロトコルなど。
プロトコルがよく知られているほど、パス上のルーターがプロトコルに介入します。 tcpパケットを送信します。受信したパケットが非常に壊れている可能性が高くなります。通常、UDPはそれほど複雑ではなく、他の254のIPペイロードプロトコルは通常、まったく変更されていません。
ユーザーデータグラムプロトコル(UDP)
これは、インターネットプロトコルスイートの基本プロトコルの一部です。ネットワークコンピュータ上のプログラムは、データグラムと呼ばれることもある短いメッセージを送信できます。 UDPは信頼性を保証しません(データグラムが順不同で到着したり、重複したり、通知なしに失われたりすることがあります)。すべてのパケットが実際に配信されるかどうかのチェックが行われないという事実により、UDPは、保証された配信を必要としないアプリケーションに対して、より高速で効率的であることが証明されています。 UDPは、このような状況での使用を見つけます。
時間に敏感なアプリケーション。遅延パケットによる問題は回避されます
また、膨大な数のクライアントからの小さなクエリに応答するサーバーにも役立ちます。 UDPは、パケットブロードキャスト(ローカルネットワーク上のすべてに伝達)およびマルチキャスト(すべての加入者に伝達)をサポートしています。
伝送制御プロトコル(TCP)
これは、インターネットプロトコルスイートにおけるこのプロトコルの重要性のため、TCP/IPと呼ばれることがよくあります。 TCPは、2つのエンドシステム(たとえば、WebブラウザーとWebサーバーの間)のみに関係して、より高いレベルで動作します。 TCPは、あるコンピュータ上の1つのプログラムから別のコンピュータ上の別のプログラムへのデータストリームの信頼性の高い順次配信を提供します。 TCPの一般的な使用法は、電子メールサポートとファイル転送およびWebアプリケーションを再グループ化することです。その管理タスクの中で、TCPはメッセージサイズ、メッセージ交換の速度、およびネットワークトラフィックの輻輳を制御します。 IPについては、インターネット経由で転送されるメッセージとして、コンピューターからコンピューターへの下位レベルの送信を処理します。
どちらも、インターネットプロトコルまたはIPと呼ばれるものの上に構築されたネットワークプロトコルです。インターネットプロトコルは、インターネットの主要なプロトコルであり、たとえば、Webを閲覧できるようにするものです。そのため、これらのプロトコルがTCP/IPまたはUDP/IPとして記述されることがよくあります。それらは実際にはインターネットのコアプロトコルです。
どちらの場合も、データはパケットと呼ばれるチャンクに分割されます。 TCPは、これらのパケットが宛先に、正しい順序で、エラーなく到達することを保証します。
一方、UDPでは、データパケットの到着さえ保証されません。到着した場合にのみ、エラーが発生しないようにします。
通常、他のプロトコルはTCPおよびUDPの上で実行され、オペレーティングシステム内ではなくアプリケーション内で動作するため、アプリケーションプロトコルと呼ばれます。Webブラウズは、 TCPプロトコル。
ドメイン名のルックアップまたはDNSクエリでは、UDPがよく使用されますが、TCPも使用できます。多くのストリーミングサービスは、別のアプリケーションプロトコルの下でUDPを使用します。
簡単な英語で質問にお答えいただければ幸いです。