はじめに
今回は、ネットワークの言葉としてよく出てくる『TCP/IP』というものについて解説していきます。
では、『TCP/IP』とは何なのでしょう?
結論から言えば、TCP/IPとは『ネットワーク通信を支える基盤』ということになります。
『TCP』と『IP』が持つ役割の前提
『TCP/IP』の解説に入る前に、まずは『TCP』と『IP』を簡単に理解しておきましょう。
TCPとIPをそれぞれ簡単にまとめると以下のようになります。
- 『TCP(Transmission Control Protocol)』:送信側は正しく順番通りにパケットが送れることを保証するとともに、受信側はパケットの受信確認をする
- 『IP(Internet Protocol)』:IPアドレスに基づき、目的の送信先を定めてパケットを送る役割を持つ
上記のIPの役割を考えると、よくあなたも耳にする『IPアドレス』とは別で捉える必要があります。
その理由は、『IP』はパケットを送る宅配便というイメージであり、『IPアドレス』は機器の所在を表している住所だからです。
これは、混同して解釈しないように注意する必要があります。
『TCP/IPモデル』の4つの階層構造
TCPとIPによるネットワークモデルを、そのままですが『TCP/IPモデル』と呼びます。
TCP/IPモデルは、各プロトコルを階層に分けた構成で、OSI参照モデルと同様のものですが、OSI参照モデルの7階層とは違い、少ない4階層に分けられています。
なぜTCP/IPモデルが4階層なのかという違いについては、あとで記載します。
TCP/IPモデルの階層は、第1層から始まり「ネットワークインターフェース層」、第2層の「インターネット層」、第3層の「トランスポート層」、第4層の「アプリケーション層」という組み合わせで構成されています。
では、それぞれ各層を詳しく見ていきましょう。
送信データの流れが上位の階層からになるので、説明の順番も上位からしていきます。
第4層:アプリケーション層
TCP/IPモデルのアプリケーション層は、『OSI参照モデル』の「アプリケーション層」「プレゼンテーション層」「セッション層」の3層に位置付けられます。
3層からなるので、取り扱うプロトコルは「HTTP」「SMTP」「POP3」「IMAP」「SSL/TLS」「FTP」「DNS」「DHCP」など多いです。
アプリケーション層は、各アプリケーションやサービスそのものであり、コンピューターのほとんどの作業がこの層で実現されているものになります。
つまり、あなたがコンピューターやスマホで何か作業をする時の、一番身近なプロトコルであると言えます。
第3層:トランスポート層
TCP/IPモデルのトランスポート層は『OSI参照モデル』の「トランスポート層」に位置付けられます。
ここは同じですね。
トランスポート層は、データの送信元と宛先のクライアント(PCやスマホなど)の間での通信を確保することが役割です。
言わば、インターネット層とアプリケーション層の仲介役というイメージになります。
アプリケーション層からデータが渡されてくると、トランスポート層はパケットにヘッダ(制御情報)を付け、下位のインターネット層に渡します。
取り扱うプロトコルは『TCP』と『UDP』の2つです。
『TCP』は「送信元ポート番号」「宛先ポート番号」「ヘッダ長」、データにエラーがないをチェックするための「チェックサム」、通信制御の「制御ビット」「ウィンドウ」、信頼性確保の「シーケンス番号」などの『TCPヘッダ』という情報を各パケットに付けます。
『UDP』は「送信元ポート番号」「宛先ポート番号」、ヘッダの長さを表す「ヘッダ長」「チェックサム」などの『UDPヘッダ』という情報を各パケットに付けます。
ちなみに、TCPにヘッダを付けられたパケットは『TCPセグメント』と呼び、UDPにヘッダを付けられたパケットは『UDPデータグラム』と呼びます。
第2層:インターネット層
TCP/IPモデルのインターネット層は、『OSI参照モデル』の「ネットワーク層」に位置付けられます。
代表的なプロトコルは『IP』になります。
このIPは、インターネットに接続する、すべての端末に割り振られるIPアドレスを使ったルーティングを行います。
ルーティングとは簡単にいうと、データを送信元から送信宛へ送るための通信路となるルートを決めることです。
言わば、カーナビによるルート案内ですね。
IPがパケットに付けるIPヘッダは「送信元IPアドレス」「宛先IPアドレス」「ヘッダ長」「チェックサム」、パケットの長さを表す「パケット長」があります。
脱線しますが、IPアドレスを使ってルーティングする機器がルーターになります。
第1層:ネットワークインターフェース層
TCP/IPモデルのネットワークインターフェース層は『リンク層』とも呼ばれ、OSI参照モデルで言う『データリンク層』に位置付けられます。
代表的なプロトコルは、LAN規格である『Ethernet』と、WiFiを表す『IEEE802.11』です。
ネットワークインターフェース層の役割は、同一のネットワーク間の通信を行うことです。
イメージとしては、家庭内であれば、PCやスマホなどのクライアントからルーターまでの間になります。
パケットにつけるヘッダには、MACアドレスを元に送信元や宛先の情報が入った情報をつけます。
加えて、『FCS(Frame Chech Sequence)』と呼ばれる、シンプルなエラー検出のための符号を記述したトレーラーも追加して、パケットのカプセル化を行います。
その後、物理層であるルーターに渡し、光ケーブルなどでインターネットの世界に運ばれることになります。
プロトコルの集合体でもある『TCP/IP』
『TCP/IP』とは、上記の『TCP』と『IP』を組み合わせた考え方であり、上記に書いたように他にも単純なプロトコルを多数組み合わせて、様々な機能を実現しています。
主なプロトコルの一覧を『TCP/IPモデル』の階層と合わせて下記にまとめておきます。
階層 | 階層名 | プロトコル |
---|---|---|
第4層 | アプリケーション | HTTP、SMTP、MAP、POP3、SSL/TLS、FTP、DNS、DHCP、NNTP |
第3層 | トランスポート層 | TCP、UDP |
第2層 | インターネット層 | IP、IPSec |
第1層 | ネットワークインターフェース層 | Ethernet、TokenRing、DSL、ISDN |
『TCP/IPモデル』のメリット
TCP/IPモデルが使われているメリットは何でしょう?
これはズバリ、ネットワークを構築する際に、TCP/IPモデルを使うと効率が良いということが言えます。
その理由は、仮に全ての仕様やルールが独自に作られ、一体化したネットワークシステムを構築したとしましょう。
もしそのシステムにトラブルが発生したら、どこがおかしいのかという原因究明をすることになりますが、この場合、独自のルールで作られているので大変な作業になります。
早期に原因を究明できれば良いのですが、それができなかった場合に、たった一つのエラーでシステム全体を修正するのは全くもって無意味なことになります。
これに対しTCP/IPモデルの場合は、各階層をチェックしていくだけで原因の特定が比較的早く行えます。
また、原因が特定できたのであれば、自ずと修正範囲も定まります。
例えば、アプリケーション層がおかしければその部分の修正を、トランスポート層がおかしければその部分の修正を、という具合で済むからです。
これは、作り手にとって修正が楽であるし、効率も良いと言えます。
また、ある層のプロトコルを変更したり追加しても、他の層には影響がないという利便性も備えています。
TCP/IPモデルはこの柔軟性があるおかげで、今でも支持されているというわけです。
『TCP/IPモデル』と『OSI参照モデル』の普及差について
TCP/IPモデルは、OSI参照モデルと同じ階層化された通信モデルです。
そして、TCP/IPモデルはOSI参照モデルよりも普及が進み、現在でも利用されています。
では、なぜTCP/IPモデルの方が普及が進んだのでしょうか?
その理由は、1983年にアメリカ国防総省の支援を受けた軍事用ネットワークの通信モデルから、一般研究用のネットワークとして切り離された『ARPANET』にTCP/IPモデルが採用されたことが大きいです。
これを受け、各メーカーもTCP/IPモデルの採用に至ったことで、この通信モデルはさらに後押しされました。
また時系列的にも、OSI参照モデルはTCP/IPモデルよりも遅く策定されたことと、TCP/IPモデルよりも階層が多い7階層であった事もあり、OSI参照モデルよりもTCP/IPモデルの方が普及が進むことになりました。
まとめ
ちょっと複雑ですが、TCP/IPモデルというのはTCPとIP以外にも、数多くのプロトコルを集めて階層化させ、ネットワーク通信を実現しているというモデルです。
普段インターネットを利用していてもTCP/IPモデルについてを思いを馳せることはありませんが、改めて考えると、そこには先人たちの知恵が凝縮していることが分かります。
TCP/IPモデルはこれからもインターネットインフラを支え、大きな変革が起こらない限りデファクトスタンダードであり続けるでしょう。