1. 概要

ネットワーク通信プロトコルは、インターネット上またはコンピュータネットワーク内のデバイス間の通信の標準です。 すべての通信プロトコルのうち、広く使用されている2つのプロトコルはTCPとUDPです。

このチュートリアルでは、TCPおよびUDPプロトコルの基本的な概念について説明します。 TCPソケットとUDPソケットが同じポートで機能するかどうかを例を挙げて説明します。

2. TCPとUDPの概要

TCPとUDPは、インターネットプロトコル(IP)で動作する2つの標準プロトコルです。 TCPプロトコルとUDPプロトコルの両方が、OSIモデルのトランスポート層で使用されます。

TCPはTransmissionControlProtocolの略で、コネクション型プロトコルです。 2台のコンピューターは、TCPを使用してデータパケットを転送する前に、ハンドシェイクを介してクライアントサーバー接続を確立します。 さらに、TCPはヘッダー情報をデータパケットに入れて、パケットを宛先コンピューターで再構成できるようにします。

データの信頼性が不可欠な場合はTCPを使用します。 また、送信されるデータが正常であることを確認します。 さらに、受信者が送信者によって送信されたデータを受信しない場合、TCPは特定の時間の後にパケットを再送信します。 さらに、TCPのエラー制御チェックサムを使用して、データの整合性を確保します。

ユーザーデータグラムプロトコル(UDP)は、コネクションレス型プロトコルです。 プロトコルが受信側でデータを受信することを保証するものではありません。 UDPは、TCPと比較してレイテンシが低くなっています。 UDPには再送信メカニズムがないため、より高速です。

信頼性よりも時間が重要なアプリケーションは、UDPプロトコルを使用します。 UDPはステートレスであるため、メディアストリーミングなどの多くの接続を必要とするアプリケーションはUDPを使用します。 オンラインゲーム、VOIP、ストリーミングメディアは、一貫性のあるデータよりも時間が重要であるため、UDPを使用します。

より詳細な比較については、TCPとUDPの違いに関する記事を参照してください。

3. ネットワークポート

アプリケーション層のプログラムは、ポートを介してトランスポート層と通信します。 さまざまなアプリケーションにさまざまなポートを割り当てて、それらのポートを使用してネットワーク内のネットワーク対応デバイスとデータを接続および交換できるようにします。

たとえば、ポート番号はHTTP用に予約されています。 ポートは多重化に役立ち、複数のネットワーク接続または複数の通信を同じデバイスで実行できます。

これは16ビットの数値です。 したがって、との間の値を持つことができます。 したがって、コンピュータネットワークに合計TCPポートを設定できます。 同様に、ネットワークにはUDPポートを含めることもできます。 あるデバイスから別のデバイスにデータを送信すると、通信に使用しているプロトコルに応じて、特定のTCPポートまたはUDPポートにデータが送信されます。

ポートは、銀行の支店にある複数のカウンターのようなものです。 さまざまな顧客が、カウンターを使用して銀行業務を同時に実行できます。

4. TCPソケットとUDPソケットは同じポートを使用できますか?

TCPポートとUDPポートは相互に関連していません。 TCPポートはTCPスタックによって解釈されますが、UDPスタックはUDPポートを解釈します。 ポートは、複数のデバイスがノードに接続できるように接続を多重化する方法です。

したがって、技術的には、上位レベルのプロトコルは同じまたは異なるTCPおよびUDPポート番号を使用できます。 一方、1台のコンピューターは、TCPとUDPの同じポート番号を同時に使用して2つの異なるサービスと通信できます。

たとえば、WebサーバーはTCPポートにバインドします。 アプリケーションはTCPとUDPに同じポート番号を使用するため、覚えやすくなっています。 同じポート番号に接続する2つのアプリケーションは同様のタスクを実行する可能性がありますが、TCPポートとUDPポートは異なります。 それらは互いに独立しています。

銀行の例をもう一度考えてみましょう。 TCPとUDPが2つの異なるバンクであると仮定しましょう。 慣例により、TCPバンクとUDPバンクの両方が、カウンターを受信として作成することを決定します。 さらに、彼らはまた、カウンターを設定し、現金を処理します。

したがって、TCPとUDPの両方の銀行の顧客は、受信のためにカウンターに行くことができます。 さらに、現金を預け入れたい場合は、カウンターと。のどちらかを選択できます。 カウンター番号は同じですが、バンクはまったく異なります。 さらに、両方の銀行は、いつでもさまざまなタスクにカウンターを自由に再割り当てできます。

したがって、要するに、 TCPとUDPは関連していません。 上位レベルのプロトコルでは、混乱を避けるために、慣例により同じポート番号を使用する場合があります。 

5. 例

TCPソケットとUDPソケットに同じポート番号を使用する例について話しましょう。

ドメインネームシステム(DNS)は、ドメイン名をIPアドレスに照合する分散型システムです。 また、ドメイン名を使用して他のドメイン関連のレコードをフェッチします。

DNSといくつかの一般的なプロトコルで使用されるポート番号を見てみましょう。

DNSはUDPとTCPの両方に依存しています。 さらに、ポート番号は、DNS関連のタスクのためにTCPとUDPの両方で使用されます。 当初、DNSはUDPポートとのみ互換性がありました。 ただし、TCPポートは、信頼性と接続の再利用を確保するために後で追加されました。

DNSは通常UDPで機能しますが、パケットサイズが大きい場合は、TCPポートを介して接続します必要な操作を実行します。 小さなパケットしか送信できないUDPとは異なり、TCPにはデータに制限がありません。 したがって、UDPで要求を送信しているときに障害が発生した場合、通信はTCPに切り替わります。

ゾーン転送は、完全なDNSレコードデータを別のマシンに転送することによってDNSサーバーを複製するプロセスです。 TCPポートを使用します。 他のDNS関連の操作では、状況に応じてUDPポートまたはTCPポートの両方を使用できます。

6. 結論

このチュートリアルでは、TCPおよびUDPソケットで使用されるポートの概要を説明しました。 さらに、TCPソケットとUDPソケットが同じポートを使用できるかどうかを例を挙げて説明しました。