TCPはインターネットの通信を支える重要なプロトコル。一般ユーザーには目立たない存在だが、時代と環境の変化に合わせてTCPは進化を続けている。今やネットワークという領域を越えて、アプリケーションも含めたユーザビリティーの向上を担う重要な存在だ。今回は、そうしたTCPの新しい姿を紹介する。
TCP▼は、1981年9月にRFC 793で正式に標準化された。30年以上の長い歴史の中で、ネットワークを支える中心的な役割を果たしてきた。
Webの閲覧やメールのやり取りなど、インターネットで使われる代表的なアプリケーションは、TCPを使っている。パソコンやスマートフォンなど端末の種類を問わず利用されている。さらに、SSL/TLS▼といった暗号化技術と組み合わせて、高いセキュリティが求められるデータのやり取りにもTCPが活躍している。
インターネットイニシアティブ(IIJ)の2013年の調査▼によると、同社のブロードバンドトラフィックのうち、TCPが占める比率は79.8%に達している▼。ほぼ8割がTCPである。TCPはインターネット通信で最も重要なプロトコルの一つと言えるだろう。
Transmission Control Protocolの略。
SSLはSecure Sockets Layer、TLSはTransport Layer Securityの略。
IIJが年4回発行している「Internet Infrastructure Review」(IIR)のVol.20(2013年8月30日発行)の「3. ブロードバンドトラフィックレポート」から引用した。
このほかの比率はUDPが13.2%で、残りはトンネリングプロトコル(ESP、GRE、L2TPなど)だった。
TCPはデータを運ぶ配達人
インターネットは様々なプロトコルによって成り立っているが、その中でTCPはどのような位置付けになるのだろうか。
プロトコルを5つの階層構造▼に分けて考えると、TCPは下から4番目の「トランスポート層」に相当する。トランスポート層は、アプリケーションが作ったデータの配送を管理したり、アプリケーションの要求に応じて様々な通信制御を実施したりする。送信元から宛先までのデータ転送を保証する信頼性の高いプロトコルだ。この層には、UDP▼というプロトコルもある。TCPとの違いは、UDPは相手にデータが到達したかどうか保証しない代わりに、処理を単純化したところにある。
TCPの下のレイヤーは、それぞれ「物理層」「データリンク層」「ネットワーク層」と呼ぶ。具体例では、物理層とデータリンク層がイーサネット、ネットワーク層がIPということになる。一方、TCPの上には、アプリケーション層がある。アプリケーションごとにプロトコルがあり、例えばWebならHTTP▼、メールならPOP/SMTP/IMAP▼などが使われている。
こうした階層構造だけでは、役割のイメージをつかみにくい。簡単な例えを使って表現してみよう。
プロトコルの役割の例え方には、いろいろな表現方法がある。よく使われるのは、IPパケットを小包に例えるものだ。筆者は、この表現はTCPとそれより下のレイヤーの役割を適切に表わしていないと思う。IPより下のレイヤーは、データを運ぶ機能を提供するが、送信元から宛先までエンド・ツー・エンドでデータが届くのを保証しない。それを保証するのがまさにTCPの役割である。
IP以下のレイヤーは建物や道路網などのインフラで、TCPはそれらを使って荷物(データ)を運ぶ配達人というのが、筆者の提案する「適切な例え」である。IP以下のレイヤーはデータを運ぶのに必要だが、相手にデータが届いたかどうか関知しない。TCPがあるから相手にデータがしっかり届くのである。
プロトコルレイヤーの分け方にはいくつかの種類がある。「OSI参照モデル」では7階層に分ける。最近のネットワークの教科書では4階層や5階層に分けるケースが多い。
User Datagram Protocolの略。
HyperText Transfer Protocolの略。
POPはPost Office Protocolの略。SMTPはSimple Mail Transfer Protocolの略。IMAPはInternet Message Access Protocolの略。