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:// (.) ftp:// (.) https:// (.) gopher://
HTTP の基礎的な部分はとても単純でわかりやすいプロトコル( 通信方法 )です クライアントである web ブラウザ はwebサーバに TCP でコネクションを張る。 出来上がった TCPコネクションを通じて「このページ下さい」 というとサーバは「ハイどうぞ」とページを渡してくれる。 HTTP の動作
[ Browser ] <-------------------> [ Web Server ] tomcat は WebServer なのか ? | ( このページください ) ---> | | | <--- ( はい, どーぞ ) |
ブラウザにURLをいれると、こんなことおきてます
[ Browser ] // URL を打ちます // これは http 通信方式で送るんだな! // で送り先は xxx.xxxx.jp だな! // でもこのままだと送れないから, DNS に教えてもらおう // [http://xxx.xxxx.jp/xxx.htm]
ブラウザは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上に流れたりもします。)