「TCP」と「UDP」の違いとは? DNSに学ぶ“プロトコルの基礎”:TCP、UDPの違いとDNS【前編】
TCPとUDPはネットワーク通信の基本プロトコルだ。多くのサービスはどちらか一方を使うが、DNSは例外的に両方を使い分ける。まずTCPとUDPの違いを押さえておこう。
ネットワークの運用に欠かせない基礎知識の一つとして、トランスポート層(OSI参照モデルの第4層)のプロトコルである「TCP」(Transmission Control Protocol)と、「UDP」(User Datagram Protocol)がある。多くのサービスではどちらか一方のプロトコルが使われるが、インターネット上でドメイン名とIPアドレスを対応付ける仕組みである「DNS」(Domain Name System)では、TCPとUDPの両方が使い分けられる。
DNSがなぜTCPとUDPの両方を使用するのかを理解するには、まずは基本となるTCPとUDPの通信の違いを押さえておく必要がある。本稿はネットワークサービスを識別する「ポート番号」の役割と併せて、TCPとUDPの違いを解説する。
トランスポート層プロトコル「TCP」と「UDP」の違い
TCPとUDPは、どちらもトランスポート層に属するプロトコルだ。TCPは通信の開始から終了まで接続を維持する「コネクション型」であり、UDPは接続を確立せずにデータを送る「コネクションレス型」で通信を制御する。
TCP
TCPは送信元と送信先の間で接続を確立し、データのやりとりを管理する。この接続があることでパケットの欠落を検出し、必要に応じてデータを再送信できる。送信した全てのデータが受信されることを保証するので、TCPの通信は信頼性が高い。
ただし、この信頼性を確保するには負荷がかかる。TCPのパケットはヘッダが比較的大きく、接続確立やデータ完全性の確認といった処理でオーバーヘッド(余分な処理負荷)が発生する。それでも、このレベルの信頼性は、多くのネットワーク通信において欠かせない要素だ。
TCPを利用して動作するプロトコルには、メールを送信するためのプロトコル「SMTP」(Simple Mail Transfer Protocol)や、Webページの情報を送受信するためのプロトコル「HTTP」(Hypertext Transfer Protocol)がある。
UDP
UDPはベストエフォート型のプロトコルだ。このプロトコルは、情報を確実に届けるための接続を維持せずにデータを送信する。そのため失われたパケットの再送のような信頼性を高める保証はないが、処理が軽く高速に通信できるという利点がある。
現代のネットワークは比較的信頼性が高いため、ほとんどのデータは送信先に到着する。UDPは特に通信の速さが必要な用途で有用だ。
軽量なファイル転送プロトコルである「TFTP」(Trivial File Transfer Protocol)は、UDPによるコネクションレス型通信を利用する。設定ファイルやブートイメージ(コンピュータの起動に必要なプログラム)など、小さなファイルをネットワーク機器間でやりとりする用途に使われる。
ポートの概要
併せて読みたいお薦め記事
ポート番号の基本を押さえる
コンピュータは、まずIPアドレスで通信相手を特定する。さらにネットワークでは、その相手の中のどのアプリケーションやサービスにデータを渡すのかを、「ポート番号」という数字で識別している。例えば、HTTPは「ポート80」を使用し、HTTPに暗号化機能を追加した「HTTPS」(Hypertext Transfer Protocol Secure)は「ポート443」を使用する。
一般的なポートと、それに関連するトランスポート層プロトコルおよびサービス名を以下に挙げる。
- ポート22/TCP:SSH(Secure Shell)
- SSHは暗号化されたリモートログインやコマンド実行のためのプロトコル。
- ポート67/UDP、ポート68/UDP:DHCP(Dynamic Host Configuration Protocol)
- DHCPはIPアドレスやDNSサーバ情報などのネットワーク設定を自動配布する仕組み。
- ポート69/UDP:TFTP
- TFTPは軽量なファイル転送プロトコル。
- ポート80/TCP:HTTP
- HTTPはWebページや関連データを転送するためのプロトコル。
- ポート443/TCP:HTTPS
- HTTPSはHTTP通信を暗号化するプロトコル。
- ポート123/UDP:NTP(Network Time Protocol)
- NTPはネットワーク機器やPCの時刻を同期するためのプロトコル。
- ポート445/TCP:SMB(Server Message Block)
- SMBはOS「Windows」でのファイル共有やプリンタ共有など、ネットワーク上のリソース共有に使われるプロトコル。
- ポート3389/TCP:RDP(Remote Desktop Protocol)
- RDPはWindowsのリモートデスクトップ接続で画面や入力を転送するためのプロトコル。
こうしてTCPとUDPのいずれかを使用することが多い中で、DNSはポート53/TCPとポート53/UDPの両方を使用するという点で際立っている。
次回の後編では、DNSがなぜTCPとUDPの両方を使用するのかを解説する。
Copyright © ITmedia, Inc. All Rights Reserved.