Featured image of post TCP/IPモデルとは?通信の仕組みを4つの役割で整理する

TCP/IPモデルとは?通信の仕組みを4つの役割で整理する

TCP/IPモデルとは、ネットワーク通信を4つの階層に分けて整理した考え方です。データを届けるという1つの仕事を「役割ごとに分担する」ことで、複雑な通信の仕組みを理解しやすくしています。これまで学んできたEthernet・IP・TCP・HTTPといったプロトコルも、それぞれがどの層で何を担当しているかが分かると、全体像がつながって見えてきます。


はじめに

前回のプロトコルの記事の最後で、「1つの通信で複数のプロトコルが同時に働いている」と説明しました。HTTPが要求を組み立て、TCPが確実に届け、IPが経路を決め、Ethernetが実際に信号を送る——という具合です。

この「役割ごとに分かれて重なっている」構造を整理したものが TCP/IPモデル です。

私はネットワークを学び始めた頃、この階層構造の意味がなかなか掴めませんでした。「なぜわざわざ4つに分けるのか」「分けたところで何が嬉しいのか」が分からなかったのです。今回はその「なぜ分けるのか」から順に見ていきます。


TCP/IPモデルの4つの階層

TCP/IPモデルは、通信の役割を次の4つに分けています。

階層 役割 主なプロトコル
アプリケーション層 アプリが扱うデータの形式を決める HTTP、DNS、SMTP
トランスポート層 どのアプリへ届けるか・確実に届けるか TCP、UDP
インターネット層 ネットワークをまたいで宛先へ届ける IP、ICMP、ARP
ネットワークインターフェース層 目の前の機器へ信号を送る Ethernet、IEEE 802.11(Wi-Fi)

TCP/IPモデルの4階層と各層の主なプロトコル

図:TCP/IPモデルの4階層

上から順に、アプリケーションに近い層から物理的な通信に近い層へと並んでいます。まずは「4つに分かれている」という事実を押さえたうえで、なぜこのような形になったのかを見ていきましょう。


なぜ階層に分けることになったのか

通信を成立させるには、まったく性質の異なる処理が必要です。

ケーブルに電気を流して信号を送り出す。宛先を判断して経路を選ぶ。データが順番通りに届いたか確認する。受け取った内容をWebページとして解釈する。これらはどれも通信に欠かせませんが、必要な知識はそれぞれ大きく異なります。

求められる技術領域がまったく違う

各層で必要になる専門知識を並べてみると、その違いがはっきりします。

階層 必要な知識の領域
アプリケーション層 データ形式の設計、アプリケーション開発
トランスポート層 順序制御、再送制御のアルゴリズム
インターネット層 経路制御、アドレス設計
ネットワークインターフェース層 電気工学、電波工学、材料の特性

電波の特性を理解する電気工学と、Webアプリケーションの設計。1人の人間がどちらも深く習得するのは現実的ではありません。

そこで、通信の処理を技術領域ごとに階層へ分けました。無線技術の専門家は電波の扱いに集中し、Webアプリの開発者はデータの形式に集中する。それぞれが自分の領域だけを担当し、他の層の中身には踏み込まない——この分担を可能にするのが階層化です。

実際の仕事の分かれ方にも、この階層構造が反映されています。ネットワークエンジニアが主に扱うのは下位の層、アプリケーション開発者が扱うのは上位の層です。

開発者は必要な層だけを扱えばよい

階層化の恩恵は、実際にプログラムを書く場面で実感できます。

Webアプリを開発するとき、開発者が理解しなければならないのはHTTPの仕様だけです。TCPがどのように順序を管理しているか、IPがどう経路を選んでいるか、ケーブルにどんな電圧がかかっているか——こうした下位層の詳細を知らなくても、既に用意された仕組みを呼び出すだけで通信できます。

もし階層に分かれていなければ、ブラウザを作る人が電気信号の送出まで実装することになります。メールソフトを作る人も、同じ処理を一から書かなければなりません。同じ仕組みを何度も作り直す状態です。


4つの階層の役割

ここからは各層が何を担当しているのかを詳しく見ていきます。

アプリケーション層 ― データの意味を決める

もっとも上位にあたる層で、アプリケーションが扱うデータの形式や手順を定めます。

