コンピュータネットワーク基礎
2005.05.13
電子メールで出席確認をします.宛先など以下の情報を用いてメールを作成し, 出席申告してください.なお,キーワードは授業中に紹介します.
提出形式
宛先 | justice@mag.shimane-u.ac.jp | |
件名 | AttendA_05-13_net_s0340** | Aクラス |
AttendB_05-13_net_s0340** | Bクラス | |
本文 |
学生番号 氏名 キーワード |
(改行) (改行) キーワードは授業中に紹介 |
注意 | 「件名」の**をそのままにしないで,必ず自分の学生番号 に修正して下さい.また,ABクラス別は指示にしたがって下さい. |
前回の設問に不正確な表現がありました.口頭で説明しますので注意して聞いて
下さい.
2進数,8進数,10進数,16進数とこの講義では各種の進数を変換する作業が多く
あります.プログラミング言語を用いて行う方法を別ページに示しておきますの
で,参考にしてください.
今日のLAN環境を構築する際に基本となる媒体は,「より対線」であり, 100BASE-TX規格の「Fast Ethernet」がもっとも良く利用されます.拠点間,もし くは,データ転送量の多い部分では「ギガビットEther」と呼ばれる,1000Mbps 速度に対応した伝送媒体が利用されることもあります.ギガビットでは,光ケーブル を用いた1000BASE-SX,1000BASE-LXが拠点間やネットワーク間を結び,LANの中 ではより対線による1000BASE-Tが用いられることが多くなっています.
無線を利用したLANに関しても,1999年のISMバンドの開放以来,急速に普及して きており,IEEE802.11b規格の2.4GHz帯の11Mbpsは広く一般に用いられて来てい ます.少し前から,IEEE802.11aに準拠した5GHz帯無線LANの利用も各所で始まって いますし,IEEE802.11bと互換性があり54Mbpsの速度を持つ802.11gも現在普及し ています..無線LANについては別に資料がありますので,興味のあるひとはそれを 参考にしてください.
LANを利用する上では,図3.7に示される「ルータ」が重要な設定項目となってい ます.パソコンでLANを使用する際には,「ゲートウェイ」と呼ばれる設定項目が あり,ここに通常はルータのIPアドレスを入力することにより,他のネットワー クへの接続経路を利用できるようになります.
$ /sbin/route |
とすることにより,ゲートウェイの情報を知ることが出来ます.また,同様の情報 は,
$ netstat -rn |
とすることによっても調べられます.
日本の大学,学術機関が属するネットワークをSINETと言い,別図のような 構成となっています.この図には島根大学が載っていませんが,鳥取大学の先に ぶら下がる形になっています.この図を見ると,図3.12のようなメッシュ型であ ることがわかります.学内のLAN構成や学科のLAN構成は「スター型」が基本です.
この授業では基本的にLANに関することを学習します.
無線LANなどでは,直接の電気的な接続が不要ですが,通信網として接続して いることが重要です.
ビットの認識については,図4.1 (a) (b)のようなものをベースバンド伝送と呼 びますが,連続する「0」や「1」の認識,同期,信号の無いときと「0」の区別など 問題が多く,(c)に示す,マンチェスター符号化が実際に使用されています.
マンチェスター符号化をRubyスクリプトを利用して試してみることにしましょう. 例によって,スクリプトはダウンロード可能です.
#!/usr/bin/ruby data = ARGF.gets.chomp.split(//) space = " " bar = space + "-"*39 print " \t", space*40, "|\n" if data[0] == "1" print " \t", space*40, "|\n" print " \t", space*40, "|\n" print data[0], "\t ", bar, "\n" print " \t", "|\n" else print " \t", bar, "\n" print " \t", "|\n" print data[0], "\t ", bar, "\n" print " \t", space*40, "|\n" end str = "" for i in 1...data.size if data[i-1] == "1" && data[i] == "1" str = bar elsif data[i-1] == "1" && data[i] == "0" str = "|" elsif data[i-1] == "0" && data[i] == "1" str = space*40+"|" else str = bar end print " \t", str, "\n" print " \t", space*40*data[i].to_i, "|\n" print data[i], "\t", bar, "\n" print " \t", space*40*(1-data[i].to_i), "|\n" end |
利用法は,自分で"1"と"0"とで構成される任意の文字列を持つ1行だけのデキス トデータを作成しておきます.それを例えば, bit.txt としておくと,それをコマンドライン引数として与えること によりターミナル上に縦に時系列で並んだビット列表現を表示します.
$ ruby manchester.rb bit.txt
物理的,電気的接続方法を規定します.モデムによるアナログ通信規格のV90, イーサネットのケーブルなどの接続方式の約束事が含まれます.
コンピュータどうしの接続方式を決めます.LANではMAC (Media Access Control) アドレスによりコンピュータをユニークに特定できるようにします. 経路制御の基本となる階層です.コンピュータ本体ではなく,コンピュータへの 接続の物理的な「口」を規定します.
$ /sbin/ifconfig |
とすると,ここから始まる二つの階層に関する情報が得られます.注意すること は,ここには2つのインターフェイスが表示されていることです.また,MACアド レスが6バイトの16進表記(12桁)で書かれていることにも注意してください.世界中の 製造メーカーの機器を一意に特定するためにこの形式となっています.最初の3 バイトがメーカー別に割り振られていて,残りの3バイトがメーカーが規定した 記号になります.メーカーは このように公開されていますので,自分のインター フェイスをどこのメーカーが作ったのかがわかるようになっています.教室のパ ソコンのインターフェイス(これをネットワークインターフェイスカード, Network Interface Card, NICと言います)がどこ製なのか確認してみるのも良い でしょう.
コンピュータ本体への接続インターフェイスを特定するための約束事を決めます.LANではIP接続に関する ことがこの層に含まれます.先ほどの ifconfig によって表示された IPアドレスが実際には対応しますが,これも単なる「インターフェイス」ですの で,コンピュータ本体と1対1に対応しているわけではありません.
また,先ほ ど指摘したように,ifconfig の結果は2個表示されています.インターフェイ ス,すなわち,「境界,界面」ですので,その両側があることになります.自分 のパソコン自身を表すアドレスはループバックアドレスと呼ばれ るもので,先ほどは lo と表示されていたものです.これには, 127.0.0.1 が割り当てられることになっています.パソコン の外から見た口が eth0 になります.
$ ping sv001 |
のようにネットワーク上での応答を確認する ping コマンドはこの層 で対応します.そのため,コンピュータ上で動作しているOSに依存しません.ま た,コンピュータ上でアプリケーションなどが不具合を起こしてフリーズしてい るような状態でも,通常は応答を返すことが良くあります.電源が入っているか どうか程度の確認が出来るだけとも言えます.
ping コマンドを打って接続確認するときには,自分に近い方から順に 確認するのが作法です.ネットワークがおかしいときには,ループバッ クアドレス,自分のアドレス,直近のルータ,の順に試して行きます. 例えば,教室や学科LANから外のwebページが見えなくなった場合,
$ ping localhost
$ ping 172.16.*.*
$ ping 172.16.3.254
$ ping 10.183.250.250
というように順に確認します.ここで,上の**は自分の環境を使います.最後の アドレスは3号館からの出口です.
コンピュータの中のどの目的で使用されるかにしたがって分類する方式を決めま す.TCP,UDPなどのプロトコルが規定されます.
実際にネットワーク接続を必要とするアプリケーションについて規定されます. SMTP,POP3,HTTPなどのプロトコルが含まれます.
オープンな相互接続方式の確立を目指してISOが中心となって規定した階層構造. 7階層に分類されているが,実際には5階層構造で利用されています.
以前はISDN回線を用いたデジタル接続が期待されていましたが,古くからあるア ナログ電話回線を利用できるxDSL技術の進展により,主流がxSDLの方に移りまし た.特に,非対称デジタル加入者線(ADSL)の普及が目覚しい発展を遂げました. 加えて,光ファイバを利用した高速回線,ケーブルテレビ網を利用した高速回線 など利用者の選択肢は増えつつあります.これらを「ブロードバンド」と呼びま すが,普及率は世帯比で10%を越えています.
電話線のケーブルの中は銅線が2本入っています.電話は全二重通信であり,同時 に双方が話すことが出来ます.この仕組は,双方の会話を伝送する周波数を違うも のにすることにより,一組の回線で二重通信を実現しています.一方,LANに使用 される「より対線」は4本使うことにより2本ずつを一組として全二重通信を行ってい ます.
誤り訂正も重要な機能です.以下にいくつか例を示してみましょう.
ビットの中に含まれる「1」の個数が偶数(奇数)であれば最後に「0」(「1」)を 付加することにより,1の個数は常に偶数になります.これを偶数パリティと言 い,1ビットの誤りが検出できます.逆に奇数になるようにビットを加えたもの を奇数パリティと言います.奇数個のビットの誤りも検出 できますが,偶数個のビットに誤りが発生した場合に検出できません.そのため,よ り進んだ方式が考えられました.
伝達するべきデータ 1010 追加ビット 0 (偶数パリティ) 合計 10100 のデータが伝送される 受け取ったデータが 11100 ビットの合計が奇数になり,エラーを含むことがわかるので, このデータは破棄される |
教科書の例はビットが多くて面倒なのでもう少し少ない系で確認してみましょう. 4ビットの情報に3ビットのハミング符号を付加する例を試してみます.そのた めには「排他的論理和」を知らなければなりません.演算記号を仮に+とすると, 表1の真理値表が得られます.
表1 排他的論理和の真理値表
0 + 0 | 0 |
0 + 1 | 1 |
1 + 0 | 1 |
1 + 1 | 0 |
4ビットの各データd1,d2,d3, d4,に対して,3つのハミング符号p1,p2, p3を組み合わせますが,その際の規則性としては,
d1+d3+d4+p1=0
d1+d2+d4+p2=0
d1+d2+d3+p3=0
となるようにすることです.1010というデータに対してハミング符号化を行うと,
1010010になります.送られて来たデータが1110010であれば,これを分解することに
より,p2とp3がおかしいことがわかり,これに共通して
存在するのが,d1とd2であり,p1の計算で
は問題なかったd1,d3,d4を除外すると,
d2に間違いがあることが判明します.もし,1011110という信号が来
ると,間違いがあることはわかりますが,訂正は出来ません.なので,2ビット
の誤りは検出機能のみになります.
10101010という情報を伝送するとします.教科書にあるようにそれに 216をかける,すなわち,0を16個右に加えたものが分子になります. 分母の方は,10進法の69665,16進では11021,2進数 に直すと10001000000100001 になりますが,その数となります.教科書にある x16+x12+x5+1はそういう意味です.これを 割り算するわけですが,注意するのは,通常の割り算のようにあまりを出すとき に引き算をしないで,排他的論理和を求めることです.以下に計算を示します.
10100000 ___________________________ 10001000000100001 ) 101010100000000000000000 10001000000100001 ----------------- --> 排他的論理和 10001000010001000 10001000000100001 ----------------- --> 排他的論理和 1010100100000 --> 余り |
情報を受け取った側でも同じ計算を行って,余りが等しくなればエラー無しと判 断できます.この方式では,複数のビット誤りがあっても検出可能です.
また,分子に余りを足したデータは分母で割り切れますので,それをエラーの有 無の判断に使う方法もあります.
実際にネットワーク伝送でエラーが発生しているのか,確認してみましょう. ifconfig コマンドでエラーの情報も表示されます.また,ネットワー クに関する統計データとして netstat コマンドも利用できます.UDP プロトコルに関するものであれば,
$ netstat -su
で表示できます.TCPは量が多いので,
$ netstat -st | less
のようにページャを使って見る必要があるでしょう.
$ netstat -st | head -11
の方が見るのには簡単かも知れません.head コマンドの詳細は jman コマンドで調べて下さい.
教室の中だけの利用ですと, ほとんどエラーは発生していないはずです.ネットワーク的に遠くにあるwebペー ジなどを閲覧すると,エラーが増えるかも知れません.
授業の終了20分前くらいに小テストを実施します.アナウ ンスに注意してください.また,提出は電子メールにより行いますので,メール の送信準備は忘れないでいて下さい.
Aクラス小テスト |
Bクラス小テスト |
授業の終りに宿題の説明をしますので,アナウンスに注意してください.
Aクラス宿題 |
Bクラス宿題 |