TCP/IPモデルとは?レイヤーとプロトコルの仕組みをわかりやすく解説
何かを創り出すプロセスにおいて重要なのは、まだ存在しないものを思い描く想像力です。
この能力こそが、インターネットの誕生を支えました。もし誰も、今では当たり前のように使われている基盤技術を想像していなければ、猫ミームはこの世に存在しなかったでしょう。
インターネットを実現するために必要だった想像の中に、「レイヤー(階層)」と「プロトコル(規約)」があります。
レイヤーとは、似たような機能をグループ化するための概念的な区分のこと。そして「プロトコル」という言葉は、ざっくり言えば「私たちがここで物事を行う際に合意した方法」という意味です。
要するに、レイヤーもプロトコルも、5歳の子どもにはこう説明できます。「みんなで『これは良いアイデアだね』と同意して、後から来る人が同じアイデアを使えるように文章として書き残したものなんだよ」
レイヤーとプロトコルで成り立つ「インターネット・プロトコル・スイート」
インターネット・プロトコル・スイートは、まさにレイヤーとプロトコルによって記述されます。このスイート全体を指して、私たちの果てしないスクロールを可能にする通信プロトコル群のことです。
このスイートは、その基盤となる2つのプロトコル――伝送制御プロトコル(TCP:Transmission Control Protocol)とインターネットプロトコル(IP:Internet Protocol)――から名前を取って呼ばれることが多いです。「TCP/IP」とひとまとめにされたこれらのプロトコルは、インターネット上のデータがどのようにパッケージ化され、アドレス指定され、送受信されるかを定義しています。
以下では、なぜインターネット・プロトコル・スイート(TCP/IP)が「架空の虹色レイヤーケーキ」であると言えるのかを解説します。
レイヤーは実在しない概念である
虹色のスポンジケーキについて考えてみると、その大部分は口の中でとろけるバニラ風味の美味しい部分です。その美味しさ自体は、卵、バター、小麦粉、甘味料といった材料で構成されています。

虹色スポンジケーキの一層一層を見分けるのは実は難しく、層ごとの違いは食紅の色と少しのクリームくらいです。よく考えると、上から下まで全部ケーキなんですよね。虹色の層があるのは、単に焼き手がそうあるべきだと考えたからにすぎません。
ケーキの材料と同じように、コンピュータネットワーキングにおけるレイヤーも、ほとんどがプロトコル、アルゴリズム、設定値で構成され、そこにデータが少しふりかけられているだけです。
ネットワークの多様な機能をグループ分けして考えた方が話がしやすいため、ある人々がレイヤーの記述を考案しました。これが「ネットワークモデル」と呼ばれるものです。TCP/IPは数あるネットワークモデルのひとつにすぎません。この意味で、レイヤーとはモノではなく概念なのです。
当該の人々の一部は、Internet Engineering Task Force(IETF)のメンバーでした。彼らはインターネットの通信レイヤーについて論じたRFC-1122という文書を作成しました。標準の半分を担うこの文書は次のように述べています。
…通信プロトコルレイヤーであるリンク層、IP層、トランスポート層をカバーする。その姉妹文書であるRFC-1123が、アプリケーション層とサポート用プロトコルをカバーする。
RFC-1122とRFC-1123で記述された各レイヤーは、それぞれのレイヤーの機能を満たすプロトコルを内包しています。それでは、これらの通信レイヤーを順番に見ていきながら、TCPとIPがこの「インターネットのレイヤーケーキ」モデルでどう積み重なっているのかを確認しましょう。
リンク層(Link Layer)のプロトコル

リンク層は、通信プロトコルの中で最も基本的な、つまり最下位の分類です。同じローカルネットワーク内のホスト間での情報送信や、上位層のデータを物理層へ変換する役割を担います。
リンク層のプロトコルは、特定のハードウェア上を流れる電気信号など、データが伝送媒体とどのようにやり取りするかを記述します。他のレイヤーと異なり、リンク層のプロトコルは使用するハードウェアに依存します。
インターネット層(Internet Layer)のプロトコル
インターネット層のプロトコルは、データがインターネット上でどのように送受信されるかを記述します。このプロセスには、データをパケット化すること、パケットにアドレスを付けて送信すること、そして着信パケットを受け取ることが含まれます。

