通信の基本要素を説明します.
名前
多数の機器が通信を行う場合,お互いを識別する名前が必要です.例えば航空機の機体内の機器の通信を行う場合,各機器に番号1,2,...,nを設定し, 通信相手を特定することになります.

世界規模のネットワークを構築する場合,数桁の整数では制御できません.
電話機の場合
電話番号という多数の桁を持つ数値「8190534653」とか「282345623」といった番号が割り振られており,番号を指定することで特定のデバイス間の通信が可能になります.この桁は次のように分割して考えることができます:

- 最初の0は国内通信.それ以外の場合,国番号(USA:1 UK:44 JP:81等)
- 50ならIP電話,70, 80, 90: 携帯電話など.それ以外は都市域(京都75, 福岡92等)
- 次の3桁あるいは2桁で,細かい地域を指定
- 最後の4桁でデバイスを識別
はっきりさせるために, 81.75.383.3772 という風に記述することもあります.
TCP/IP4(俗にインターネット)の場合
8ビット数(0-255)の数字を4個組み合わせた32ビットでデバイスを特定します.これをIP-ADDRESSと言います.電話番号とは異なり,個体識別に利用する桁数を自由に選べるように
ネットマスク
と組み合わせて利用します.具体的には,ネットマスクが24の場合, 最初の24bitが組織を表すネットワーク部分で,残りの8bitでデバイスを識別します.IPアドレスが10.249.229.222でネットマスク24の場合, 二進法で表して
10 . 249 .229 .222 IPアドレス
00001010.11111001.11100101.11011110
255 .255 .255 .0 netmask
11111111.11111111.11111111.00000000
となっていますので,結局 10.249.229 がネットワーク,222がデバイスを表すことになります.面倒なので,この場合, 10.249.229.222/24 と書くこともあります.
IPアドレスには,いくつかのルールがあります:
- 最初のbitが0のもの(0.0.0.0-127.255.255.255)は「クラスA」,netmaskは8である.
- 世界の中で127組織は, それぞれ16777216台のデバイスを持つことができる
- 最初のbitが10のもの(128.0.0.0-191.255.255.255)は「クラスB」でnetmaskは16.
- 世界の中で65409社は,それぞれ65536台のデバイスを持てる
- 最初のbitが110のもの(192.0.0.0-223.255.255.255)は「クラスC」でnetmask24.
- 世界の残りの4294901504社は,社内のPCの数の上限は128台
作り方があまりにもテキトーだったんで,大変困ったことになりました.「インターネット」の創始者たちは,まさか,インターネットを世界中の人が使うとは予想できなかったのです.具体的問題点は
- いかに大きな会社でも,16777216台のPCを持つ組織は存在しなかった
- ちょっとした会社でも,社内のPCの数は128台を超えていた
大変困ったことになったので,2つの対策が取られました.
- 32bitを128bitに変更した,全く異なるTCP/IP Version6システムを作る
- だめですねこれ.互換性がないものは,だめなんですよ
- なんで192.254.254.254なら続く64bitもアドレス,と拡張にしなかったのか?
- 社内では「プライベートアドレス」を用いる
プライベートアドレスは,内線電話と同じく,世界とは切り離された「社内システム」です.以下のアドレスがプライベートアドレス専用に割り当てられています:
- 10.0.0.0-10.255.255.255 社内デバイス総数が65536台以上の組織が使います
- 172.16.0.0-172.31.255.255 社内デバイス総数が128台以上の組織が使います
- 192.168.0.0-192.168.255.255 ご家庭で使います
例えば京大桂キャンパスでは 10.X.X.X というアドレスを利用していますが,これはCLASS-Aのプライベートアドレスであることがわかります.ご家庭のPCで「IPアドレス」を調べれば, NTTでもKDDIでもSoftbankでも,192.168.X.X のアドレスになっているはずです.
プライベートアドレスは,内線番号ですから,組織外部とは通信できません.電話機の場合,次のような方法をとっています:
- 0をダイヤルすると,電話交換手
に接続されますので,そこで「ええっと,東京大学に接続してください」などと交渉して接続してもらいます.すると相手の電話交換手が出るので,そこで「XX先生をお願いします」と言って,相手の内線に接続してもらう.(「となりのトトロ」での電話のかけ方ですね) - 人件費が嵩む現代では,0をダイヤルすると外線に接続されるので,そこから通常の電話番号をダイヤルすることで代行しています.
インターネットでも同じ方法を採用します.
- 各PCは,外線に接続したくなったら,proxyサーバーというマシンに接続し,「ええっと 130.54.23.333にをお願いします」と交渉します(噛んだ〜).
- proxyサーバーが接続した先が相手のproxyであれば,まあその内部で適当に処理されます.
気をつけなければいけないのは,proxyサーバーに内線番号を聞くと,動作しないことです.具体的には,研究室内部のPC 10.249.229.43 が, 隣のサーバー 10.249.229.222 に通信したい場合に,proxyサーバーに
「10.249.229.222に繋いで〜」
と頼んでも
「いいです・・・っと?それ内線番号じゃん?どこの会社の内線か知らねーし,ねぐったろ」
となり,通信できません.proxyは外線ですから,隣のサーバーへの電話には使いません.隣へは,直接電話すれば良いのです.そこで,ソフトウェアによっては
特定のネットマスクやIPアドレスについては,proxyサーバーを利用しない
という設定が可能になっている場合があります.
ネームサーバー
IPアドレス 10.249.229.222 とか電話番号 81.75.383.3772 などの数字の羅列は, 非常に覚えにくく使いにくいものです.そこで,文字列で表現することを可能にする仕組みがあります.「ネームサーバー」です.これは,数字の羅列であるIPアドレスと,ドメイン名という文字列の写像を定義するものです.
MacおよびLinuxでは,ネームサーバーに直接問い合わせができるコマンド dig が用意されています. 使い方は簡単で, dig 名前 です.例えば www.yahoo.co.jp を調べると:

