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

ルーターでポートフォワーディングを設定するとき、またはファイアウォールソフトウェアを構成するときに、TCPとUDPへの参照を見たことがあるでしょう。これらの2つのプロトコルは、さまざまなタイプのデータに使用されます。

TCP / IPは、インターネットおよびほとんどのローカルネットワークを介して通信するためにデバイスによって使用されるプロトコルのスイートです。これは、元のプロトコルの2つである伝送制御プロトコル(TCP)とインターネットプロトコル(IP)にちなんで名付けられました。TCPは、アプリに、順序付けられエラーチェックされた情報パケットのストリームをネットワーク経由で配信(および受信)する方法を提供します。ユーザーデータグラムプロトコル(UDP)は、エラーチェックを廃止することで情報のより高速なストリームを配信するためにアプリによって使用されます。一部のネットワークハードウェアまたはソフトウェアを構成するときは、違いを知る必要がある場合があります。

彼らの共通点

関連:プライベートIPアドレスとパブリックIPアドレスを見つける方法

TCPとUDPはどちらも、インターネットを介してデータのビット(パケットと呼ばれる)を送信するために使用されるプロトコルです。どちらのプロトコルも、IPプロトコルの上に構築されています。つまり、TCPまたはUDPのどちらを介してパケットを送信する場合でも、そのパケットはIPアドレスに送信されます。これらのパケットは、コンピューターから中間ルーターに転送され、宛先に転送されるため、同様に扱われます。

IP上で機能するプロトコルはTCPとUDPだけではありません。ただし、最も広く使用されています。

TCPのしくみ

TCPは、インターネットで最も一般的に使用されているプロトコルです。

ブラウザでWebページを要求すると、コンピュータはTCPパケットをWebサーバーのアドレスに送信し、Webページを返送するように要求します。Webサーバーは、TCPパケットのストリームを送信することで応答します。これは、Webブラウザーがつなぎ合わせてWebページを形成します。リンクをクリックしたり、サインインしたり、コメントを投稿したり、その他の操作を行うと、WebブラウザがTCPパケットをサーバーに送信し、サーバーがTCPパケットを送り返します。

TCPは信頼性がすべてです。TCPで送信されたパケットは追跡されるため、転送中にデータが失われたり破損したりすることはありません。これが、ネットワークに問題があってもファイルのダウンロードが破損しない理由です。もちろん、受信者が完全にオフラインの場合、コンピュータはあきらめ、リモートホストと通信できないことを示すエラーメッセージが表示されます。

TCPはこれを2つの方法で実現します。まず、パケットに番号を付けて順序付けます。次に、受信者がメッセージを受信したことを示す応答を送信者に返送することにより、エラーチェックを行います。送信者が正しい応答を受け取らなかった場合、受信者がパケットを正しく受信するようにパケットを再送信できます。

関連:ProcessExplorerを理解する

Process Explorerおよびその他のシステムユーティリティは、プロセスが確立する接続の種類を表示できます。ここでは、さまざまなWebサーバーへのTCP接続が開いているChromeブラウザを確認できます。

UDPのしくみ

関連:待ち時間が速いインターネット接続でさえ遅く感じることができる方法

UDPプロトコルはTCPと同様に機能しますが、エラーチェック機能をすべて破棄します。すべてのやり取りは待ち時間をもたらし、物事を遅くします。

アプリがUDPを使用する場合、パケットは受信者に送信されるだけです。送信者は、受信者がパケットを受信したことを確認するのを待たずに、次のパケットの送信を続行します。受信者があちこちでいくつかのUDPパケットを見逃した場合、それらは失われるだけです。送信者はそれらを再送信しません。このオーバーヘッドをすべて失うことは、デバイスがより迅速に通信できることを意味します。

UDPは、速度が必要でエラー訂正が不要な場合に使用されます。たとえば、UDPはライブブロードキャストやオンラインゲームで頻繁に使用されます。

たとえば、TCPではなくUDPを使用してブロードキャストされることが多いライブビデオストリームを視聴しているとします。サーバーは、監視しているコンピューターにUDPパケットの一定のストリームを送信するだけです。数秒間接続が失われると、ビデオがフリーズしたり、一時的にジャンプしたりしてから、ブロードキャストの現在のビットにスキップする場合があります。わずかなパケット損失が発生した場合、データが失われることなくビデオが再生され続けるため、ビデオまたはオーディオが一時的に歪む可能性があります。

これはオンラインゲームでも同様に機能します。一部のUDPパケットを見逃した場合、新しいUDPパケットを受信すると、プレイヤーキャラクターがマップ全体にテレポートするように見えることがあります。ゲームはあなたなしで続行されるので、あなたがそれらを逃した場合、古いパケットを要求する意味はありません。重要なのは、数秒前に起こったことではなく、ゲームサーバーで今起こっていることです。TCPのエラー訂正を破棄すると、ゲーム接続が高速化され、遅延が減少します。

だから何?

関連:Wiresharkを使用してパケットをキャプチャ、フィルタリング、および検査する方法

アプリケーションがTCPとUDPのどちらを使用するかは開発者次第であり、選択はアプリケーションが何を必要としているかによって異なります。ほとんどのアプリはTCPのエラー訂正と堅牢性を必要としますが、一部のアプリケーションはUDPの速度とオーバーヘッドの削減を必要とします。Wiresharkのようなネットワーク分析ツールを起動すると、さまざまな種類のパケットが行き来するのを確認できます。

あなたがネットワーク管理者またはソフトウェア開発者でない限り、これはあなたにあまり影響を与えないはずです。ルーターまたはファイアウォールソフトウェアを構成していて、アプリケーションがTCPまたはUDPのどちらを使用しているかわからない場合は、通常、「両方」オプションを選択して、ルーターまたはファイアウォールにTCPトラフィックとUDPトラフィックの両方に同じルールを適用させることができます。