1969年,冷戦下に軍事攻撃から通信網を守るために開発された「ARPANET」から始まった.1箇所に ネットワークのコントローラーがあるシステムだと,そこが攻撃されると,システムは停 止してしまう.それを防ぐために,分散型の通信網を作った.今のインターネットも分散 型で,一部のシステムが故障しても通信は可能である.
その後,1986年には軍事用のARPANETから分割さたので,大学を中心に学術研究用のネッ トワークが構築され始めた.1991年,CERNのバーナーズ・リーによりWorld Wide Web(WWW)を開発し,その後のインターネットの普及に礎を作った.1995年にWindows 95が 発売されると,大学のみならず,一般家庭でも爆発的にインターネットが使われるように なった.
インターネットでは,図1コンピューターやハブ,ルーターなどが通信 線路で相互に接続されており,それらを通してコンピューター間でデータの交換が出来る ようになっている.全体を見渡すと,接続はクモの巣(web)のようになっている.
パケット単位で通信を行うので、ある通信がネットワークを連続して占有することはない. そのため,一度の多くの通信が可能となり,通信の効率が上がる.また,送信データの一 部が破損,あるいは喪失しても少ないコストで再送が可能になる.
これら,さまざまな方法で通信可能な場合,それぞれに合わせて,コンピューター間の接 続方法を決めていては,手間;コストがかかる.たとえば,5種類のケーブル,3種類の通 信機器,8種類のソフトウェアーがあると,合計 種類の接続の組み 合わせがある.これでは大変である.また,新しい技術が開発される都度,新たに仕組み を考えなくてはならない.
ネットワークの機能をモジュール化することにより,これらの問題が解決できる.それぞ れの階層--ここの例ではケーブル,通信機器,ソフトウェアー--で入り口と出口の規格 を決める.要するに,入り口と出口のみを決め,それを守ればどのような機器,ソフトウェ アーも使えるようにするのである.このような規格のことをプロトコル(protocol)と言う.
ネットワークの機能のモジュール化では,OSI参照モデルがよく引き合いに出される.そ れを表1に示す.ネットワーク必要なものがモジュール化されて いることが分かる.
このOSI参照モデルは,各種の試験によく出題される.「物でねーと, せっかくのプレゼントもありがたくない」と覚えるとか [].
層(レイヤ) | 役割 | |
第7層 | アプリケーション層 | プログラムのAPI.アプリケーション間のデータのや りとりを行う. |
第6層 | プレゼンテーション層 | データ翻訳/変換.プロセスで扱うデータの型や符 号を,共通のものに変換あるいは逆変換する. |
第5層 | セッション層 | 通信プログラム同士がデータの送受信を行なうための仮想 的な経路(コネクション)の確立や解放を行なう. |
第4層 | トランスポート層 | 相手まで確実に効率よくデータを届けるためのデータ 圧縮や誤り訂正,再送制御などを行なう. |
第3層 | ネットワーク層 | 相手までデータを届けるための通信経路の選択や,通信 経路内のアドレスの管理を行なう. |
第2層 | データ層 | 通信相手との物理的な通信路を確保し,通信路を流れるデータ のエラー検出などを行なう. |
第1層 | 物理層 | データを通信回線に送出するための電気的な変換や機械的な作業 を受け持つ.ピンの形状やケーブルの特性,LANカードなども第1層で定められる. |
現在,もっとも使われている通信方式はOSI参照モデルではなく,表 2のTCP/IPモデルである.基本の考え方は,OSI参照モデルと同 じである.
このTCP/IP参照モデルを通して,データの通信を行うためには各種のプログラムが必要で
ある.これらのプログラムはOS(unix, windows, macintosh)に実装されており,システム
コールにより呼び出すことができる.
TCP/IPモデル | プロトコル | 役割 |
アプリケーション層 | TELNET, FTP, HTTPなど | アプリケーション間の通信を行う. |
トランスポート層 | TCP,UDP | 確実にデータが送られるかどうかを確認る. |
インターネット層 | IP | 送り先へ向かってどのような経路でデータを送るのかを決定する. |
ネットワークインターフェース層 | イーサーネット | 物理的なネットワーク機器へアクセスする. |
これら,層をまたぐ毎に,各種のヘッダーが付加されたり削除されたりする.これ以降, 簡単に各種のヘッダーについて,説明する.
フィールド | 長さ(ビット) | 内容 |
送信元ポート番号 | 16 | パケットを送信したプログラムのポート番号 |
宛先ポート番号 | 16 | パケットを受信するプログラムのポート番号 |
シーケンス番号 | 32 | このパケットのデータの先頭が,送信データの何バイト目に あたるかを示す. |
確認応答番号 | 32 | データが何バイト目まで受信側に届いたかを,受信側から送信 側へ伝える. |
データオフセット | 4 | データ部分がどこから始まるかを表す.TCPヘッダーの長さ と同じ. |
未使用 | 6 | 使われていない.すべて0. |
コントロールビット | 6 | 通信制御のためのビット.詳細は省略. |
ウインドウサイズ | 16 | 受信側から送信側へ,受信確認なしで送信可能なデータ量 を通知する. |
チェックサム | 16 | 誤りの有無を検査する符号 |
緊急ポインタ | 16 | 緊急時に処理すべきデータの位置を表す. |
オプション | 最大40バイト | 上のヘッダーフィールド以外の情報を記載するときに 使う.滅多に使わない. |
フィールド | 長さ(ビット) | 内容 |
バージョン | 4 | IPプロトコルのバージョン. |
ヘッダー長 | 4 | IPヘッダーの長さ. |
サービスのタイプ | 8 | IPパケットの優先度などパケットの品質を決める. |
全長 | 16 | IPメッセージ全体の長さ. |
ID情報 | 16 | 個々のパケットを識別する番号.通常,パケットの通し番号. |
フラグ | 3 | IPパケットの分割を制御する時に使用. |
フラグメントオフセット | 13 | 分割されたパケットが,元のデータのどこに位置し ているかを表します. |
生存期間 | 8 | ネットワークにループができたときに,永久にパケットが回り続け いないように,生存期間を指定.ルーターを経由する毎に,この値が1ずつ 減らされ,0になればパケットは廃棄される. |
プロトコル番号 | 8 | プロトコル番号を記述. |
ヘッダーチェックサム | 16 | 誤り検査用符号データ. |
送信元IPアドレス | 32 | このパケットを送信した側のIPアドレス. |
宛先IPアドレス | 32 | このパケットを届ける相手のIPアドレス. |
オプション | 可変長 | 上のヘッダーフィールド以外の情報を記載するときに 使う.滅多に使わない. |
フィールド | 長さ(ビット) | 内容 |
宛先のMACアドレス | 48 | このパケットを届ける相手のMACアドレス. |
送信元のMACアドレス | 48 | このパケットを送信した側のMACアドレス. |
イーサータイプ | 16 | 使用するプロトコルの種類. |