2 コンピューターの通信

2.1 インターネット

2.1.1 概要

インターネットは,世界中のコンピュータが接続されている巨大なネットワークである. 現在,コンピューターの通信は,ほとんどインターネットを使っている.

1969年,冷戦下に軍事攻撃から通信網を守るために開発された「ARPANET」から始まった.1箇所に ネットワークのコントローラーがあるシステムだと,そこが攻撃されると,システムは停 止してしまう.それを防ぐために,分散型の通信網を作った.今のインターネットも分散 型で,一部のシステムが故障しても通信は可能である.

その後,1986年には軍事用のARPANETから分割さたので,大学を中心に学術研究用のネッ トワークが構築され始めた.1991年,CERNのバーナーズ・リーによりWorld Wide Web(WWW)を開発し,その後のインターネットの普及に礎を作った.1995年にWindows 95が 発売されると,大学のみならず,一般家庭でも爆発的にインターネットが使われるように なった.

インターネットでは,図1コンピューターやハブ,ルーターなどが通信 線路で相互に接続されており,それらを通してコンピューター間でデータの交換が出来る ようになっている.全体を見渡すと,接続はクモの巣(web)のようになっている.

図 1: インターネットの全体像.インターネットはコンピューターとハブ,ルーター などが通信線路で接続されている.
\includegraphics[keepaspectratio, scale=0.8]{figure/network.eps}

2.1.2 パケット

インターネット上のデータは,少量のデータ;パケット(packet)に分割して,転送が行わ れている.一回で全てのデータを送るのではなく小分けにして,ルーターなどの通信機器 を経由してデータは送られる.各パケットには,送るデータの他に発信元、送信先のアドレ スやパケットの種類・伝送順序などの制御情報を付加されている(図2).

パケット単位で通信を行うので、ある通信がネットワークを連続して占有することはない. そのため,一度の多くの通信が可能となり,通信の効率が上がる.また,送信データの一 部が破損,あるいは喪失しても少ないコストで再送が可能になる.

図 2: インターネットのパケットの構造.パケットは,データとヘッダーから成る. ヘッダー部に情報により,信頼性のある通信が可能となる.
\includegraphics[keepaspectratio, scale=1.0]{figure/packet.eps}

2.2 ネットワークプロトコル

さまざまな方法でインターネットに接続して,通信することができる.分かりやすい例だ と,いろいろなケーブルを使うことができる.多くの場合ツイストペアが使われているが, 光ファイバーや同軸ケーブルなども使える.ケーブルばかりではなく,通信の機器にはハ ブやルーターなども使っている.ハードウェアーのみならず,ソフトウェアーもいろいろ ある.

これら,さまざまな方法で通信可能な場合,それぞれに合わせて,コンピューター間の接 続方法を決めていては,手間;コストがかかる.たとえば,5種類のケーブル,3種類の通 信機器,8種類のソフトウェアーがあると,合計 $ 5\times3\times8=120$種類の接続の組み 合わせがある.これでは大変である.また,新しい技術が開発される都度,新たに仕組み を考えなくてはならない.

ネットワークの機能をモジュール化することにより,これらの問題が解決できる.それぞ れの階層--ここの例ではケーブル,通信機器,ソフトウェアー--で入り口と出口の規格 を決める.要するに,入り口と出口のみを決め,それを守ればどのような機器,ソフトウェ アーも使えるようにするのである.このような規格のことをプロトコル(protocol)と言う.

ネットワークの機能のモジュール化では,OSI参照モデルがよく引き合いに出される.そ れを表1に示す.ネットワーク必要なものがモジュール化されて いることが分かる.

このOSI参照モデルは,各種の試験によく出題される.「せっかくのプレゼントりがたくない」と覚えるとか [].


表 1: OSI参照モデル.役割は,主に文献 [4]から引用.
層(レイヤ) 役割
第7層 アプリケーション層 プログラムのAPI.アプリケーション間のデータのや りとりを行う.
第6層 プレゼンテーション層 データ翻訳/変換.プロセスで扱うデータの型や符 号を,共通のものに変換あるいは逆変換する.
第5層 セッション層 通信プログラム同士がデータの送受信を行なうための仮想 的な経路(コネクション)の確立や解放を行なう.
第4層 トランスポート層 相手まで確実に効率よくデータを届けるためのデータ 圧縮や誤り訂正,再送制御などを行なう.
第3層 ネットワーク層 相手までデータを届けるための通信経路の選択や,通信 経路内のアドレスの管理を行なう.
第2層 データ層 通信相手との物理的な通信路を確保し,通信路を流れるデータ のエラー検出などを行なう.
第1層 物理層 データを通信回線に送出するための電気的な変換や機械的な作業 を受け持つ.ピンの形状やケーブルの特性,LANカードなども第1層で定められる.

