TCP (Transmission Control Protocol)について
TCP(Transmission Control Protocol)は、インターネット上でデータを確実かつ順番通りに送るためのルール(プロトコル)の一つです。
例えるなら、TCPは宅配便のサービスのようなものです。
- 接続してから送る: 送る前に、相手に「これから送りますね」と声をかけ(コネクション確立)、準備ができてから荷物を送ります。
- 確実に届ける: 送った荷物がちゃんと届いたかを確認し、もし届いていなければ再送します。
- 順番通りに届ける: バラバラに送った荷物も、相手に届くときには元の順番通りに並べ替えてくれます。
このように、TCPは信頼性が高く、順番が重要なデータのやり取りに向いています。例えば、ウェブサイトの閲覧(HTTP/HTTPS)、メールの送受信(SMTP、POP3、IMAP)、ファイルのダウンロード(FTP)などで使われています。
TCPの主な特徴
- コネクション型: 通信を始める前に、送信側と受信側の間で仮想的な接続を確立します(3ウェイハンドシェイク)。
- 信頼性が高い: データの到達確認や再送制御などにより、データが確実に相手に届くことを保証します。
- 順番保証: 送信したデータは、受信側で送信された順序通りに再構成されます。
- フロー制御: 受信側の処理能力に合わせて、送信側の送信速度を調整します。
- 輻輳制御: ネットワークの混雑状況に応じて、送信速度を調整します。
TCP(Transmission Control Protocol)は、その信頼性の高さから、様々なアプリケーションで幅広く利用されています。主な用途としては、以下のようなものがあります。
- Webブラウジング (HTTP/HTTPS): ウェブサイトのテキスト、画像、動画などのコンテンツを正確に取得するために使われます。HTTPSはHTTPに暗号化を加えたもので、より安全な通信を実現します。
- 電子メール (SMTP, POP3, IMAP): メールサーバーとの間でメールを送信(SMTP)、受信(POP3, IMAP)する際に、メッセージが確実に届くようにTCPが利用されます。
- ファイル転送 (FTP, SFTP): ファイルをサーバーにアップロードしたり、ダウンロードしたりする際に、データが破損なく正確に転送されるようにTCPが使われます。SFTPはFTPに暗号化を加えたものです。
- リモートログイン (SSH, Telnet): 遠隔のコンピュータに安全にログインして操作したり(SSH)、古いシステムでテキストベースの接続を行ったり(Telnet)する際に、コマンドや応答が正確にやり取りされるようにTCPが用いられます。
- データベース接続: アプリケーションがデータベースサーバーと通信し、データの読み書きを行う際に、トランザクションの整合性などを保つためにTCPが利用されます。
UDP (User Datagram Protocol)について
UDP(User Datagram Protocol)は、TCPと同じくインターネット上でデータを送るためのプロトコルですが、TCPとは対照的に、高速性を重視した、よりシンプルな仕組みを持っています。
TCPを宅配便に例えるなら、UDPは手紙やメール便のようなイメージです。
- 送るだけ: 送る前に相手との準備(コネクション確立)をせず、荷物が届いたかの確認もしません。とにかくデータを送るだけです。
- 早く届くかも: 確認や順番の管理などをしない分、TCPよりも早く相手に届く可能性があります。
- 届かないこともある: 途中でデータが失われたり、順番が入れ替わったりする可能性がありますが、再送は行いません。
このように、UDPは信頼性よりも速度が重要なデータのやり取りに向いています。例えば、以下のような用途で使われています。
- 動画や音声のストリーミング
- オンラインゲーム
- DNS (Domain Name System)
- VoIP (Voice over IP)
UDPの主な特徴
- コネクションレス型: 通信を始める前に接続を確立する手続きがありません。
- 信頼性が低い: データの到達保証や順番の保証、再送制御などがありません。
- 高速: 事前準備や確認などの処理がないため、TCPよりも高速にデータを送信できます。
- オーバーヘッドが小さい: ヘッダ情報などがTCPに比べて小さいため、ネットワークの負荷が低くなります。
TCPとUDPの比較
特徴 | TCP | UDP |
---|---|---|
接続 | コネクション型 (接続確立が必要) | コネクションレス型 (接続不要) |
信頼性 | 高い (到達保証、順番保証、再送制御あり) | 低い (到達保証、順番保証、再送制御なし) |
速度 | 比較的遅い | 速い |
オーバーヘッド | 大きい | 小さい |
主な用途 | Webブラウジング、メール、ファイル転送 | ストリーミング、オンラインゲーム、DNS |
どちらのプロトコルを使うかは、アプリケーションの要件によって決まります。信頼性が重要な場合はTCP、速度やリアルタイム性が重要な場合はUDPが選択されることが多いです。