この層で最も広く知られているプロトコルこそ、「TCP/IP」の最後の2文字の由来となったIPです。IPはコネクションレス型のプロトコルであり、パケットが正しい順序で、同じ経路で、あるいは完全な形で送受信されることを一切保証しません。
信頼性の担保は、トランスポート層など、スイート内の他のプロトコルに委ねられています。
IPv4とIPv6
現在使われているIPには、IPv4とIPv6の2つのバージョンがあります。どちらのバージョンも、インターネット上のデバイスにIPアドレスを割り当てる方法を定義しており、このアドレスは猫ミームへのアクセス時にも使用されます。
IPv4の方が広く普及していますが、アドレスに32ビットしか使えず、約43億個(4.3×109)のアドレスしか確保できません。利用可能なアドレスは枯渇しつつあり、ますます多くの人がより多くのデバイスをインターネットに接続するにつれ、IPv4は最終的にアドレス不足に直面することになります。
後継バージョンのIPv6は、128ビットのアドレスを使用することでこの問題の解決を目指しています。これにより、桁違いに(本当に大量の)約3.4×1038個のアドレスが利用可能になります。
トランスポート層(Transport Layer)のプロトコル
1974年5月、Vint Cerf氏とBob Kahn氏(二人合わせて「インターネットの父」と呼ばれます)は、「A Protocol for Packet Network Intercommunication(パケット網相互通信のためのプロトコル)」という論文を発表しました。
この論文には、Transmission Control Program(伝送制御プログラム)の最初の記述が含まれていました。この概念こそ、後に伝送制御プロトコル(TCP)およびユーザーデータグラムプロトコル(UDP)として知られるようになるものの源流です。(ちなみに私はVint氏とお会いしたことがありますが、彼が映画『マトリックス』のアーキテクトそっくりであることを個人的に保証できます。)

現在、トランスポート層にはTCPとUDPが含まれています。IPと同様に、UDPはコネクションレス型で、信頼性よりも速度(時間)を優先したい場合に利用されます。
一方のTCPは、接続指向のトランスポート層プロトコルで、遅延(時間)よりも信頼性を優先します。TCPは、送信された順序どおりにデータを転送すること、失われたパケットを再送すること、そしてデータ伝送速度に影響を与える制御を記述しています。
アプリケーション層(Application Layer)のプロトコル

アプリケーション層は、ソフトウェアアプリケーションが最も頻繁にやり取りするプロトコルを記述します。この仕様には、リモートログインプロトコルのTelnet、ファイル転送プロトコル(FTP)、シンプルメール転送プロトコル(SMTP)などの説明が含まれます。
さらに、ハイパーテキスト転送プロトコル(HTTP)とその後継であるHTTP Secure(HTTPS)もアプリケーション層に含まれます。
HTTPSはTransport Layer Security(TLS)によって保護されており、TLSはインターネット・プロトコル・スイートが記述するネットワークモデルの最上位層であると言えます。
TLSと、このプロトコルがあなたの猫ミーム閲覧をどのように保護しているのかをさらに深く知りたい方は、TLSと暗号技術に関する記事もぜひご覧ください。
インターネットのケーキはまだ焼き上がっていない
まだ膨らみ続けるスポンジケーキのように、レイヤーの記述、より優れたプロトコル、新しいモデルは日々開発されています。インターネット、あるいは将来どんな姿に変わるとしても、それは今もなお想像され続けている途中なのです。

この記事を楽しんでいただけたなら、まだまだ続きます!筆者はコンピューティング、サイバーセキュリティ、優れた技術チームの構築について執筆しています。victoria.devでは何千人もの読者が記事から学んでいます。メールまたはRSSで購読すれば、新しい記事をいち早くチェックできますよ。
-
TCPとUDPの違いとは?仕組みを比較して、どちらのプロトコルが速いか徹底解説
コンピューターネットワークを学び始めたばかりの方や、アプリのネットワーク設定を覗いたことがある方なら、「TCP」「UDP」という言葉を目にしたことがあるはずです。TCP(Transmission Control Protocol:伝送制御プロトコル)とUDP(User Datagram Protocol:ユーザーデータグラムプロトコル)は、インターネットプロトコルスイートに含まれるプロトコルで、どちらもインターネット上で情報をやり取りするための方法です。しかし、正式名称を知っていても、どちらのプロトコルをどんな場面で使うべきなのかは分かりにくいものです。この記事では、コンピューターネットワーク
-
TCP/IPモデルとは?レイヤーとプロトコルの仕組みをわかりやすく解説
何かを創り出すプロセスにおいて重要なのは、まだ存在しないものを思い描く想像力です。この能力こそが、インターネットの誕生を支えました。もし誰も、今では当たり前のように使われている基盤技術を想像していなければ、猫ミームはこの世に存在しなかったでしょう。インターネットを実現するために必要だった想像の中に、「レイヤー(階層)」と「プロトコル(規約)」があります。レイヤーとは、似たような機能をグループ化するための概念的な区分のこと。そして「プロトコル」という言葉は、ざっくり言えば「私たちがここで物事を行う際に合意した方法」という意味です。要するに、レイヤーもプロトコルも、5歳の子どもにはこう説明できます