Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。宛先アドレス+VIDでFDBを検索まとめ参考資料スイッチングハブSedMacFreamTestプロジェクトをもう一度実行してみてください。端末Bへ送りたいだけなのにも関わらず、端末CとDも受け取ってしまい、不必要なので、いちいち受信データを破棄していることが確認できます。これは非常に非効率的ですし、この状態ではセキュリティ上、好ましくありません。その点を改善するために作られたのがスイッチングハブです。Database:転送データベース)と呼ばれるものを保持しており、このデータベースを基に効率的にデータを直接送信します。この動きを体験するためにVlanTestプロジェクトをスタートアッププロジェクトに設定してから実行してください。このサンプルコードを実行すると、リピータハブと呼ばれる通常のハブよりも効率的にデータが送られていることを実感できると思います。スイッチングハブ動作の概要をこれから解説します。メーカー毎に細部は異なりますので参考程度にしてください。サンプルコードを参考にしながら解説を読んでください。フレームから必要な情報を取り出す一番最初にすることは、宛先アドレス・送信元アドレス・仮想LAN識別子の3つの情報を取り出すことです。ここで、10ギガビットEthernetでは、MACフレームが変更されていることに注意してください。10ギガビットEthernetでは、送信元アドレスとType/Lengthフィールドの間に4バイトのVLANタグが付加されています。2バイト目はTypeフィールドで0x8100の固定値です。次に、VLANタグがあって、各フィールドは、優先順位(3ビット)・CFI(1ビット)・VID(12ビット)となっています。このため、VLAN対応のNICを使用してVLANタグが識別できない古いハブを使用すると通信ができません。この点に注意して下さい。Indicatorの略称で、このフィールドはネットワークオーダーを表すフラグです。CFI=0がビッグエンディアン、1がリトルエンディアンです。「ネットワークバイトオーダー」とは何かというと、一言で言えばビットの並べ方です。覚えている方もいると思いますが、CPUにはリトルエンディアンとビッグエンディアンと呼ばれるバイトの並びがあります。それと同じ概念で、ネットワークプロトコルにも、最下位ビットからデータを伝送する(リトルエンディアン)方式と、最上位ビットからデータを伝送する(ビッグエンディアン)方式があります。ちなみに、TCP/IPではビッグエンディアンを使用しています。Ethernet同士の通信ではCFIの値は必ず0です。次にすることは、送信元アドレスの登録、もしくは寿命の更新です。送信元アドレスの内容を追加する理由は、効率よく通信するために端末のデータを記録するためです。寿命の更新については、少々なれない概念だと思いますのでこれから説明します。ネットワークでは色々な理由で、新しい端末が追加されたり取り除かれたりします。そこで、スイッチングハブでは、一定期間が過ぎたら使われていない端末のデータを削除しています。この段階で使用されている端末データの寿命を延ばします。最後はデータを目的地に届けるために送信元の情報を使ってFDBを検索します。検索した結果、端末のデータが見つかったら目的地にデータを直接送ります。見つからなかった場合は、仕方がないので送信元ポート以外の全ポートへデータを送ります。この動作を「フラッディング」(Flooding:洪水)と呼びます。}}一つ注意して欲しいことがあります。今回は説明を簡略化するためにFDBへの登録は手順1のみでしたが、実際はスパニング・ツリー・アルゴリズムなどのネットワーク経路制御プロトコルにより更新されることがあります。ネットワーク経路の制御については他層の説明も必要なので今回はしません。今回はネットワークアクセス層で重要な事柄について、サンプルコードを交えながら解説しました。この記事がネットワークアクセス層の理解の一助になれば幸いです。次回はインターネット層について解説します。アプリケーション層の勘所もっと読むこの記事の著者インドリ(インドリ)分析・設計・実装なんでもありのフリーエンジニア。ブログ「無差別に技術をついばむ鳥(http://indori.blog32.fc2.com/)」の作者です。アドバイザーをしたり、システム開発したり、情報処理技術を研究したりと色々しています。プラットフォームチームの意義と実践のポイント1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。プラットフォームチームの意義と実践のポイント1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。プラットフォームチームの意義と実践のポイント1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。NEW新着記事一覧を見るイベント今後の予定を見るCodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。