Now Loading...

TCP/IPとは?

TCP/IPとは?

Webに携わり技術に関心が向くと、「TCP/IP」という言葉に割と早く出会うと思います。
でも、私のように少し調べただけで難しそうなので、深追いしていない方は多いのではないかと思います。
そこで今回は私流で恐縮ですが、イメージができるTCP/IPの解説にチャレンジをします。

この記事をお読みいただくと次のような疑問が解決できます。

  • TCP/IPとは何か?
  • TCP/IPの登場背景と目的
  • TCP/IPの構成と仕組み

01TCP/IPとは何か??

TCP/IPとは「通信をするためのルール」です。
1973年に2人のアメリカの研究者が中心となり、開発されました。

目に見えないけれど、我々の生活を支える通信ルール「TCP/IP」

TCP/IPとはTransmission Control Protocol/Internet Protocolの略です。 ここでの「/」は、「TCP」と「IP」という2つの異なる通信ルールが組み合わさっていることを示しています。 TCPは、送られた情報(データ)が正確に、順序通りに届くことを確認するためのルールです。 IPは、その情報がどの道を通って目的地に届けられるかをまとめたルールです。 この2つのルールで構成されたTCP/IPという通信ルールがあるお陰で、異なるコンピュータ同士が間違いなく、スムーズにデータのやり取りができるのです。

TCP/IPが登場した背景と目的

1970年代初頭、世界は冷戦の最中で、その緊張は高まるばかりでした。この時期、アメリカ国防総省の一翼を担うDARPA(国防高等研究計画局)は、ある重大な任務に取り組んでいました。その任務とは、核攻撃のような緊急事態でも機能し続ける通信ネットワークの構築です。この目的を達成するため、DARPAは前例のない規模の資源を投じ、数年間にわたり多くの研究者の努力を結集しました。Vint Cerf(ヴィントン・サーフ)氏と、Bob Kahn(ボブ・カーン)氏を中心に推進された壮大なプロジェクトは、1973年にTCP/IPを生み出します。
「核攻撃などの極端な事態でも通信を確実に行えるようにする」という目的があったからこそ、TCP/IPは異なるネットワークシステム間でのデータのやり取りが可能で、どのような状況下でも通信網が維持される仕組みになったとも言えるのです。
ちなみに中心となった2人は、親しい友人関係にありました。
Cerf氏はプロトコルの設計に精通しており、Kahn氏はネットワークアーキテクチャに深い造詣を持っていました。
2人は、それぞれの強みを活かして互いに助け合いながら、仕事をしたそうです。
1994年、米国の雑誌「The New Yorker」が、Cerf氏とKahn氏を「インターネットの父」と称する記事を掲載します。現在、「インターネットの父」と呼ばれる人は、その他にも複数人います。ARPANETの構想を提唱したJ.C.R. Licklider(ジョゼフ・カール・ロブネット・リックライダー)氏に、マウスやGUIなどの概念を発明したDouglas Engelbart(ダグラス・エンゲルバート)氏、World Wide Web(WWW)の発明者のTim Berners-Lee(ティム・バーナーズ=リー)氏などです。
しかし、1番有名なのはVint CerfとBob Kahn両氏だと思います。

02TCP/IPの仕組み

ここからは、TCP/IPについて、一歩踏み込んで理解していきましょう。
TCP/IPはインターネット上でデータを送受信するための基本的なルールセットですが、他にもさまざまな通信ルールが存在します。
にもかかわらず、世界のインターネット通信量の99%以上がTCP/IPを使用しているそうです。これは、この技術が如何に優れているかの証明です。
このことからも、TCP/IPについてもう一歩踏み込んで理解することは、非常に価値があると言えます。

TCP/IPのデータ構成

TCP/IPは、「アプリケーション間の通信を制御するデータ」「通信の信頼性を確保するデータ」「データの送り先を特定するデータ」、そして「物理的な送信手段を指示するデータ」という4つの主要なデータで構成されています。これらの各部分には「ヘッダー情報」と呼ばれる特別なデータが付加されます。このヘッダー情報によって、単にデータを送受信する以上の機能、すなわち「エラーチェックや順序制御」が実現され、信頼性の高い通信が可能になります。

そしてこのデータ構成を「TCP/IPモデル」と呼びます。ちなみに「TCP/IPモデル」という言葉は、TCP/IPが作られた1973年には存在しませんでした。インターネット技術標準化機関であるIETF (Internet Engineering Task Force) が1981年にTCP/IPを標準化したことがきっかけで「TCP/IPモデル」という言葉が広く使われるようになったのです。

複数の特定データを連結(内包)して1つのデータとするのがTCP/IP

インターネットでは、メール、Webブラウジング、ファイル転送といった様々なサービス(アプリ)が利用できます。これは、TCP/IPという通信ルールが前述のデータ構成を持ち、規定の順序でデータを相手に送り、誤りがないかを確認する仕組みを持っているから実現出来ています。
このデータ構成の説明では、「◯◯◯層」という表現が用いられます。「層」と聞くと、私は物理的に積み重なっているイメージが湧くために、データが積み重なるという状態がイメージできず、ピンと来ませんでした。
それは、私が描いていのは以下のイメージだったからです。

TCP/IPの各層の誤ったイメージ

でも、以下のイメージを描けば良かったのです。

TCP/IPの各層の正しいイメージ