たとえばHTTPは「このページのデータをください」という要求と「はいどうぞ」という応答の形式を決めています。DNSは「このドメイン名のIPアドレスは何番か」という問い合わせの形式を決めています。

この層で扱うのは「何を伝えたいか」という中身の話です。それをどうやって届けるかは、下の層に任せます。

トランスポート層 ― 届け方を決める

データを「どのアプリへ」「どのように」届けるかを担当します。

ポート番号を使ってアプリケーションを識別するのがこの層の仕事です。443番ならブラウザ、25番ならメールソフトというように、同じコンピューターの中でも正しい相手にデータを渡します。

またTCPとUDPの選択もこの層で行われます。確実さを取るならTCP、速さを取るならUDPです。

インターネット層 ― 宛先まで運ぶ

ネットワークをまたいでデータを目的地へ届ける層です。

IPアドレスを使って宛先を指定し、ルーターが経路を判断してデータを転送します。世界中のどこへでもデータが届くのは、この層の働きによるものです。

ネットワークインターフェース層 ― 目の前の機器へ送る

もっとも下位の層で、実際に電気信号や電波としてデータを送り出します。

MACアドレスを使って同じネットワーク内の機器を識別し、スイッチングハブが宛先のポートへ転送します。電気信号ケーブルの話も、この層に含まれます。


データが階層を下りていく仕組み

通信を行うとき、データは上の層から下の層へと順番に渡されていきます。このとき各層で、その層に必要な情報が追加されます。

追加される情報を ヘッダー といいます。宛先や送信元、データの種類といった管理情報が含まれます。

用語/英単語 意味 イメージ・補足
ヘッダー / Header head=頭; データの先頭に付加される管理情報 封筒に書く宛名や差出人のようなもの。中身とは別に必要な情報

このようにデータへ順次ヘッダーを付けていく処理を カプセル化 といいます。

用語/英単語 意味 イメージ・補足
カプセル化 / Encapsulation capsule=包む容器; 各層でヘッダーを付けてデータを包んでいく処理 手紙を封筒に入れ、それを箱に入れ、さらに配送用の袋に入れるイメージ

データが下位層へ渡される際にTCP・IP・MACのヘッダーが順に追加される図

図:各層でヘッダーが追加されていく

受信側では逆の処理が行われます。下の層から順にヘッダーを取り外し、最終的に元のデータだけが残ります。これを 非カプセル化 といいます。

宅配便に例えると分かりやすいかもしれません。送り主は品物を箱に入れ、伝票を貼り、配送業者の袋に入れます。受け取った側は袋を開け、伝票を確認し、箱を開けて品物を取り出します。各段階で必要な情報を付けたり外したりしているわけです。


TCP/IPはどのように生まれたのか

TCP/IPの原型を設計したのは、 ヴィントン・サーフロバート・カーン という2人の研究者です。1974年に発表した論文で、ネットワーク同士を相互接続する仕組みを提案しました。

当時すでに複数のネットワークが存在していましたが、それぞれが独自の方式で動いており、互いに接続できませんでした。この「ネットワーク同士をつなぐ」という課題に対して、2人は「各ネットワークの内部構造には干渉せず、その上に共通の層を1つ設ける」という解決策を示しました。

この発想が現在のインターネット層につながっています。ネットワークをまたいで通信するという意味の「Inter-network」が、そのまま「Internet」という言葉の語源にもなりました。

当初は1つのプロトコルとして設計されていましたが、1978年に「経路を決める役割」と「確実に届ける役割」が分離され、IPとTCPという2つのプロトコルになりました。この分割によって、確実さを犠牲にして速度を優先するUDPという選択肢も生まれています。

2人は2004年、コンピューター科学分野で最高の栄誉とされるチューリング賞を受賞しました。


OSI参照モデルとの違い

ネットワークの階層モデルには、TCP/IPモデルのほかに OSI参照モデル があります。こちらは7つの階層に分ける考え方です。

OSI参照モデル TCP/IPモデル
アプリケーション層 アプリケーション層
プレゼンテーション層
セッション層
トランスポート層 トランスポート層
ネットワーク層 インターネット層
データリンク層 ネットワークインターフェース層
物理層

