TCPとUDPは、InternetProtocolのサービスレイヤで動作するトランスポートプロトコル(レイヤ4のプロトコル)であり、クライアントとサーバ間でのデータの送受信を行います。
TCPは信頼性の高い通信を実現するコネクション型プロトコルで、送信側は相手の状態の確認を行いながらデータを送信します。
一方、UDPを使うと、相手の応答を待たずに即座にデータを送信することが可能ですが、データの確認は行いません。
TCP/IPプロトコルを使えばクライアントとサーバ間の通信を安定的に行うことができ、処理の加速などのメリットがありますが、UDPはデータをより高速で送信することができるほか、リアルタイム性という特徴があり、ストリーミングやボイスチャットなどで使用されています。
多くの通信環境はTCP/IPを使用していますが、最適なプロトコルを使用するためには、複数のプロトコルが用意されていることを理解し、たとえばレイテンシや信頼性などを考慮して使用するプロトコルを選択する必要があります。
UDP(UserDatagramProtocol)は、インターネットで標準的に使われているIPネットワーク上の通信プロトコルの一種です。
TCP(TransmissionControlProtocol)と比較して、接続を行わずにデータを送信します。
このため、インターネット上での最適な通信プロトコルとして可能な限り低い遅延やキューの遅延を実現するために使われます。
特に、リアルタイム性を重視した音声通話や動画配信などでその利点を最大限活用することができます。
しかし、UDPの重要な欠点は、伝送されるパケットに関して受側者が受領したか否かを保証することができないことです。
また、プロトコルによって提供される高い安全性を求めるアプリケーションには向かないといえます。
TCPとは、IPネットワーク上のアプリケーション間の高信頼性・ストリーム指向数指向のデータ通信プロトコルである。
「TransmissionControlProtocol」の略称で、あるポート番号を示した伝送を行う上で必要なプロトコルとなる。
ウェルノウンポート番号は0~1023、登録済みポート番号は1024~49151、最後にダイナミックポート番号が49152~65535である。
データ転送処理の際に用いられ、信頼性の高いデータ転送を行うための通信プロトコルである。
なお、TCPに隣接するユーザープログラムを接続受け入れ機として動作させる場合、サーバプログラムとも呼ばれる。
その上位プロトコルであるTCP/IPは、世界をつなぐインターネットを支えており、標準的な通信プロトコルとして広く普及している。
サーバープログラムを実行するための専用の登録済みポート番号が割り当てられ、伝送元から伝送先へのデータを全て保証したり、伝送中に発生したエラーや、失敗したデータ再送の要求をなどを行うことが可能となっている。
UDP(UserDatagramProtocol)は、TCPよりも速度を重視したトランスポート層の通信プロトコルで、セキュリティよりもスピード重視でネットワーク間の通信が実現されるプロトコルです。
UDPはポート番号を使ってネットワーク上の送信者と受信者を特定します。
また、TCP/UDPともにプロトコルで使われる代表的なポート番号としてHTTP(80番)やSMTP(25番)などがあります。
UDPを使わずにサーバやネットワーク間の通信を行う場合は、特定のサーバとネットワーク間でデータをやりとりしません。
UDPを使うケースとして、VOIPやストリーミング、ファイル転送、ラジオネットワークなどがあり、インターネットにおいて大きな展開を及ぼしています。
また、UDPを使う理由としては、パケットロスを許容することで、TCPのアクセスに比べて高い安定レベルを高めることができるため、使われています。
UDPプロトコルは、UNIXシステムでよく使われるNFS(NetworkFileSystem)を含め、ディストリビューション型クラスタ、スター型クラスタ、配送スケジュールに利用される仕組み等、多くのネットワークアプリケーションにおいて、通信プロトコルとしてよく使われています。
TCP(TransmissionControlProtocol)は、インターネット上で標準的に展開する通信プロトコルです。
TCPを使えば、データを安全かつ確実に伝達することが可能であり、ネットワーク上のスケーラビリティや可用性など、高レベルのQoS(QualityofService)を得ることもできます。
そのため、多くのアプリケーションがTCPを使ってデータを動かします。
例えば、WebサイトではHTTP通信で80番ポートを使用して、Webページを表示します。
メールのやり取りではSMTPを使い、FTPサーバーからのファイルのダウンロードではFTPプロトコルを利用しています。
また、多くのP2P(Peer-to-Peer)プロトコル、およびVOIP(VoiceOverInternetProtocol)の通信ではTCPを用いています。
TCPは、一部の番号で定められた特別なハンドシェイク(handshake)要求が使われるため、リモートソケットの一部の番号を検証し信頼性を検証するために使われています。
TCPは、異なるステージで異なる検証方法を採用するよう設計されており、数秒以内に新しい情報を受け取ることができます。
このネットワークの設計では、通信するパーティーが届かない場合や失敗した場合にTCPタイムアウトの役割を果たす役割があります。
さらに、TCPは用語の"コネクションを利用している"の意味でさまざまなアプリケーションにとって非常に便利です。