Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。今回は最下層であるネットワークアクセス層にあたる部分を解説します。宛先アドレス+VIDでFDBを検索まとめ参考資料はじめにこの連載では仮想的なLANを実装することにより、目に見えないTCP/IPプロトコル群を、手を動かして目で実際に確認しながら習得することを目的としています。TCP/IPの全てを解説するのは分量上不可能ですし、余計に読者を混乱させてしまいますので、筆者が重要と考えている部分だけ解説します。今回は最下層であるネットワークアクセス層にあたる部分を解説します。対象読者C#もしくはVB.NETで基本的なプログラミングができる方。TCP/IPの動きを身に付けたい方。ネットワークの初心者。必要な環境C#もしくはVB.NETのコンパイラが必要です。Editionが配布されていますので、ダウンロードして入手してください。ネットワークアクセス層の概要この層では媒体に関する事柄を取り扱っています。Mode)、無線LANなどの媒体制御方法がこの層に該当します。このように、この層には色々な規格がありますが、今回はTCP/IPがテーマですのでEthernetに関することだけを解説します。Card)」「HUB」の4種類です。次項でそれぞれの媒体について解説します。LAN構築に必要な機材LANケーブルは、非常に多くの種類があります。10BASE5、10BASE2、10BASSE-T、100BASE-TX、100BASE-FX、1000BASE-SX、1000BASE-LX、1000BASE-T、10GBASE-LR、10GBASE-ER......。数が多くて一見ややこしいですが、実はそれほど難しくありません。数値はメガを単位とする回線スピード(理論値)で、ハイフンの後ろのFXとかTというのはケーブルの種類です。LANケーブルは主に、同軸ケーブル・UTPケーブル・光ファイバケーブルの3つがあり、TはUTPケーブルというふうに決まっています。Channel)というふうに決められています。1G以上のLANケーブルを買うときはよく注意しましょう。回線スピードとは1秒当たり何ビット送信できるかを表す論理的な数値です。CD-ROM(640MB=5120Mビット)分のデータを送信する場合、100Mbpsならば51.2秒、1Gbps(1024Mbps)ならば5秒、10Gbps(10240Mbps)ならば0.5秒で送信できるということです。これはあくまでも理論値であり、実際はもっと送信に時間がかかります。NICはLANケーブルをコンピュータにつなぐためのカードで、拡張スロットに挿して使います。通信時にインタフェースの働きをするので、正式名称は「ネットワークインタフェース・カード」と呼びます(略してNIC)。NICは対象とする回線が決まっており、10M用、100M用、1G用などが販売されています。HUBはいわゆる集線装置で、複数の回線を繋いで端末間の通信ができるようにするために必要な装置です。10ギガビットEthernetになってからはただの集線装置ではなく、より賢く通信するための機能が付いた、スイッチングハブと呼ばれる装置を使用します。以上でイーサネットLANの構成要素の解説が済んだので、次項ではその中を流れるデータについての事柄を解説します。データのフォーマットLAN上にデータを流す場合、パケットという単位に分割して送信します。Ethernetではパケットを「フレーム」と呼び、データのフォーマットを厳密に定めています。Ethernetフレーム(通称MACフレーム)のフォーマットは次の図の通りになっています。Ethernetフレームのフォーマット各項目の簡潔な説明は以下のとおりです。プリアンブルは、MACフレームの受信時に同期を取るために必要なビットパターンです。SFDはMACフレームの開始地点を示しています。回線上は色々なビットが流れているので、開始地点を知る必要があります。データを送る相手の識別子です。識別子はベンダに付与された番号+製品番号で構成されています。データ送る端末の識別子です。1500以下の場合はユーザデータの長さを表し、それ以上の場合はプロトコルを表します。0x0800(16進数、10進数では2048)はIPです。上位プロトコルのデータが入っている場所です。この部分は最低46バイトなので、それ以下の場合はPADと呼ばれるダミーデータを付加します。宛先アドレスからユーザーデータまでの範囲に対するチェックサムの結果が格納される部分です。データが壊れていないかチェックするために使用します。Check:巡回冗長検査)と呼ばれる方法で行います。当面のところは覚える必要がないと思いますのでこの連載では取り扱っていません。今のところ分からないかも知れませんが、これらの意味は連載を読むと徐々に分かってきますので安心して読み進めて下さい。以上で文章だけの解説は終わりです。次項からはサンプルコードを交えた解説を行います。アプリケーション層の勘所もっと読むこの記事の著者インドリ(インドリ)分析・設計・実装なんでもありのフリーエンジニア。ブログ「無差別に技術をついばむ鳥(http://indori.blog32.fc2.com/)」の作者です。アドバイザーをしたり、システム開発したり、情報処理技術を研究したりと色々しています。NEW1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。NEW1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。NEW1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。12:00法務担当者、6割超が今後業務で「生成AIを使用したい」と回答。NEW新着記事一覧を見るイベント今後の予定を見るCodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。