digは, DomainNameService(DNS)サーバーに問い合わせ,その結果, www.yahoo.co.jp の別名(CNAME)が edge12.g.yimg.jp であり, それはクラスBアドレス 183.79.250.251 であることがわかります.(edge12 にCNAMEされているのは,負荷を分散させるためです). なお, DNSサーバーがどこにいるかも表示されます:

なお, こういったコンピュータの名前「ホスト名」のうち, 最初の edge12 が本当の「ホスト名」であり,後ろの g.yimg.jp を「ドメイン名」といいます.京都大学の学内ネットワークでは, DNSサーバーは
- 10.224.253.1 idns-1.kuins.net
- 10.224.254.1 idns-2.kuins.net
を利用することになっていますので,これらを設定するケースがちょくちょくあります.流体力学研究室にもDNSサーバーはあります:
- 10.249.229.246 sun0.229.249.10.1016485.vlan.kuins.net
- 10.249.229.111 sun1.229.249.10.1016485.vlan.kuins.net
- 10.249.229.223 ib2007-1.229.249.10.1016485.vlan.kuins.net (Core2Duoのゴミ.そのうち消える)
- 10.249.229.225 ib2007-3.229.249.10.1016485.vlan.kuins.net (Core2Duoのゴミ.そのうち消える)
一つ一つのネームサーバーは,しかしながら,世界中の全ての「名前」を知っているわけではありません.上記京都大学のネームサーバーが知っているのは,*.kyoto-u.ac.jp のマシンと,自分の親,つまり *.ac.jp を管理するネームサーバーだけです.そこで,自分が知らない名前は,おとうちゃんに聞けば良い.おとうちゃんが知らない名前は,当然,おじいちゃん(*.jp)に聞きに行きます.それでわからないってのは,おじいちゃんの兄弟(フランス人 *.fr とか, アメリカ人 *.com, *.edu, *.gov とか)に聞けば,順にわかるはず.例えば, www.egr.msu.eduの場合, *.eduに聞けば, *.msu.eduの詳細がわかり,*.egr.msu.edu に聞けば,www.egr.msu.edu がわかるわけです.これで,世界中の名前を解決できます.
DNSサーバーを利用することにより,
- ユーザーは, Yahoo検索を183.79.250.251と覚えず, www.yahoo.co.jp と覚えれば良い.この方が圧倒的に覚えやすい
- 183.79.250.251のマシンが暴走しても,www.yahoo.co.jp の割り振り先を瞬時に切り替えることによって,サービスを停止させずに済む
という利点が生まれます.欠点は
- DNSサーバーを制圧すれば,ネットワークの改竄が思いのまま
になるところですね.