PR

 トランスポート層の主役はTCPとUDPの2つです。インターネットイニシアティブ(IIJ)が2014年8月に公開した2014年のブロードバンドトラフィックレポートを見ると、インターネットのトラフィックの80%はTCP、13%はUDPが占めています。まさにインターネットの主役といえます。

 TCPとUDPはプロトコルとして大きく違います(図5-1)。TCPは通信の送信元と宛先がサーバーとクライアントという2者に明確に分かれており、接続の開始と終了の際に、両者がネゴシエーションしてコネクションを張り、そのコネクションを通じてデータを送ります。これに対しUDPではコネクションという概念がないため、いきなりデータを送信できます。

図5-1●TCPとUDPの違い
図5-1●TCPとUDPの違い
TCPは通信の開始(TCPコネクションの確立)とパケットの送受信、切断処理という流れになる。パケットが届いたかどうか、到達を確認(ACK)する。HTTPやFTPのような、データ到達の信頼性が求められる場合に利用される。これに対しUDPはコネクションの確立という概念がなく、いきなりパケットを送受信する。パケットが経路上で失われても、UDPは特に何もしない。SIPのように上位でセッション制御の仕組みがある場合や、音声データのように高速で送受信したい場合に利用する。
[画像のクリックで拡大表示]

 TCPのネゴシエーションである「3ウエイハンドシェーク」は、TCP以外にSIPの「INVITEメッセージ」を送信する際にも利用されています。

 TCPとUDPは、通信の信頼性が大きく違います。UDPはデータを投げっ放しにします。パケットの到達性は保証されません。ネットワークの経路上でパケットが失われる可能性があります。

 一方、TCPはデータが届いたかどうかを、コネクションを張ったサーバーとクライアントの間で確認し、到達していなければデータを再送します。これでデータの到達性を担保しているわけです。

 TCPとUDPは特性がまったく異なります。アプリケーションプロトコルによって、どちらを使うかが決まります

▼ブロードバンドトラフィックレポート
IIJが定期的に発行している「Internet Infrastructure Review」 Vol. 24より。http://www.iij.ad.jp/company/development/report/iir/pdf/iir_vol24_report.pdf。
▼決まります
TCPを利用するアプリケーションプロトコルにはHTTP(Web)やFTP(ファイル転送)、SMTP(メール)などがあります。UDPを使うのはDNS(名前解決)、NTP(時刻同期)、SIP(電話)などです。