なぜ2つのモデルがあるのか

この2つは、生まれ方がまったく異なります。

TCP/IPは、実際に動くものとして先に開発されました。研究プロジェクトの中で設計と実装が並行して進み、4階層という整理は後から実態を記述したものです。

一方OSI参照モデルは、国際標準化機構(ISO)が1980年代に「通信はこうあるべき」という理想形として策定しました。理論的に精緻で、各層の役割がより細かく定義されています。

しかし、ISOが標準化を進めている間に、TCP/IPはすでにインターネットで広く使われていました。実装が無料で入手でき、実績もある。対してOSIは仕様が複雑で、実装も高価でした。結果として、市場が選んだのはTCP/IPでした。

現在のインターネットはすべてTCP/IPで動いています。OSI参照モデルは、通信の仕組みを説明する際の共通言語として残りました。

なぜ2つのモデルは似た構造になったのか

作った主体も時期も異なるのに、両者の階層構造はよく似ています。これには2つの理由があります。

1つは、通信という問題を分解していくと、自然に同じような区切りが現れることです。「物理的に信号を送る」「隣の機器へ届ける」「遠くの機器へ届ける」「確実に届ける」「意味を解釈する」——この段階分けは、誰が考えても近い形になります。問題の構造そのものが階層を要求していると言えます。

もう1つは、OSI参照モデルが後発だったことです。策定が進められた1980年代、TCP/IPはすでに動いていました。標準化の委員会はその実装を知ったうえで理想形を設計しています。完全に独立した発明ではなく、先行事例を踏まえた整理という側面があります。

「レイヤ3スイッチ」の意味

ネットワーク機器のカタログで「レイヤ2スイッチ」「レイヤ3スイッチ」という表記を見かけます。この数字はOSI参照モデルの階層を指しています。

  • レイヤ2=データリンク層。MACアドレスで転送する機器(通常のスイッチングハブ)
  • レイヤ3=ネットワーク層。IPアドレスで転送する機器(ルーティング機能を持つスイッチ)

実際の通信はTCP/IPで動いているのに、機器の名称にはOSIの階層番号が使われている——この状況は、2つのモデルがそれぞれの役割で共存していることを示しています。


階層モデルの使いどころ

階層モデルを理解していると、トラブルの原因を切り分けやすくなります。

「Webサイトが表示されない」という問題が起きたとき、階層ごとに確認していけば原因を絞り込めます。

確認すること 該当する層
LANケーブルは挿さっているか ネットワークインターフェース層
IPアドレスは正しく割り当てられているか インターネット層
ポートが塞がれていないか トランスポート層
URLは正しいか、証明書は有効か アプリケーション層

下の層から順に確認していくのが基本です。物理的な接続が切れていれば、上位層をいくら調べても意味がありません。

私も実務でトラブルに遭遇した際、この順序で確認する習慣がついてから、原因の特定が格段に速くなりました。


まとめ

TCP/IPモデルは、ネットワーク通信を4つの階層に分けて整理した考え方です。アプリケーション層がデータの意味を決め、トランスポート層が届け方を決め、インターネット層が宛先まで運び、ネットワークインターフェース層が実際に信号を送ります。階層に分ける理由は変更に強い設計にするためで、有線からWi-Fiへ切り替えても上位層はそのまま使えます。データは上の層から下の層へ渡される際にヘッダーが追加され、受信側では逆にヘッダーが外されていきます。7階層のOSI参照モデルも、機器の名称や説明の共通言語として現在も使われています。

用語表

用語 意味
TCP/IPモデル ネットワーク通信を4つの階層に分けて整理した考え方
アプリケーション層 アプリが扱うデータの形式を決める層。HTTP、DNSなど
トランスポート層 どのアプリへ・どのように届けるかを決める層。TCP、UDPなど
インターネット層 ネットワークをまたいで宛先へ届ける層。IPなど
ネットワークインターフェース層 実際に電気信号や電波としてデータを送る層。EthernetやIEEE 802.11など
ヘッダー(Header) 各層でデータの先頭に付加される管理情報
カプセル化(Encapsulation) 各層でヘッダーを付けてデータを包んでいく処理
OSI参照モデル 通信を7つの階層に分けた国際標準のモデル