OSI Reference Model, IP Address
OSI 参照モデル,IP アドレス

起動するパーティションに注意し,起動せよ.自分のユーザ名でログインせよ.

第 2 回実験 の班分け表に記載されていない学生は履修できない.記載されていることを確認せよ. レポートの提出状況も適宜確認せよ.

ネットワークプロトコルの階層モデル

大規模なプロトコルを開発する場合, 階層構造を決めて階層ごとにプロトコルを決めると効率よく開発できる. たとえば何もないところからいきなりメール処理のプログラムを書くよりも, データ消失に対処するなどの単純なパケットのやりとりを行う汎用プロトコルを決め, メールプログラムはそそのプロトコルを使う前提で開発する.

このとき重要なことはメール処理プログラムとパケット処理プログラムを お互いの細部には関係ないように独立に開発し,相手側ホストの 同種のプログラムとのデータのやりとりの決まり事のみを厳密に決めておく. これををプロトコルという.

プロトコルとは別に,同じホスト内のメール処理プログラムと パケット処理プログラムの間のデータのやりとりにも決まり事が必要である. これをインターフェースという.

この例ではユーザは直接メール処理プログラムに処理を入力し, メール処理プログラムがより具体的で詳細な 処理を行うパケット処理プログラムに決められたインターフェースに従った形式でデータを渡す. パケット処理プログラムが結果をメール処理プログラムにインターフェースに 従った形式で返し,メール処理プログラムは結果を反映させてユーザへ出力する. この例ではユーザに近いメール処理プログラムが上位階層で,パケット処理プログラム が下位階層にあたる.パケット処理プログラムは, 回線の物理的な性質に依存するようなさらに下位の別の階層のプログラムへ, また別のインターフェースを使って処理を依頼するかもしれない.

システム開発のしやすさ,いろいろな通信媒体,アプリケーションへの応用に 柔軟に対応できることなどを目的に, 通信プロトコルはどのような階層に分けるのが効率的か について研究されてきた. 現在事実上の標準とされているのが OSI参照モデルとよばれる 7 階層のモデルである. OSI 参照モデルは以下の 7 階層からなっている.

ユーザからみるとアプリケーション層(メールソフトなど)へ入力すれば そのソフトから出力が直接帰って来るように見えるが,送信側では アプリケーション層はプレゼンテーション層へ処理を依頼し,プレゼンテーション層 から結果を受け取っている.プレゼンテーション層以降もさらに自分よりも下層へ処理を依頼 した結果を利用している.全体の流れとしてはユーザにより最上流からデータが入り,各階層がそれを 解釈して下層へのデータに変換し下に流して行く.最下層は電線などの物理媒体であり, 実際の通信が行われる.受信側では逆に物理媒体の 信号から上層へデータが上がって来て, 最終的に最上流からユーザへ出力が渡される.

ネットワークを学習する上で OSI 7 層の役割を理解することは重要で, 自分が今扱っている話題が OSI の何層に対応するのかを常に意識する必要がある. 各階層に関係する技術のキーワードを挙げておく

アプリケーション層(第7層)
メール,リモートログイン,ファイル転送
プレゼンテーション層(第6層)
画像,動画などのフォーマット
セッション層(第5層)
コネクションを張るタイミング
トランスポート層(第4層)
UDP, TCP,データ消失への対応
ネットワーク層(第3層)
ARP, 経路制御,ルータ
データリンク層(第2層)
デバイスドライバ,ブリッジ,スイッチングハブ
物理層(第1層)
イーサネットケーブル,無線,リピータ

TCP/IP の階層モデルは OSI 参照モデルに当てはめられるが 両者は少し異なる.OSI 参照モデルは汎用の通信階層構造モデルであるのに 対して TCP/IP 階層モデルは OSI 参照モデルに基づいて, 特にインターネットを実装するために具体化し,設計されたものだからである.

具体的な相違点は,TCP/IP 階層モデルでは物理層が規定されていないこと, セッション層から上層を 1 つの層と考えることである.前者は TCP/IP はすでに 物理的接続がある前提でのプロトコルなので物理層が必要ないためであり, 後者はセッション層より上は実際にはアプリケーションプログラムがすべて 処理しているためである.

IP アドレスと MAC アドレス

すべてのネットワーク接続機器は機器ごとに固有の 48 ビットの MAC (Media Access Control) アドレスが割当られている. MAC アドレスは OSI 参照モデルでいう第 2 層で使うアドレス (相手を一意に決めるためのもの)である.

MAC アドレスは 重複することはなく,後から変えることがないものとして設計されている. 前半 24 ビットはベンダ識別子と呼ばれ,IEEE が管理している. 後半 24 ビットはベンダ(メーカー)の責任で重複のない値が割り振られる.

