##master-page:SlideShowTemplate ##master-date:Unknown-Date #format wiki = = {{{#!wiki slidetitle slidemargin center large Das Netzwerk Seminar (Zwei) }}} {{{#!wiki slidetitle center larger alstamber }}} = 今回やること = * 前回の復習 * OSI7層参照モデル * MACアドレス * ARP * ICMP * ルーティングとスイッチング * その他のプロトコル = 前回の復習 = * 小テストをやりましたが。。。 * サブネットマスクの理解が微妙だったので、もう一度説明します = OSI7層参照モデル = * ネットワークは階層構造になっている * ネットワークを利用したプログラムを作りたいとき、電気信号の挙動に気を配るのは嫌だ * おのおの担当領域を決めて、それぞれがそれぞれの役割を果たすようにしている * アプリケーション層 * プレゼンテーション層 * セッション層 * トランスポート層 * ネットワーク層 * データリンク層 * 物理層 * 上3つは一括りにしてしまうこと多数 * DNSやHTTPなどアプリケーションの実装に関わる層 * トランスポート層はデータをアプリケーション間でどう通信するかを規定している * ネットワーク層はネットワークを構築する上で必要なルールを決めている * データリンク層と物理層は最低限通信するために必要なルールを定めている = OSI7層参照モデルとデータの流れ = * 絵を描いて説明します = ネットワークの構成要素 = * NIC * スイッチングハブ * データリンク層の相互接続を担当 * ルータ * IPネットワーク同士の相互接続を担当 * ゲートウェイ * プロトコルの違うネットワークの相互接続を担当 = データリンクとは = * 前回の話よりもっと物理的な部分に近い話をしましょう * 有線通信の本質は、電気信号を相手に送信すること * ここの話は今回はしない * 電気信号を送信するという話と、ネットワークでの通信という話の間にあるもの * 取り合えずコンピュータとコンピュータがまともに通信できる方法を確立する必要 * →データリンク = データの各層間の移動 = * データはアプリケーション層からネットワーク層、データリンク層、物理層と降りていって電気信号に変換される * 途中のルータなどでネットワーク層やデータリンク層の情報が参照される * この話はルーティングとスイッチングの話の時に詳しく = MACアドレス = * データリンクに接続しているコンピュータを識別するためのアドレス * NICについている == MACアドレスの構造 == * 48bitsの長さ * 1bit...ブロードキャストアドレスかそうでないか * 3~24bit...ベンダ識別子 * 25~48bit...ベンダ内での識別子 * 唯一性が保証されている = イーサネット = * データリンクを実現するための現在もっとも主流の方式 * IEEE802.3に規定されている * 基本的にCSMA/CD方式を採用(一部では採用していない) * データを送信したくなったら早い者勝ちでデータを送りつける * 全二重通信と半二重通信 = イーサネットのフレーム構造 = * イーサネットではデータの一塊をフレームと呼ぶ * 宛先MACアドレスと送信元MACアドレス * SNAP * プロトコルを表すためのもの * FCS * フレームが壊れているかどうかをチェックするためのbit = IPとデータリンクの関係 = * IPは最終目的地までの通信を提供する * データリンクは1区間(1ホップ)の通信を提供する * 送信元と送信先の間には複数のスイッチングハブやルータが存在する * データリンクはそれらの機器間の通信を担当している * IPはホップバイホップルーティングしている * 1区間毎にルートが決定され、パケットが転送される * こういった行き当たりばったりな方法をad hocという * 電車の乗り換えを例に説明します = IPアドレスとMACアドレスの変換 = * 宛先IPアドレスが分かっている状態で、次にパケットを送るべきコンピュータのMACアドレスを調べたい * ARPと言うものを使う = ARP = * ARP要求パケットをブロードキャスト * ARP応答パケットをそれに対して返す * ARPによって得られたMACアドレスはキャッシュされる = RARP = * ARPの逆で、MACアドレスからIPアドレスを得る = ルーティング = * IPアドレスだけでは目的地にパケットを届けることはできない * 「この宛先に送るためには、ここにおくればよい」という情報が必要 * こうした経路を決める制御をルーティングという * IPで通信する機器は必ずこのルーティングのための表(ルーティングテーブル)を持っている * ルーティングテーブルの作り方 * ダイナミックルーティングとスタティックルーティング * 驚くことにIPそのものにはルーティングテーブルの作り方は決められていない!! = IPアドレスとルーティング = * ルーティングテーブルにはネットワークアドレスと次にどのルータにパケットを送信するべきかがかかれている * 一致するネットワークアドレスが複数ある時はより長いほうに送信する == デフォルトルート == * 一致するものがないときにはここにおくることにする * 無駄な記述を減らせる * 0.0.0.0/0 または defaultとかく == ホストルート == * IPアドレス/32 * IPアドレス全てを使ってルーティングを決める == ループバックアドレス == * 前回やったね! = ルーティングテーブルの集約 = * より効率の良いルーティングテーブルを作るには = ルーティングを理解するためのコマンド = * netstat -r * traceroute = ルーティングの実際の例 = * AからBにIPをつかってデータを送ろう * Aは自分のルーティングテーブルをみて、Bにデータを送るにはどのルータに送ればいいかを調べる * IPを使っているのでデータの行き先をきめるのはIPの機能であるルーティングを使う * そのルータにデータを届けるのはデータリンクの役割 * ルータのIPアドレスからルータのMACアドレスをARPを使って調べる * データリンクのレベルでとりあえずそのルータにデータを運ぶ * ルータはデータを受け取ったら、自分のルーティングテーブルをみて、Bにデータを送るにはどこに送ればいいかを調べる * 行くべき先が決まったら、そのルータのMACアドレスをARPで調べる * データを実際にルータに届けるのはデータリンクの仕事 * 次のルータへデータを運ぶ * これを繰り返す * Bが所属しているネットワークのルータにデータがたどり着く * ルータはBのMACアドレスを調べてBに対してデータを送る * 最終的な行き先まで運ぶことを管理しているのはIPの仕事 * ネットワークからネットワークへ、どのルータを通ればいいかを管理している * 最終的な行き先まで運ぶために機器と機器の通信を管理しているのはデータリンクの仕事 * IPのルーティングできめられた次の機器へデータを運ぶ = スイッチング = * いちいち全部にデータを送るのは極めて無駄 * スイッチングハブの機能 * つながっているコンピュータのMACアドレスを学習して、必要なポートにだけデータを出力する * スイッチングハブはルータのようにネットワークとネットワークを切っているわけではない * ネットワークを拡張するためのもの * それにスイッチングという賢い機能がついている = IPアドレスとMACアドレス2つも必要? = * 別のネットワークにつながっているコンピュータにデータを送ることを考えよう * ルータを跨がなければいけないので、相手のMACアドレスが分かっていても直接データを送ることはできない * どこのルータを経由して相手にデータを送るかという情報が必要 * 通信するためにはデータリンクを使わなければいけないので、ルータのMACアドレスを知る必要がある * ARPが必要になる * MACアドレスしかないとどうなるか * スイッチが学習するまではとりあえず世界中にパケットが流れていくことになる * 想像してみるとおぞましい * IPアドレスのおかげで、インターネットを構成する小さなネットワークごとに区切ってデータの流れを管理できる * 両方が協調することが必要 = ICMP = * パケットが届かなかったときにこのプロトコルを使って障害の通知が行われる = ICMPメッセージ = * おもにエラーを通知するためのものと診断を行うためのもの == ICMP Destination Unreachable Message == * 相手に到達不能であることを示す == ICMP Redirect Message == * 最適な経路ではなかったことを示す == ICMP Time Exceeded Message == * TTL == ICMP Echo Request Message == * pingはこれを使っている = VLAN = * ネットワークをつなぎかえずにネットワークの構造を変える技術 = その他のプロトコル = * 今回の講習では一部のプロトコルしか扱わなかったが、他のプロトコルについてもどういうものなのかぐらいは覚えてほしい * DHCP * 今から説明する * NTP * 時計を合わせるためのプロトコル * SMTP, POP3, IMAP * メール関連 * FTP * ファイル転送 = DHCP = * ネットワークにつないだりつながなかったりする機器のことを考えよう * e.g. MMAの無線LAN * いちいちコチラ側でIPアドレスを決めるのは面倒臭い * →予めIPアドレスのストックを用意しておいて、必要になったらそれを割り当てるようにすればいいじゃん!俺天才 * →→DHCP = DHCPの動作原理 = * DHCPのためのサーバを用意する * サーバには予め、割り当てるIPアドレス・サブネットマスク・デフォルトゲートウェイを設定しておく。 * DHCPでIPアドレスを割り当ててほしいコンピュータはまずDHCP Discoverメッセージを送る * DHCPサーバのアドレスおよび自分のアドレスがわからないので、255.255.255.255を送信先、0.0.0.0を送信元としてとりあえず全員に送りつける * DHCPサーバはそれを受け取ったらDHCP Offerメッセージを返す * DHCP Offerメッセージを受け取ったら、それを受けてDHCP Requestメッセージを送る * DHCP Requestを受けて、DHCP Ackメッセージを送る = 動的割り当てと静的割り当て = == 動的割り当て == * 一定の期限付きで、IPアドレスをストックから適当に割り当てる方法 * 期限が来たらIPアドレスを放棄するか、期限の延長を求める == 静的割り当て == * クライアントのMACアドレスに対応するIPアドレスを決めておき、それを要求に応じて割り当てる方法 * つなげば必ず同じIPアドレスが割り振られる