class: title, smokescreen, shelf, no-footer # イーサネットの動作原理 <div class=footnote> <small><small> </small></small> </div> <div class=digest-begin-01></div> --- class: col-2,compact # ネットワークインターフェイス層はバケツリレー - ネットワークインターフェイス(以下NI)層は、 となりあうネットワーク機器間のやりとりを規定しています - IP(より上)は世界のどことでもEND-TO-END通信が目的(再掲) - ようするに**バケツリレー**です(図上側) - 右図の一番下では上の層と異なり隣同士の矢印が書いてあります。 これは**隣り合う機器のやりとり**を意味しています - NI層を代表するプロトコルが**イーサネット(Ethernet)**です ![height180px](images/bucket_relay_fire.png) ![height180px](images/bucket_relay_nimotsu.png) ![height320px](/images/network/end-to-end.png) --- class: col-2,compact # イーサネット <div class=footnote> <small><small> (脚注1) 図は覚えなくて大丈夫です。 図は両方ともイーサネットフレーム全体を表しています。 図(右)ではイーサネットのヘッダとトレイラを拡大し具体的に書いてあります。 どちらの図でも<B>左側が先頭</B>(headerが来る側)です <br> (脚注2) 仮想環境では管理システムがMACアドレスを生成・割当します (また本来は一意のはずですが書き換えるツールとかも...;-) <br> (脚注3) イーサネットは物理的な動作も規定しているのでOSIモデルではレイヤー1と2にまたがります </small></small> </div> <small> - NI層のデータ塊はパケットではなく**フレーム**と呼びます - ヘッダ(header) ... 先頭部分 - トレイラ(trailor) ... 最後尾 - 下図(左)はフレーム全体、 下図(右)は同じくフレーム全体ですがイーサネットヘッダ詳細版 ![](/images/network/ethernet-packet.png) <wbr> - イーサネットつまりネットワークインターフェイスの識別子が**MACアドレス** - **MACアドレス** - **48ビット**の「イーサネットの識別子」 - 工場出荷設定で一意 - **48ビット**を**8ビットごとに:区切り16進数**表記 <br> 例: 12:34:56:78:90:AB ![](images/ethernet-frame.png) </small> --- class: img-right,compact # ブロードキャストをふりかえりますが... <div class=footnote> <small><small> (脚注) 左上のPCからイーサネットフレームを送信すると、 全PCが受け取っている様子を書いているつもりです。 ヤギさんが封筒(フレーム)を運んでいます。 ヤギさんが各PCに<B>同時に届けている</B>様子までは書いてないんですけど、 手紙の絵で察してほしい:-) </small></small> </div> ![width480px](images/bus.png) <small> - **同一セグメントにあるホスト(群)へパケットを一斉に送信したい**場合に使うIPアドレス - ネットワーク機器ではMACアドレスが**FF:FF:FF:FF:FF:FF**宛のイーサネットフレームを**必ず受信しなければならない**という決まりなので、 これを利用します。 イーサネットフレームを特別な宛先(FF:FF:FF:FF:FF:FF)へ送信すれば、 全ホストがそのフレームを受信するわけです - IP層でIPパケットをブロードキャストアドレスへ送信すると、 NI層では、 そのIPパケットを包んだイーサネットフレームを作り、 FF:FF:FF:FF:FF:FF宛に送信します。 これが**ブロードキャストの動作原理**です </small> --- class: col-2,compact # ブロードキャストが動作する理由 <div class=footnote> <small><small> (脚注) alohanet = 「アロハ〜」で分かるとおり、ハワイの(研究用)無線ネットワーク。 N. Abelsonが「ハワイでサーフィンしたいなぁ、ハワイの大学に転職するか〜」と、 ハワイに行って無線ベースで作りあげたネットワークのこと。 当時(ARPA初期)のIMP(ルータの先祖)はコンピュータ直結型の違う原理で動いています。 では一つのネットワークに複数のコンピュータをつなぐとどうなるの? を実際にやってみた -> かなり困るぞ...どう解決する?という話です。 R.M.MetcalfeはAlohanetを見てイーサネットを開発しました </small></small> </div> <small> - なぜブロードキャストが出来るのかというと、 もともと接続している全ホストに通信が見える想定だから。ここに注目 - もともと一つの同軸ケーブル(図左下の黄色いケーブル)に全ホストが接続しているので、 全デバイスに電気信号が見えています - イーサネットのアイデアには無線ネットワークのalohanetが影響を与えているそうなので、 通信が全員に見えるという想定に納得ですよね </small> ![height240px](images/bus.png) <br> ![height120px](images/PD_yellow_cable_Leaky1.jpg) ![height120px](images/radio_amateur_musen_woman.png) ![height120px](images/machine_transceiver.png) --- class: img-right,compact # <small>CSMA/CD(Carrier Sense Multiple Access with Collision Detection)</small> <div class=footnote> <small><small> (脚注1) <B>/</B>は発音しないか with (with を w/ と略しますね) (脚注2) ちなみに無線LANは<B>CSMA/CA</B>という方式です。 </small></small> </div> ![height400px](images/bus.png) <small> - 普通の(ユニキャストな)通信では、送信するホスト1台を決め、そのホストだけが送信します (ブロードキャストは例外です) - 複数のホストが同時に送信したら電気信号が重なりあい読み取れません;-)。 すでに物理な話をしていますが、レイヤー1は、そういうものです - **送信するホスト(一台)を決める**には**CSMA/CD**というプロトコルで**調停**します - CS = 他に通信しているホストがいないことを確認、信号の感知 - MA = 複数のホストが共有している回線(=media)を使い通信(=access) - CD = 衝突(Collision)の検知(Detection) </small> --- class: col-2,compact # 応用: ARP (Address Resolution Protocol) <div class=footnote> <small><small> (脚注) 毎回ARPするのは無駄なので得られたIPは一定期間記憶します(arp cache)。 初心者は障害対応で機器を入れ替え時にcacheを忘れがち。 <b> 知識ではなく、 どういう理屈で動いているかが頭に入っていけないといけない典型例 </b> </small></small> </div> <small> - NI層ではARPで通信相手(のMACアドレス)を探します (こうやって隣の機器を自動探索しています)。 **「ブロードキャストで全ホストに尋ねれば該当ホストから答えがもらえる」** ことを利用 - ARPパケット(おねがいIP〜のホストの方こたえて)をブロードキャストすれば、 該当するIPアドレスのホストが返事を返します。 返事のイーサネットフレームの送信元MACアドレスが探していた情報 (**該当ホストのMACアドレス**)です - ブロードキャストでARPを送信 - 送信先FF:FF:FF:FF:FF:FF - 送信元12:34:56:78:90:AB <br>(自分のMACアドレス) <wbr> - 返事のイーサネットフレームは - 送信先12:34:56:78:90:AB - 送信元xx:yy:zz:ww:pp:qq <br> (**該当ホストのMACアドレス**=知りたい情報) - これで隣の誰(xx:yy:...)のMACアドレスが分かったので、 xx:yy:..宛にフレームを送信できます </small> ![height240px](images/bus.png) --- class: col-2,compact # 応用: DHCP<small>(Dynamic Host Configuration Protocol)</small> <div class=footnote> <small><small> (脚注1) PC教室のPCが起動するときが典型例 (脚注2) もちろんスマートフォンのIP設定もDHCP </small></small> </div> <small> - 自動でOSのネットワーク設定をします - DHCPのおかげでOSの設定を手動で操作しなくてもすみます。 PC教室や家庭、無線LANなどあらゆるところで動作しています - PC等の起動時にOSの設定情報をサーバに問い合わせます - **起動時のPCは自分のIPアドレスすら分かりません**。 もちろん問い合わせるべきサーバのIPアドレスやMACアドレスも知りません - そこでブロードキャストを使います - ブロードキャストでDHCPリクエストを送信 - 送信先FF:FF:FF:FF:FF:FF - 送信元12:34:56:78:90:AB <br>(自分のMACアドレス) <wbr> - DHCPサーバが返事をくれます - 送信先12:34:56:78:90:AB - 送信元xx:yy:zz:ww:pp:qq <br> (**サーバのMACアドレス**) - DHCPサーバからの返事(パケット)にネットワーク設定情報が含まれているので、 それをPCに設定します (今回は、この返事に含まれるネットワーク設定が知りたい情報) </small> ![height240px](images/bus.png) --- class: img-right,compact # 転送効率の向上、スター型への変更 <div class=footnote> <small><small> (脚注1) スター型はハブ-スポーク型(自転車の車輪)とも言う (脚注2) 図のHUB部分に使うネットワーク機材の名称と役割も調べてみよう(基本情報に出ます!): ハブ、リピーター、ブリッジ、ラーニングブリッジ、スイッチングハブ(=スイッチ)は、 何が違いますか? </small></small> </div> ![](images/bus-to-star.png) <small> - **バス型**(図左)では、ホストが増えるほど衝突が増えていきます (CSMA/CDの理屈を思い出せ!) - 商用インターネット時代に入ると、イーサネットの規格も10BASE-Tが主流になり、 それ以降は**スター型の接続**になります(図右) - どの型でも、ブロードキャストの動作原理は同じですが、 スター型の中心に置く機材(図のHUB、現代では**スイッチングハブ(スイッチ)**) が通信の様子を学習して、**無関係なホストへ通信を見せない**ようにしています。 つまり**衝突を回避**しているため、 **転送効率が向上**しています <div class=digest-end-01></div> </small>