トランスポート層の主役はTCPとUDPの2つです。インターネットイニシアティブ(IIJ)が2014年8月に公開した2014年のブロードバンドトラフィックレポート▼を見ると、インターネットのトラフィックの80%はTCP、13%はUDPが占めています。まさにインターネットの主役といえます。
TCPとUDPはプロトコルとして大きく違います(図5-1)。TCPは通信の送信元と宛先がサーバーとクライアントという2者に明確に分かれており、接続の開始と終了の際に、両者がネゴシエーションしてコネクションを張り、そのコネクションを通じてデータを送ります。これに対しUDPではコネクションという概念がないため、いきなりデータを送信できます。
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(電話)などです。