class: title, smokescreen, shelf, no-footer # <small>情報技術応用特論 第04回<br>TCP/IP(4) ネットワークインターフェイス層</small> <div class=footnote> <small><small> Copyright (C) Ken'ichi Fukamachi <fukachan@fml.org>, 2021-2025. CC BY-NC-SA 4.0 </small></small> </div> --- class: compact,img-right # <small>全体像(郵便たとえ話、半ふりかえり)</small> <div class=footnote> <small><small> (脚注1) いつもの郵便たとえ話でいきます (脚注2) アプリケーション層の()内「処理をする」はデジタルデータ転送の話ではなく、 実際の処理をおこなうWeb APIサーバ(アプリケーション)の動作の話です。だから()でくくっています </small></small> </div>  <small> - アプリケーション層:手紙を開けて<b>内容を読んで、(必要な処理をし、)結果を返します</b> - トランスポート層: <b>書留郵便</b>。 郵便屋さんは確実に相手に届けることが必要です。 お届けの際には受領確認のハンコ(ACK)をもらいます - インターネット層: <b>普通郵便</b>。 郵便屋さんは各家のポストに投函して終了です。 相手が受け取ったか?は関知しません。 そもそも(投函以前に)配送途中で行方不明もありえます - ネットワークインターフェイス層: <b>回覧板方式</b>。 郵便物をご近所もしくは隣の町内へ渡していく方式。 目的地まで所謂バケツリレーです </small> --- class: title, smokescreen, shelf, no-footer # イーサネットの動作原理 <div class=footnote> <small><small> </small></small> </div> --- class: col-2,compact # ネットワークインターフェイス層はバケツリレー <div class=footnote> <small><small> (脚注) IP層より上では世界のどことでもEND-TO-END通信できることが目的です(再掲) </small></small> </div> <small> - ネットワークインターフェイス(以下NI)層を代表するプロトコルが**イーサネット(Ethernet)**です - NI層は、<B>となりあうネットワーク機器間のやりとり</B>を規定しています - 隣同士と<b>**バケツリレー**</b>です(図上側) - 右図の一番下では上の層と異なり隣同士の矢印が書いてあります。 これは**隣り合う機器のやりとり**を意味しています    </small> --- class: compact,img-right # イーサネットの動作原理の全体像 <div class=footnote> <small><small> (脚注1) 図は同軸ケーブルで各デバイスから電気信号を流す想定です。 一斉に通信をする=各自が勝手に電気信号を流す -> 全電気信号が重なり合う状態になります。 それを分解して読むとか出来ません。 【電磁気学】マクスウエル方程式は線形方程式だからね、ok? <br> (脚注2) 同軸ケーブルの写真は、付録を参照 -> <A HREF="#cables">こちら</A> </small></small> </div>  <small> - 共通のバスに全デバイスが接続されています - だから**一斉に会話(通信)**できます <small> - 【応用】目的地は誰ですか?を全デバイスに尋ねる (〜へ転送したいのですが、誰が渡すべき相手(目的地)でしょうか?) - 【応用】〜サーバさんは誰?を全デバイスに尋ねる </small> - 素のままでは効率よく一斉通信できませんけど... </small> --- 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) ... 最後尾 - 下図(左)はフレーム全体、 下図(右)は同じくフレーム全体ですがイーサネットヘッダ詳細版  <wbr> - イーサネットつまりネットワークインターフェイスの識別子が**MACアドレス** - **MACアドレス** - **48ビット**の「イーサネットの識別子」 - 工場出荷設定で一意 - **48ビット**を**8ビットごとに:区切り16進数**表記 <br> 例: 12:34:56:78:90:AB  </small> --- class: title, smokescreen, shelf, no-footer # <small>一斉通信できることを応用する</small> <div class=footnote> <small><small> </small></small> </div> --- class: compact,img-right # ブロードキャストの原理 <div class=footnote> <small><small> (脚注) 左上のPCからイーサネットフレームを送信すると、 全PCが受け取っている様子を書いているつもりです。 ヤギさんが封筒(フレーム)を運んでいます。 ヤギさんが各PCに<B>同時に届けている</B>様子までは書いてないんですけど、 手紙の絵で察してほしい:-) </small></small> </div>  <small> - **同一セグメントにあるホスト(群)へパケットを一斉に送信したい**場合に使うIPアドレスが<b>ブロードキャスト</b>でしたね? - MACアドレスが**FF:FF:FF:FF:FF:FF**宛のイーサネットフレームを、 ネットワーク機器は**必ず受信しなければなりません** 。これを利用してブロードキャストを実現します </small> --- class: compact,img-right # IPパケットとブロードキャストの関係 <div class=footnote> <small><small> </small></small> </div>  <small> - インターネット層でIPパケットをブロードキャストアドレスへ送信すると、 <b> NI層では、 そのIPパケットを包んだイーサネットフレームを作り、 FF:FF:FF:FF:FF:FF宛に送信</b>します - MACアドレスが**FF:FF:FF:FF:FF:FF**宛のイーサネットフレームを、 ネットワーク機器は**必ず受信しなければなりません** - 各デバイスで、ブロードキャストを受信後、中身を見て、適宜すてるなり反応するなり各自に対応してもらいます </small> --- class: compact,img-right # 応用: ARP (Address Resolution Protocol) <div class=footnote> <small><small> (脚注) 毎回ARPするのは無駄なので得られたIPは一定期間記憶します(arp cache)。 初心者は障害対応で機器を入れ替え時にcacheを忘れがち。 <b> 知識ではなく、 どういう理屈で動いているかが頭に入っていけないといけない典型例 </b> </small></small> </div>  <small> - NI層では通信相手(のMACアドレス)を自動探索 - **「ブロードキャストで全ホストに尋ねれば該当ホストから答えがもらえる」** ことを利用します。 このしくみが**ARP**です - 手順 - ARPパケット(「IPが〜の方こたえてください」)をブロードキャスト - 該当するIPアドレスのホストが返事を返す (この返事のイーサネットフレームの送信元MACアドレスが探していた情報 (**該当ホストのMACアドレス**)です) </small> --- class: compact,img-right # 応用: ARP (Address Resolution Protocol) <div class=footnote> <small><small> (脚注) ふつうARPはカーネルのネットワーク機能の一部です </small></small> </div>  <small> - ブロードキャストでARPを送信 - 送信先FF:FF:FF:FF:FF:FF - 送信元11:22:33:44:55:66 <br>(自分のMACアドレス) - ARPパケットの中身には「IPアドレスが10.0.0.1の方は誰ですか?」と書いてあります - 10.0.0.1のデバイスが返事をします - 返事のイーサネットフレームは - 送信先11:22:33:44:55:66 - 送信元AA:BB:CC:DD:EE:FF <br> (知りたかった**該当デバイスのMACアドレス**) </small> --- class: compact,img-right # 応用: DHCP<small>(Dynamic Host Configuration Protocol)</small> <div class=footnote> <small><small> (脚注1) PC教室や家庭、無線LANなどあらゆるところで動作しています。 DHCPのおかげでOSを手動設定せずに利用できるわけです </small></small> </div>  <small> - 自動でOSのネットワーク設定をする仕組み - PCやデバイスの起動時に、ブロードキャストを利用してOSの設定情報をDHCPサーバに問い合わせます。 - **起動時のPCは自分のIPアドレスすら分かりません**。 もちろん問い合わせるべきサーバのIPアドレスやMACアドレスも知りません - そこで**ブロードキャスト**を使います </small> --- class: compact,img-right # 応用: DHCP<small>(Dynamic Host Configuration Protocol)</small> <div class=footnote> <small><small> (脚注) OSの起動シークエンスの途中で、DHCP clientが起動され、それがブロードキャストで問い合わせを行います。 ISCのdhcpが古典ですが、 LinuxではDNSマスカレードというソフトウエアもあります。 最近では、また別のソフトウエアを使い始めているような? </small></small> </div>  <small> - ブロードキャストでDHCPリクエストを送信 - 送信先FF:FF:FF:FF:FF:FF - 送信元11:22:33:44:55:66 <br>(自分のMACアドレス) - 全デバイスが、このリクエストを見ますが、DHCPサーバが自分宛だと判断し、 - DHCPサーバが返事をくれます - 送信先11:22:33:44:55:66 - 送信元AA:BB:CC:DD:EE:FF <br> (サーバのMACアドレス) - <b>DHCPサーバからの返事(パケット)にネットワーク設定情報が含まれている</b>ので、 それらをPCに設定します (e.g. IP, network prefix, デフォルトルート, DNSサーバ, ...) </small> --- class: title, smokescreen, shelf, no-footer # <small>素のままでは、うまく動きません<br>(通信の調停と効率化)</small> <div class=footnote> <small><small> </small></small> </div> --- class: img-right,compact # <small>CSMA/CD(Carrier Sense Multiple Access with Collision Detection)</small> <div class=footnote> <small><small> (脚注1) 物理な話をしていますがNI層は、そういうものです (脚注2) 一台に限る!とか当たり前な話をしていますね、でも、そういうものです (脚注3) <B>/</B>は発音しないか with (with を w/ と略しますね) (脚注4) ちなみに無線LANは<B>CSMA/CA</B>という方式です </small></small> </div>  <small> - 複数のデバイスが同時に送信すると、電気信号が重なりあい、解読できません;-) - よって、ある瞬間に送信してよいデバイスを一台に限定することにします! - **送信するホスト(一台)を決める**には**CSMA/CD**というプロトコルで**調停**します - CS = 他に通信しているホストがいないことを確認、信号の感知(CS) - MA = 複数のホストが共有している回線を使い通信(=access) - CD = 衝突(Collision)の検知(Detection) </small> --- class: img-right,compact # 転送効率の向上、スター型への変更 <div class=footnote> <small><small> (脚注1) スター型はハブ-スポーク型(自転車の車輪)とも言う (脚注2) 図のHUB部分に使うネットワーク機材の名称と役割も調べてみよう(基本情報に出ます!): ハブ、リピーター、ブリッジ、ラーニングブリッジ、スイッチングハブ(=スイッチ)は、 何が違いますか? </small></small> </div>  <small> - **バス型**(図左)では、ホストが増えるほど衝突が増えていきます (CSMA/CDの理屈を思い出せ!) - 商用インターネット時代に入ると、イーサネットの規格も10BASE-Tが主流になり、 それ以降は**スター型の接続**になります(図右) - どの型でも、ブロードキャストの動作原理は同じですが、 スター型の中心に置く機材(図のHUB、現代では**スイッチングハブ(スイッチ)**) が通信の様子を学習して、**無関係なホストへ通信を見せない**ようにしています。 つまり**衝突を回避**しているため、 **転送効率が向上**しています </small> --- class: title, smokescreen, shelf, no-footer # <small>参考: ブロードキャストが動作する理由</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>  <br>    --- name: cables class: compact,col-3 # ケーブル類の紹介 <small>  <small> <br> 10Base-5 (通称イエローケーブル)。 最初に使われていた同軸ケーブルで、太くて引き回しが大変 </small>  <small> <br> 10Base-2 (5の後に使われていた同軸ケーブル) </small>  <small> <br> ONUと光ファイバー(single mode)。 これは家庭用フレッツの機材、 業務用とは違います </small> </small> --- class: title, smokescreen, shelf, no-footer # <small>参考: Bフレッツや学内の物理構成について少々</small> --- class: title, smokescreen, shelf, no-footer # 物理構成 <div class=footnote> <small><small> 後半の設計編で必要な知識を少し先出しで紹介 </small></small> </div> --- class: img-right,compact # 実際の物理構成(概略) <div class=footnote> <small><small> (脚注) 光ファイバの詳細は他の授業に譲ります。 singleとmultiは反射の仕方など動作自体が異なります。 実務的にはファイバの曲げやすさが違うので(折らないように)注意が必要です </small></small> </div>  - [ネットワーク構成](/slides/network/tcpip/inet_network/)の回に、 右の図を「学内の**論理構成**図」として使いました - 実際の**物理構成**はどうなっているの?という解説を少しだけします - 用語 - ネットワーク機器(既出) - 機器同士の配線に使うもの - イーサネット - 光ファイバ (single-mode,長距離) - 光ファイバ (multi-mode,短距離) --- class: img-right,compact # ネットワーク機器の構成(復習)  - [ルーティング](/slides/network/tcpip/inet_routing/)の回のスイッチ群 - cs (core) - ds (distribution) - as (access) - 次頁では、実際の cs, ds, as 間の配線の使い分け方を説明 --- class: compact # 実際の光ファイバ配線構成図 <div class=footnote> <small><small> (脚注) 春学期後半の設計編の <A HREF=https://lectures.fml.org/slides/network/design/campus/> 「設計ガイド」 </A>より </small></small> </div>  --- class: img-right,compact # 物理構成(イメージ)図 <div class=footnote> <small><small> (脚注1) 春学期後半の設計編の <A HREF=https://lectures.fml.org/slides/network/design/campus/> 「設計ガイド」 </A>より抜粋 (脚注2) 「クラウドの上で何か作って売る職業」と「インフラを作って売る職業」 どちらが<B>安定して儲かる</B>の?って、 それはAmazonの売上を見れば一目瞭然だよね? </small></small> </div>  - 物理的にPCとスイッチと光ファイバーとケーブルと...いろいろ並べて写真と動画をとりました (次頁の動画も堪能してね) - 構築するだけで5人で2時間くらい使いました (本来は、このあと設定もあるので全部やったら半日仕事) - いやぁ物理作業って大変ですね;) - ブラウザの上でクリックするだけのクラウドは楽ですね? - でも、**クラウドを構築して売っている側の人たち**がいるから使えることを忘れずに --- class: compact # 物理構成の解説動画(再生リスト) <div class=footnote> <small><small> 再生できない方は <A HREF=https://www.youtube.com/playlist?list=PLS2cEmI21XYJlP3N-J4bOqJHRTdJPX08w> こちら </A> からどうぞ </small></small> </div> <center> <iframe width="480" height="270" src="https://www.youtube.com/embed/Pi3RXT3RuQc?list=PLS2cEmI21XYJlP3N-J4bOqJHRTdJPX08w" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> <iframe width="480" height="270" src="https://www.youtube.com/embed/-J-dGm7w6Zs?list=PLS2cEmI21XYJlP3N-J4bOqJHRTdJPX08w" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> </center> <small> (左)E208のBフレッツを例に「ルータ〜L3スイッチ〜ファイアウォール」の説明 (右)学内全体のイメージ <br> ちなみに再生リストの3番め以降は、光ファイバなどの解説動画(他作)です。 <br> 8番目にあるGoogleの気球ネットワークは良いアイデア! 人工衛星より低遅延・低価格なので普段から使いたい。 災害時などの緊急展開にも役立ちます。 でもイマイチ流行してないみたい... </small>