画面左のランチャーの歯車状のアイコンの「システム設定」>ネットワーク,で開いた「ネットワーク」で,左の欄から「有線」を選ぶと 現在使用しているネットワーク機器の MAC アドレスを知ることができる. ターミナルを利用する方法では ifconfig コマンドで「ハードウェアアドレス」として 表示される.

一般的に MAC アドレスは 12 桁の 16 進数を 2 桁ごとに区切って表記される. 最初の 6 桁がベンダ識別子にあたり, IEEE によるベンダ識別子サーチ でベンダを検索することができる.16 進表記で XX-XX-XX の形式で "Search the Public MA-L Listing" の下の欄に入力し,Search! ボタンを押せばよい. MA-L (MAC Addres Block Large) とはベンダ識別子のことである.

これに対して IP アドレスはOSI参照モデル第 3 層で利用されるアドレスである. 技術的には計算機管理者により何度も自由に設定できるが, インターネットに接続されるなら必ず重複しない IP アドレスを割り当てなければならない. 管理者が責任を持って設定を行う必要がある.実際の計算機管理業務では, ある部門の計算機管理者は上位部門から許可を得た IP アドレスを管理下の計算機に割り当てる.

あるホスト(ネットワーク上の計算機の単位)を インターネットに接続するための設定に必要な情報として, 一般的には上位部門から

として設定してよい値を受け取る必要がある.これらの項目の意味を説明する.

ネットワーク

IP アドレスはネットワークアドレスとホストアドレスに分解される. これらを分けて考えることが重要である.

ウェブやメールを利用する限りではどの場所でインターネットに接続しても同じように 利用できるので一見インターネットは均質な一つのネットワークのようにみえるが, 実際にはインターネットは複数のネットワークを相互接続したもので, それがインターネットの語源になっている.

ネットワーク接続に広く使われているイーサーネットでは 本来算機間から発信された情報は同じネットワーク上の計算機全てに 伝わるように送信される.このため送受信に関係ない計算機であっても同じネットワークに 接続されている計算機にも情報が流れる.ただ接続するだけであれば世界中の全計算機 を一つのネットワークに接続すればよいのだが, それでは関係ない情報の通信によりネットワークの通信能力を超えてしまう.

解決策として,適度なホスト数の直接通信を行うグループを 「ネットワーク」として定義し, 各ホストはそのネットワーク下に所属するものとする, 情報を別のネットワークのホストへ送るには 複数のネットワークを経由してバケツリレー的に目的ホストが所属する ネットワークまで情報を送信する,という方式が採用されている.

目的のホストが属するネットワークへ情報を運搬するには中継するネットワークの 接続形態の知識と転送の仕組みが必要でこの技術を経路制御とよぶ.

ネットワークの技術を理解するには OSI 参照モデルの第何層にあたる話題かを 区別して考えるのがコツである.同じネットワーク内の通信は 2 層, ネットワーク間の通信を処理するのが 3 層と理解しておくとよい. インターネットに接続されているホストには,2 層の機能で 直接通信できる同じネットワークに所属するホストと,3 層の機能である 経路制御を使って通信する他のネットワークに所属するホストがあることになる.

世界中のネットワークは個別の識別番号をもつ.これをネットワークアドレスとよぶ. また各ネットワークに所属するホストもそのネットワーク内で個別の識別番号をもつ. これをホストアドレスとよぶ.ネットワークアドレスとホストアドレスを合わせたものが IP アドレスである.世界中のホストは IP アドレスで一意に識別できる.

サブネットマスク

現在利用されている IP バージョン 4 ではネットワークアドレスとホストアドレスを あわせて 32 ビットと決められている.このうち上位ビットがネットワークアドレスを表し, ネットワーク部とよばれる.下位ビットはホストアドレスを表し,ホスト部とよばれる. インターネットが普及した結果 IP アドレスの枯渇が問題になり, この限られた 32 ビットを有効に利用する工夫が必要になった.

IP アドレスの 32 ビットのうち上位ビットがネットワークアドレス, 下位ビットがホストアドレスに使われるが何ビットまでがホストアドレスなのかは 32 ビットを有効利用するために可変となっている. これはホストアドレスに必要なビット数が組織の規模によって異なるためである. ホストアドレスが i ビットであれば,0 番はネットワーク自体を表す番号, 最大値の 2i-1 番はブロードキャストと呼ばれる 同一ネットワーク上のホスト全てに宛てた通信用に予約されているので収容できるホスト数は 2i-2 となる.収容予定のホスト数からホスト部のビット数を決め,残りを ネットワーク部としてネットワークを設計する.

