【NET技術.001】TCP/IPプロトコル
佐藤@IT雑貨屋です。
私がネットワークを最初に触れたのは、確か20代後半で今から30年近く前の事だと記憶しています。当時は「Netware」が全盛期の時代で、それを採用してC/S型のシステム開発に多少携わりました。またほぼ同時期に、某大学の学内教育関連のシステム開発ではMS-Windows/NTのシステムで、ネットワークはTCP/IPで構築し、その上でアプリケーションの開発を行いました。
当時はイーサネットボードをPCに実装し、ディップスイッチでIPアドレス等を設定していた時代です。
このTCP/IPですが、当時、知人のSEでAT&Tで仕事をしている人がいて、その人から多少教えられはしましたが、正直、内容はチンプンカンプンでした。
◆ネットワークとは
まず「ネットワーク」について、もともとの意味は「網、網状」というネットという単語に、「仕事(Work)」という言葉がついて、Networkになったと言います。ここで言うネットワークとは、個々のコンピューターを通信回線で接続し、そこでデータのやり取りが出来る仕組みの事を言います。
このネットワークがPC上で急速に普及したのは、やはりWindows95がリリースされてからではないでしょうか。Plug & Playという機能で、PCのイーサネットボードをソフトウェア上から設定して、簡易に利用できる機能をWindows95では提供していました。
当初は社内のPCを、ネットワークで接続して個々が持っているデータを共有できる様なものが主流でした。これをプライベートネットワークと呼んでいました。このプライベートネットワークですが、HUB(中継機器)を介して拡大し、そこに外部からのインターネット回線(当初はISDNやADSLでしたが)がつながり、インターネットが急速に普及していきました。
この辺りについては、皆さんも良くご存知の事だと思います。
◆プロトコル
プロトコルとは、コンピュータ同士を接続する際、ネットワークを利用して通信するための手順を言います。このプロトコルを決めておく事により、メーカやCPUが異なり、OSが異なっていたとして、コンピューター同士は通信を行う事が出来ます。
プライベートネットワークが主流であった頃には、このプロトコルは個々のもので十分利用する事が出来ましたが、先に紹介した様に、インターネット回線が普及しはじめた頃から、このプロトコルの標準化が求められるようになっていったのです。
◆プロトコルの標準化
このプロトコルの標準化には、国際標準化機構のISO(International Organization for Standardization)は国際標準としてOSI(Open Systems Interconnection:開放型システム間相互接続)と呼ばれる通信体系を策定しました。
また大学などの研究機関やIT業界が中心となって推進してきた団体であるIETF(Internet Engineering Task Force)では、インターネットの標準であるTCP/IP(Transmission Control Protocol/Internet Protocol)の提案や標準化作業を行っています。
現在ではTCP/IPがインターネットのデファクトスタンダードであり、世界で広く使われている通信プロトコルとなっています。
◆OSI基本参照モデル
一つのプロトコルに様々な役割を詰め込むと、処理がとても複雑になってしまう事から、このプロトコルを機能別に別けて階層化する事が提唱されました。そしてネットワーク通信に必要なプロトコルを7つの階層にわけてまとめたモデルがOSIにより考案されました。これがOSI基本参照モデルです。
<ユーザー・アプリケーションなど>
[ アプリケーション層]7層
[プレゼンテーション層]6層
[ セッション層 ]5層
[ トランスポート層 ]4層
[ ネットワーク層 ]3層
[ データリンク層 ]2層
[ 物理層 ]1層
<通信回線・ケーブル等>
各層の役割について以下に説明します。
・アプリケーション層
通信に使うアプリケーションです。WEBページを表示したり、メール送受信する等の
実際の通信サービスで漁する機能を提供します。
・プレゼンテーション層
データお表現方法を通信に適した形式にします。例えば画像ファイルをテキスト形式
にしたり、データを圧縮するなどを行います。
・セッション層
通信するプログラム間での会話(Session)を取り持ちます。データの流通する経路
やコネクションの開始、終了を管理、同期をとったりします。
・トランスポート層
コンピュータ内のどのアプリケーションと通信するか管理します。また品質を補完
したり、通信の信頼性を確保します。
・ネットワーク層
ネットワーク上でデータの開始と終了まで届くように管理します。ルータなどで
ネットワーク間を結び、ルーティングを行うなど、データの中継を行います。
・データリンク層
ネットワーク上でデータが直接接続された通信機器まで配送される様に管理します。
通信機器側で信号の受け渡しを行います。データリンク層で作成されるパケットを
フレームと呼びますが、このフレームが実際に通信路を流れるデータとなります。
・物理層
物理的な接続を管理します。デジタルデータを電気信号に変換したり、光に変換
したりします。
◆TCP/IPプロトコル群
OSI基本参照モデルに準拠したモデルで、現在、一番普及しているのがICP/IPプロトコル群です。これはインターネット上で主に使用しているTCPとIPを中心に、実際のアプリケーションに実装する事を考えて作られたものです。
以下にTCP/IPプロトコル群とOSI基本参照モデルの対比図を示します。
<ユーザー・アプリケーションなど>
TCP/IPプロトコル群 OSI基本参照モデル
[アプリケーション層 ]→[ アプリケーション層]7層
[プレゼンテーション層]6層
[ セッション層 ]5層
[トランスポート層 ]→[ トランスポート層 ]4層
[インターネット層 ]→[ ネットワーク層 ]3層
[ネットワークインターフェース層]→[ データリンク層 ]2層
[ 物理層 ]1層
<通信回線・ケーブル等>
・アプリケーション層
OSI基本参照モデルのセッション層以上が相当します。アプリケーションプログラム
の中で、それぞれのサービスを実行させる役割です。例えばWebページを閲覧する
時には、クライアントはブラウザ、サーバにはWebサーバソフトが必要です。
この時、クライアントとサーバの間でやり取りする際に用いられるプロトコルが
HTTP(Hyper Text Transfer Protocol)です。
・トランスポート層
OSI基本参照モデルのトランスポート層に該当します。代表的なプロトコルに、
TCP(Transmission Control Protocol)やUDP(User Datagram Protocol)の
二つがあります。
・インターネット層
OSI基本参照モデルのネットワーク層に該当します。代表的なプロトコルにIP
(Internet Protocol)があります。
・ネットワークインターフェース層
OSI基本参照モデルの物理層とデータリンク層に該当します。厳密には、物理層に
岐東するものをハードウェアと捉えるので、ソフトウェアが実現する部分はこの
ネットワークインターフェース層となります。TCP/IPプロトコル群では、例えば
LANカードを挿入した場合、利用するためのドライバとなるソフトウェアなどが
ネットワークインターフェース層に該当します。
このTCP/IPプロトコル群は誰でも参加する事ができるIETF(Internet Engineering Task Force)という団体で決められています。ここではオープンな事が重要視されているので、プロトコルは全て公開されています。具体的なプロトコルの議論は誰もが参加できるメーリングリストを通じて行われます。そして仕様はRFC(Request For Comments)と呼ばれるドキュメントにまとめられ、インターネット上に公開されています。TCPについてはRFC793やRFC3168、HTTPについてはRFC2616となっています。
◆TCP/IPプロトコル群のパケット通信
TCP/IPプロトコル群では、各階層で送信されるデータにヘッダと呼ばれる情報が付加されます。例えばアプリケーション層で作成されたデータをトランスポート層のTCPに送ると、TCPヘッダが付加されます。さらに、そのデータがインターネット層のIPに送ると、IPヘッダが付加されていきます。この様に上位層のデータをまとめてヘッダを付ける事をカプセル化と呼んでいます。