Network基礎知識
名前解決
DESC
TCP/IP 通信では IPアドレスが分れば通信はできる。
しかし数字で表すため、覚えずらい。
また IP はホストが所属するネットワークに関係しているため移動すると値が変わってしまう。
そこで、名前をつけておくことで
覚えやすく、変更があった場合でもクライアント側が代えなくても良いようにした。
携帯の電話帳の名前から電話をかけるのと同じ。
あくまで IP による通信は全てIPアドレスを指定する。
InterNetwork だけではなく, LocalAreaNetwork でも必要です
POINT
索引をする方法はこんなものがある
IPAddress を知ることが, 目的で DNS はそのひとつにしかすぎないこと
WindowsNetwork では Computer名をつけてます
// InterNetwork での名前解決
(.) DNS
// LocalNetwork にはこんな仕組みがある
(.) BroadCast // 全員に呼びかけ
(.) LMHOSTS/HOSTS // 設定ファイル方式
(.) WINS
DNS
DESC
Internet でつかわれてる 名前解決方法
ホスト名(www.google.co.jp)とIPアドレスの対応表を管理した分散データベースのこと。
DNS(DomainNameSystem)Serverが.Host名.をIPAddress.を変換する。
LAN で DNS による名前解決 をするためには 自前で DNS Server を用意する
Network 内の IPAddress <-> PC名の対応表をもたせれば良い
Domain を取得していないときは 慣例的に [ local ] とつける
名前が foo だったら, 完全修飾ドメイン名 は foo.local
POINT
PC名 + DomainName となる
TCP/IP 通信では 相手の IP がわかっていれば通信できる。
でも数値ではわかりずらい
そこで名前( DomainName )とIPを関連づけようということになった。
この仕組みを DNS と言う。
POINT
11.123.123.11 <-> nantoka.com
// 電話番号の変換と同じです
090-xxxx-xxxx <-> 佐藤さん
dot 表記とは
www.so-net.ne.jp
www : Domain 取得者が自由につけて良い
so-net: Domain 取得者が自由につけて良い
ne : 組織の種類
www.so-net.com
gTLD : generic Top Level Domain ( だれが取得しても OK )
DomainName には 商標権 は配慮されない.
* DNS Server に問い合わせている
* 近年では、日本語など各国独自の言語
文字でドメインを登録できる国際化ドメイン名も利用できるようになった
DNS とは
* 全世界のDNSサーバが連携して運用する
* 一つのドメインに複数のIPアドレスを対応させたり
一つのIPアドレスに複数のドメインを対応もできる
* DNSServer は自分が管理するネットワークの IP <-> DomainName を相互変換する
実世界の住所のように階層になっていて[ . ]で区切って表す。
// 一番が右が TOP です
[ThirdLevelDomain][SecondLevelDomain][TopLevelDomain]
Domain には種類がある
// 国ごとにわりあて
(.) ccTLD(country code TLD)
// 国や地域とは関係なく別の基準でわりあて
(.) gTLD(generic TLD)
トップレベルドメイン
ドメインが重複しないよう、ドメイン管理はICANNという組織が一元管理してます
ICANNから委任を受けた各国の機関が割り当て業務をしてます
日本の ccTLD であるJPドメイン(.jp)はJPNICが管理する
TIP
Internet, Mail は WebServer, MailServer と[ 通信 ]することでできる
階層構造の電話張( 関連つけ )
XXX さんは <-> 090-xxxx-xxxx
foo@bar.co.jp
[jp] を管理している. DNS Server に IP 問い合わせると答えを教えてくれる
@ の後が DomainName ( Computer のこと )
DomainName <-> IPAddress ( Computer に対して 一意につけられるアドレス. )
nslookup
tracert www.google.com
tracert www.google.com -> stracert 210.111.222.333 と変換
Domain 名 == LAN 名
自分の IP 情報を見てみる
> ipconfig /all
Windows IP Configuration
Host Name . . . . . . . . . . . . : xxx
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Unknown
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
Ethernet adapter ローカル エリア接続:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Realtek RTL8139/810x
Family Fast Ethernet NIC
Physical Address. . . . . . . . . : xx-xx-xx-xx-xx-xx
Dhcp Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
// 自分の IP です
// Private Address です
IP Address. . . . . . . . . . . . : 192.168.0.2
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.0.1
// DHCP サーバの IP Address
DHCP Server . . . . . . . . . . . : 192.168.0.1
// DNS Server の IP Address
DNS Servers . . . . . . . . . . . : 192.168.0.1
Lease Obtained. . . . . . . . . . : 2010年4月29日 6:49:22
Lease Expires . . . . . . . . . . : 2010年4月30日 6:49:22
nslookup で DNSServer に問い合わせて, FQDN を IP Address に変換します
// google.co.jp の IPAddress を教えて !
nslookup google.co.jp
[ . ] は 名前の階層だった. DNS に対して責任範囲を限定させる
DNS suffix = local ( 設定されている )
名前とIPアドレスの変換は
DNSサーバに名前に対応するIPアドレスを質問します
DNSサーバは、問い合わせを受け取ると対応した対応するIPアドレスを教えてくれる。
教えてもらったIPアドレスで通信できる。
しかし ひとつのDNSサーバでインターネット上の全ての名前と全てのIPアドレスを一箇所で把握するのはムリ。
そのため、名前情報を一箇所で集中管理しなくても良いように、
DNSは自律分散協調するシステムとしてできている。
具体的には
[ 名前に階層を持たせ ]て各DNSサーバに各自の守備範囲を持たせている
[ RootDNS ]
|
[jp] [net] [com]
|
| |
[co.jp] [or.jp]
|
[yahoo.co.jp] [google.co.jp]
こんな順番
// xxx.co.jp の IPAddress を知りたい!
1. 自分の所属する Network 内の DNS Server に聞く
2. わからないなら, ROOT JP に聞く
2. co.jp にきく
3. xxx.co.jp にきく
4. わかった!
Broadcast
DESC
Network 上のすべての PC に一斉に呼びかける。
そして、呼ばれたコンピュータは自分の IPAddress を返す。( 返事をする )
WindowsNetwork で NetBIOS over TCP/IP が ON になっているとこの手法が使える。
呼びかける 名前は TCP/IP のホスト名ではなく, DNFQ ではなく, NetBIOS 名です
WARNING
同一 SubnetMask しか使えません
LMHOSTS/HOSTS
DESC
LMHOSTS.SAM という テキストファイルに IP <-> PC名 という情報を記述しておく。
TCP/IP Property > [WINS]
WARNING
次のようなデメリットがある
すべての PC に用意する必要がある。
変更、追加があるとそのたびに追加しないといけない
WINS(WindowsInternetNamingService)
DESC
DNS と同じく , IPAddress <-> コンピュータ名を変換する方式
* 違うのは DNS が
HostName + DomainName で Computer を管理して
WINS は
NetBIOS名 で管理すること
名前解決
サーバに再帰的に問い合わせて結果を得るというシステム
例えば
example.comというドメイン内のあるユーザーが
www.foo.co.jpというホストのIPアドレスを探す場合
まず最初はexample.comのDNSサーバに問い合わせる
しかしこのDNSサーバは、example.com の内部のホスト名しか管理しておらず
他のドメインの情報は持っていない
そこでこのDNSサーバは、DNSの階層構造ツリーを逆にたどって
まずjpドメイン内のホストを管理しているDNSサーバを見つける
次に、そのサーバを使って、co.jpドメインを管理しているDNSサーバを見つけ
さらに foo.co.jp を管理しているDNSサーバを見つけ、最終的には
そのDNSサーバに対してwwwというホスト名の検索を依頼する
その結果が最初にDNSの検索要求を出したマシンに伝えられ、名前解決 が完了する
* IPAddress は通信をするすべての Program に使われてます
IPAddress.と.MacAddress.の対応
DESC
internet では IP Address が付加した data が行き来している
MacAddress が最終的な Address ( IP Address を変換する必要あり )
ARP ( AdressResoulutionProtocol )が解決してくれます
arp コマンドで IP <-> MacAddress の変換表がみる。
// > arp -p
Interface: 192.168.0.2 --- 0x2
Internet Address Physical Address Type
192.168.0.1 xx-xx-xx-xx-xx-xx dynamic
Web
DESC
WWW. Mail は Internet の利用したサービスひとつ。
HyperTextTransferProtocol (HTTP)
「http://」というのは「通信方式はHTTPを使いますよ」という意味
webを閲覧するときには
HyperTextTransferProtocol というプロトコルを利用して通信する
実は「http://」というのは「通信方式はHTTPを使いますよ」
と説明を意味する。
実は新聞や雑誌の広告に度々登場する「http://」というのは
「インターネットを使って通信を行う時のプロトコルはHTTPを使ってくださいね」
という意味
他にこんな通信方法( Protocol )がある。
HTTP の基礎的な部分はとても単純でわかりやすいプロトコル( 通信方法 )です
クライアントである web ブラウザ
はwebサーバに TCP でコネクションを張る。
出来上がった TCPコネクションを通じて「このページ下さい」
というとサーバは「ハイどうぞ」とページを渡してくれる。
HTTP の動作
[ Browser ] <-------------------> [ Web Server ] tomcat は WebServer なのか ?
| ( このページください ) --->
|
|
| <--- ( はい, どーぞ )
|
ブラウザにURLをいれると、こんなことおきてます
ブラウザはIPアドレスに向けて [ TCP コネクションを確立 ]しようとする。
TCPコネクションを確立するには、TCPヘッダを含むIPパケットを
webサーバへ送信する。
IPパケットを送信するためにブラウザが動作している機器のOS
は手元にある経路情報を確認して送信するネットワークインターフェースを調べます
調べた結果、機器に付属しているイーサネット経由でTCPパケットを送信すれば
webサーバに送れそうだという事がわかったとします。
送信するネットワークインターフェースがわかると
ブラウザが動作している機器は
TCPパケットをネットワークインターフェースに送信します
ブラウザが動作している機器から送信されたTCPパケットは
イーサネット経由でルータに届きます
ルータは、TCPパケットのIPヘッダを見て転送する先を考えます
ルータのバケツリレー
転送先は、ルータがもつ経路表を見て決まる。
ルータは次のルータに TCPパケットを転送する。
あとはこの繰り返し
[ RouterA ] ----> [ RouterC ] ------> ...
経路表
[---------]
[---------]
[---------]
[---------]
[---------]
[---------]
最終的にTCPパケットはwebサーバまで転送される。
webサーバは、転送されてきたTCPパケットを受け取ると
ブラウザがある機器に対して返事をする。
(webサーバが返事をできるのは
TCPパケットに送信元IPアドレスが記述されているためです。)
このようにしてブラウザの機器とwebサーバの間にTCPコネクションが確立します。
Header は 郵便物のあて先.
ブラウザは、作成したTCPコネクションを使って
-> ここまでは, 単なる[ コネクション処理 ]
HTTP プロトコルで www.yahoo.co.jp 内の「/index.html」というページを要求します
web サーバは、それに応答してページデータを送信する。
送信されたデータの記述を見てブラウザはページを表示する。
(データの記述にはHTML(HyperTextMarkupLanguage)という言語が使われます
但し、画像やその他言語によるデータがHTTP上に流れたりもします。)