IP アドレスを用いた通信の仕組みを理解するためにはネットワーク部と ホスト部を区別することが重要である. 過去にはネットワーク部が 8 ビット(クラスA), 16 ビット(クラスB),24 ビット(クラスC)という大雑把な切れ目で決められており, どのクラスのアドレスかは IP アドレスから判断できるようになっていたが無駄が多い. 現在は全 32 ビットを有効利用するためにネットワーク部のビット数を 1 ビット単位で 指定できるようになっている.このためにどこまでがネットワーク部なのかを指定する情報が 必要になった.これがサブネットマスクである.

例えばネットワーク部が 24 ビットであればサブネットマスクは 最初の 24 ビットが 1, 残りの 8 ビットが 0 である 11111111 11111111 11111111 00000000 となる. サブネットマスクは一般的に 8 ビットづつ 4 個に区切って,4 個の 10 進数をピリオドで区切って並べて表現することが多い. ネットワーク部が 24 ビットの場合,10 進表記のサブネットマスクは 255.255.255.0 となる.この表記ではネットワーク部のビット数が 8 の倍数以外のときは理解しにくくなる. サブネットマスクは 10 進表記されていても 2 進数で考えると理解しやすい.

例えばネットワーク部が 24 ビットで IP アドレスが 192.168.1.1 であれば サブネットマスクは 255.255.255.0 と表記されることが多いがサブネットマスクの ビット数を IP アドレスの後ろに "/" をはさんで直接記述する記法もある. この記法では上記 IP アドレスは 192.168.1.1/24 となる.

計算機の IP アドレスの設定では IP アドレスだけではなくサブネットマスクの 指定が必要であることを忘れてはならない.

計算機をインターネットに接続するための設定には説明した IP アドレス,サブネットマスクのほかに 経路制御に必要な情報であるデフォルトゲートウェイと "www.yamamotolab.je.u-tokai.ac.jp" のような名前で目的の計算機にアクセスできるようにするための情報であるネームサーバの 4 つの情報が最低限必要になる.

ホスト名

各計算機にはホスト名と呼ばれる文字列でできた名前を付ける. Ubuntu Linux で起動時に希望のホスト名にするためには /etc/hostname ファイルと /etc/hosts ファイルの内容を書き換える. /etc/hostname ファイルがホスト名の定義,/etc/hosts ファイルは IP アドレスとの関連づけのファイルである.いずれも 書き換えには管理者権限が必要である.

実習 3

これから使用するホスト名と IP アドレスを手動で設定する. 以下に各計算機のホスト名と IP アドレスの決め方を記述するので 自分の担当ホストのホスト名と IP アドレスを確認し,記録せよ.

ホスト名

各班の計算機を教卓に向かって左から順に 1号機,2号機,3号機,4号機と呼ぶ. 例えば 1 班の 2 号機は pc012, 10 班の4 号機は pc104 のように,pc の後に班の番号を2桁で表記したものを書き, 最後に1-4号機の番号を書いたものをその計算機の新しいホスト名とする. 自分の担当計算機の新しいホスト名を記録せよ.

IPアドレスとサブネットマスク

IPアドレスとサブネットマスクは常にセットで記述する. IP アドレスは以下の規則で決めた値を使用する.

キーボード左上のシールの番号の下2桁の数字がxx とすると,その計算機の新しい IP アドレスを 172.17.2.xx とする.ここでは番号は数値とみなすので, 01 から 09 は最初の 0 をとって1桁で記述する.例えば下2桁が 01 であれば IP アドレスは 172.17.2.1 となり,10 であればそのまま 172.17.2.10 と記述する. 自分の担当計算機の新しいIPアドレスを記録せよ.

実習室のネットワークでは上位16ビットがネットワークアドレス である.この場合のサブネットマスクを考え,IP アドレスと合わせて記録せよ.

実習 3.1

まず現状のホスト名を調べる. ターミナルを起動し,hostname コマンドを実行すると 現状のホスト名が出力されるので古いホスト名として記録せよ.

次に内蔵イーサーネットの MAC アドレスと IP アドレスを調べる. ターミナルから ifconfig コマンドを実行せよ. 表示された項目のうち,eth1 の項目にある ハードウェアアドレス以下の12桁の16進数(XX:XX:XX:XX:XX:XXの形式) が MAC アドレスである.自分のホストの MAC アドレスを記録せよ.また べンダ識別子サーチを使ってメーカー名を調査せよ.

inetアドレス:以下の,.(ドット)で区切られた 4 つの数字が 現在の IP アドレスである.古いIPアドレスとして記録せよ.

実習 3.2

最初にホスト名を設定する.ターミナルを開き,以下のコマンドで /etc ディレクトリに移動する.

user1@1B201-PCM:~% cd /etc

ls を行い,hostname, hosts という名前のファイルがあることを確認する.