TCP/IPは「アプリケーション間の通信を制御するデータ」が中心にあり、そのデータに別のデータを加えて「通信の信頼性を確保するデータ」が出来ます。さらにそのデータに別のデータを加えて「データの送り先を特定するデータ」が、そして更にそのデータに別のデータを加えて「物理的な送信手段を指示するデータ」が出来るのです。初めのデータをある領域に格納した上で、別の情報を加えてデータが作られるとなると、「層」という表現がしっくり来るのではないかと思うのですが、如何でしょうか?

アプリケーション間の通信を制御するデータ:アプリケーション層

ユーザーが直接見ることができるメールの本文やWebページの表示内容など、アプリケーションの内容に関するデータを含むアプリケーション間の通信を制御するデータ一セットをアプリケーション層と呼びます。この層は、さまざまなインターネットアプリケーションが使う特有のプロトコル(=通信ルールですね)で記述します。例えば、WebブラウジングはHTTP or HTTPS、メール送信はSMTPなどのプロトコルで記述します。イメージができるので冒頭に「データの内容を含む」と書きましたが、実際には各プロトコルによって内容に関するデータを含むかどうかが違います。

多様なプロトコルを使用できるため、様々なアプリケーションのデータがやり取りでき、この層は将来登場するかもしれない新しいプロトコルにも対応可能な設計となっています。TCP/IPもプロトコルですが、その中にさらに別のプロトコルを内包する仕組みになっているのです。このためTCP/IPのことをプロトコル・スイートという呼び方もします。
スイートとは「一揃い」という意味で、「複数のプロトコルがまとまっているプロトコル」という意味ですね!

通信の信頼性を確保するデータ:トランスポート層

データが正確かつ効率的に目的地まで届けられるために必要なデータセットがトランスポート層です。大きなデータの場合、小さなパケットに分割し、それぞれのパケットに宛先と送信元の情報を付加して間違いを防ぎます。そして、パケットが正しい順序で到着するように管理し、万が一途中でパケットが失われた場合には、その再送を行います。
分割ってあるけど、誰が分割して、いつデータに書き込むんだよ?って思いますよね。トランスポート層のデータは、送信側のシステム(具体的には、オペレーティングシステム)によって、データ送信の直前に書き込まれます。

TCP/IPの、TCP (Transmission Control Protocol) は、このトランスポート層のことです。そして、この層を記述するプロトコル名でもあります。トランスポート層はTCPで書かれている訳です。では、なぜアプリケーション層やネットワークインタフェース層のプロトコル名がTCP/IPに含まれていないのでしょうか?それは重要性の違いです。TCPとIPは、通信の基本的なメカニズムを提供し、他の多くのプロトコルがこれらの上に構築されるからなのです。

データの送り先を特定するデータ:インターネット層

データが異なるネットワーク間を適切に経由し、正しい宛先にルーティングされるために必要なデータセットがインターネット層です。インターネット層のデータ(特にIPヘッダー情報)もトランスポート層と同様に、送信側のオペレーティングシステムで、データ送信の直前に書き込まれます。
「TCP/IPのデータ構成」の項でサラッと触れたのですが、各層はデータの本体の情報が書き込まれるペイロード情報と、データの扱い方が書き込まれるヘッダー情報の2つの情報で構成されます。そして勘の良い方はお気づきかもしれませんが、上の階層のデータは、その下の階層のペイロード情報に含まれるのです。

早口言葉のようですが、データの送信時に、アプリケーション層のペイロード情報とヘッダー情報は、トランスポート層のペイロード情報に含まれ、トランスポート層のペイロード情報とヘッダー情報は、インターネット層のペイロード情報に含まれ、インターネット層のペイロード情報とヘッダー情報は、ネットワークインタフェース層のペイロード情報に含まれます。このように下位層へとデータが移動するたびに、その層のペイロード情報に内包され、更にその層特有のペイロード情報とヘッダー情報が追加されていくことを「カプセル化」と呼びます。逆にデータの受信側では逆カプセル化と言える処理が行われます。送信側でカプセル化されたデータが受信側に到達した後、上位層へデータが渡される前に、その層のヘッダー情報は取り除かれる処理が行われなす。これを一般に「デカプセル化(Decapsulation)」と呼びます。

物理的な送信手段を指示するデータ:ネットワークインタフェース層

ケーブルや無線といったデータが通る物理的な道と、その通信方法について書かれたデータセットをネットワークインターフェイス層と呼びます。データを電気信号や無線信号に変換し、ケーブルや無線などの物理的媒体を通じて他のデバイスに送信します。また、受信した信号をデジタルデータに戻す役割も担います。

通信のプロセスには、イーサネット、Wi-Fi、光ファイバーなど、さまざまな技術や規格が介在します。これは言わばそれぞれ独自の言語を持った人間のようなもので、違う技術や規格が直接会話(データのやり取り)は出来ません。

どのようにデータを送受信するか(例:電気信号、光信号、無線信号などの形式)に焦点を当てたデータを物理層のデータと言い、どのデバイスからどのデバイスへデータを送るか(例:MACアドレスを用いたアドレス指定)から、送られたデータが正しいかどうかをエラーチェックするデータをデータリンク層と言います。この「物理層」と「データリンク層」の2つのデータで構成されるのがネットワークインタフェース層になります。

如何でしたでしょうか? TCP/IPが今までより具体的にイメージできたでしょうか? でも、これで終わりではありません。
次回もTCP/IPについてご説明をさせていただきます。
どうぞお楽しみに!

ご依頼・ご相談はこちら

この記事を書いた人

川上 敬至

代表取締役・Web Producer・Web Director・Web Planner・Front-end Engineer

スタッフ紹介ページへ

Lightning Lightalk
最新記事

Lightning Lightalk
記事一覧はこちら