現在,もっとも使われている通信方式はOSI参照モデルではなく,表 2のTCP/IPモデルである.基本の考え方は,OSI参照モデルと同 じである.

このTCP/IP参照モデルを通して,データの通信を行うためには各種のプログラムが必要で ある.これらのプログラムはOS(unix, windows, macintosh)に実装されており,システム コールにより呼び出すことができる.

表 2: TCP/IP参照モデル.役割は,主に文献 [4]から引用.
TCP/IPモデル プロトコル 役割
アプリケーション層 TELNET, FTP, HTTPなど アプリケーション間の通信を行う.
トランスポート層 TCP,UDP 確実にデータが送られるかどうかを確認る.
インターネット層 IP 送り先へ向かってどのような経路でデータを送るのかを決定する.
ネットワークインターフェース層 イーサーネット 物理的なネットワーク機器へアクセスする.

2.3 パケットに付くヘッダー

インターネットを使って通信するプログラムは,表2のアプリ ケーション層を使って通信を行う.データは送信側コンピューターのアプリケーション層 $ \leftarrow$トランスポート層 $ \leftarrow$インターネット層 $ \leftarrow$ネットワーク インターフェース層を通して,インターネットに出て行く.データを受け取る側はその逆 で,インターフェース層 $ \leftarrow$インターネット層 $ \leftarrow$トランスポート層 $ \leftarrow$アプリケーション層とデータがわたって,最後にプログラムに到着する.

これら,層をまたぐ毎に,各種のヘッダーが付加されたり削除されたりする.これ以降, 簡単に各種のヘッダーについて,説明する.

2.3.1 TCPヘッダー

送信側のコンピューターのトランスポート層を通過すると,表3の TCPヘッダーが付加される.逆に,受信側のコンピューターのトランスポート層を通過す ると,このTCPヘッダーは削除される.
表 3: TCPヘッダーの内容.主に文献 [3]から引用.
フィールド 長さ(ビット) 内容
送信元ポート番号 16 パケットを送信したプログラムのポート番号
宛先ポート番号 16 パケットを受信するプログラムのポート番号
シーケンス番号 32 このパケットのデータの先頭が,送信データの何バイト目に あたるかを示す.
確認応答番号 32 データが何バイト目まで受信側に届いたかを,受信側から送信 側へ伝える.
データオフセット 4 データ部分がどこから始まるかを表す.TCPヘッダーの長さ と同じ.
未使用 6 使われていない.すべて0.
コントロールビット 6 通信制御のためのビット.詳細は省略.
ウインドウサイズ 16 受信側から送信側へ,受信確認なしで送信可能なデータ量 を通知する.
チェックサム 16 誤りの有無を検査する符号
緊急ポインタ 16 緊急時に処理すべきデータの位置を表す.
オプション 最大40バイト 上のヘッダーフィールド以外の情報を記載するときに 使う.滅多に使わない.

2.3.2 IPヘッダー

送信側のコンピューターのインターネット層を通過すると,表4の IPヘッダーが付加される.逆に,受信側のコンピューターのインターネット層を通過す ると,このIPヘッダーは削除される.
表 4: IPヘッダーの内容.主に文献 [3]から引用.
フィールド 長さ(ビット) 内容
バージョン 4 IPプロトコルのバージョン.
ヘッダー長 4 IPヘッダーの長さ.
サービスのタイプ 8 IPパケットの優先度などパケットの品質を決める.
全長 16 IPメッセージ全体の長さ.
ID情報 16 個々のパケットを識別する番号.通常,パケットの通し番号.
フラグ 3 IPパケットの分割を制御する時に使用.
フラグメントオフセット 13 分割されたパケットが,元のデータのどこに位置し ているかを表します.
生存期間 8 ネットワークにループができたときに,永久にパケットが回り続け いないように,生存期間を指定.ルーターを経由する毎に,この値が1ずつ 減らされ,0になればパケットは廃棄される.
プロトコル番号 8 プロトコル番号を記述.
ヘッダーチェックサム 16 誤り検査用符号データ.
送信元IPアドレス 32 このパケットを送信した側のIPアドレス.
宛先IPアドレス 32 このパケットを届ける相手のIPアドレス.
オプション 可変長 上のヘッダーフィールド以外の情報を記載するときに 使う.滅多に使わない.

2.3.3 MACヘッダー

ネットワークインターフェース層を通過する毎にMACヘッダーは付加されたり削除された りする.
表 5: MACヘッダーの内容.主に文献 [3]から引用.
フィールド 長さ(ビット) 内容
宛先のMACアドレス 48 このパケットを届ける相手のMACアドレス.
送信元のMACアドレス 48 このパケットを送信した側のMACアドレス.
イーサータイプ 16 使用するプロトコルの種類.


ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成19年11月7日


no counter