hostname を gedit でエディットする.管理者権限で実行する必要があるので 以下のように sudo をつけて gedit を起動する.パスワードを聞かれたら ログインしたユーザーのパスワードを入力する.

user1@1B201-PCM:/etc% sudo gedit hostname

ファイルの内容は古いホスト名になっている. これを上で記録した新しいホスト名に書き換えて保存し, gedit を終了する.

次に以下のコマンドで hosts を gedit でエディットする.

user1@1B201-PCM/etc% sudo gedit hosts

2行目に 127.0.1.1 とその後ろに古いホスト名が書かれている. この部分を新しいIPアドレスと新しいホスト名に変更し,保存,終了する.

実習 3.3

次に IP アドレスの変更を行う. 計算機をネットワークに接続するには 4 つの情報

が必要だが, 実験環境では自動でこれらの情報を取得,設定する DHCP の環境が整えてあるため 手動で設定しなくても立ち上げ時からインターネットに接続できる. 今回の実験では手動で上記情報を設定し, インターネットに接続できることを確認する. 今回以降の実験ではこの IP アドレスを使用する. 今回の実験では IP アドレスは計算機ごとに異なり,残りの 3 つは共通である.

画面左のランチャーの歯車アイコン(システム設定)から,「ネットワーク」 を選び,左のメニューから「有線」を選択する.

ハードウェアアドレスが実習3.1で調査したMACアドレスであることを 確認して右下の「オプション」を押し,「IPv4設定」タグを押して 編集画面を表示させる.「方式」のプルダウンメニューを「手動」に 切り替える. 「追加」ボタンを押すことで IP アドレスなどの必要な4つのデータを 手動で設定できるようになる.

設定する IP アドレスとサブネットマスクは IPアドレスとサブネットマスク で記録した計算機毎に個別の新しいIPアドレスと 全員共通のサブネットマスクである.これらを指定せよ.

また,デフォルトゲートウェイは 172.17.254.254, 優先DNSサーバのアドレスは 172.17.254.254 を指定せよ.

実験室で使用するIPアドレスは 世界で一意に定まるグローバル IP アドレスではなく, 実験室内でのみ一意に管理される プライベートアドレスであるが,中継するサーバの働きによりインターネット接続が可能になる.

設定したのち,ターミナルから ifconfig コマンドで IP アドレスが正しく 設定されているか確認せよ. ifconfig コマンドの出力の eth1 が今回使用しているインターフェースで, 今回設定した IP アドレスは「inetアドレス」として表示されている. MACアドレス,(「ハードウェアアドレス」), ブロードキャストアドレス(「ブロードキャスト」), サブネットマスク(「マスク」)もここで確認できる. IPアドレス,サブネットマスクが設定したとおりに表示されることを確認せよ. 変更が反映されていない場合は確認して再起動してみよ.

正しく設定されていればウェブサイトの閲覧などができるはずである.確認せよ.

再起動し,自分のユーザ名でログインし,hostname コマンドを使ってホスト名が 新しいホスト名になっていることと,ifconfig コマンドを使って IPアドレス,サブネットマスクが正しく設定されていることを確認せよ.

実習 3.4

3.4.1

ping コマンドを用いて IP アドレスなどを利用して 特定のホストへの接続状況を検査することができる. まず自分のホストの IP アドレスに対して検査を行う. 自分のホストのIPアドレスが 172.17.2.xx であるとすると,ターミナルから ping -c 10 172.17.2.xx を行え.ping の -c 10 オプションは 問い合わせを 10 回行うという意味である. "Request timeout" や "No route" などが表示されていると失敗である. 実習 3.1 の設定の見直しを行え. "0% packet loss" と表示されれば成功である. 最後の行の"min/avg/max/mdev=" のうち,avg が応答が帰ってくるまでの 平均値である.avg の値の結果を記録せよ.

3.4.2

教卓PC は IP アドレスが 172.17.2.60 に設定されている. ターミナルから ping -c 10 172.17.2.60 を行え. 失敗すれば設定の見直しを行い,avg の値の結果を記録せよ.

3.4.3

自班の他のすべてのホストの IP アドレスに対して ping -c 10 を行え. 失敗すれば設定の見直しを行い,avg の値の結果を記録せよ.

3.4.4

実習室の外のホストである 150.7.136.62 に対して ping を行い, avg の値を記録せよ.

実習3.5

172.17.2.150 は動作していないホストである.ping によりこのアドレスへの 接続状況を確認せよ.反応がなければ Ctrl-C(コントロールキーを押しながら C)で 強制終了させよ.

第 2 回課題「ネットワーク設定」 を提出せよ.


Updated in May 8, 2010, index.html, Yamamoto Hiroshi