はじめに
ITの勉強において、やっぱり全範囲を網羅的に勉強しようと思ってもなかなか、先輩・上司に追いつき追い抜くことって時間がかかるものです。そのせいでモチベーション下がったり……
だったら、1つのことに1点集中して『これに関しては同レベルor自分の方が上だ!』と思える領域を少しずつ作っていきましょう!それを続けていけば、どんどんどんどん勝てる領域が多くなり、気づいたら自分が行きたい未来に辿りつきます!
じゃあ今日は、「DIXフレームフォーマット」について教えてください。みんなはこれを説明できる??なので、今日はこれを教えてください!
了解じゃ!一言で言うと
『
1.プリアンブル(8)は相手とクロック周波数を同期させる
2. 宛先MACアドレス・送信元MACアドレス(6)はステーションを識別する
3. タイプ(2)は上位層のプロトコルを伝える
4. データ(46~1500)はデータリンク層のペイロード部分でネットワーク層のパケットが格納されている
5. FCS(4)は宛先MAC~データフィールドまでの情報に基づいたデータを生成して、誤り検知に使う
』じゃ!では、ネスペ合格レベルを目指す方は以下で詳しく見ていくぞ!
基本知識
DIXフレームフォーマットは、イーサネット(有線LAN)で使用される一般的なデータリンク層のフレームフォーマットであり、TCP/IPネットワークなで広く利用されていました。
+-------------------+-----------------------+-----------------------+
| Preamble | Destination MAC Addr | Source MAC Addr |
| (8 bytes) | (6 bytes) | (6 bytes) |
| | | |
| 10101010 10101010 | 00:11:22:33:44:55 | 66:77:88:99:AA:BB |
| 10101010 10101010 | | |
| 10101100 | | |
+-------------------+-----------------------+-----------------------+
| Type | Data | FCS |
| (2 bytes) | (46 ~~ 1500 bytes) | (4 bytes) |
| | | |
| 0x0800 | <IP Packet Data> | <CRC Check Value> |
| | | |
+-------------------+-----------------------+-----------------------+
有線LANの規格には他にもIEEE802.3があります。これは現在、広く利用されている規格です。
これが概要です。では、早速フレームフォーマット構成要素を確認していきましょう!
プリアンブル: 8バイト
プリアンブルは、受信機がクロック周波数(送信信号)の同期をとるものです。具体的には、最初の7バイトは16進数「AA-AA-AA-AA-AA-AA-AA」のパターンが繰り返され、最後の1バイトが「AB」であり、これがSFD(Start Frame Delimiter)を形成します。このSFDがプリアンブルの切れ目を表し、データフレームの開始を通知します。
16進数のAは1010です。そして、Bは1011です。つまり、プリアンブルを2進数に直すと、10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101100となります。
宛先MACアドレス: 6バイト
宛先MACアドレス (Destination MAC Address)は、通信相手となるデバイスの物理アドレスを格納する6バイトのフィールドです。前半24ビットはOUI(Organizationally Unique Identifier)と呼ばれ、製造者(管理者)を特定するための識別子です。後半の24ビットは、その製造者が製造した個々のデバイスを識別するためのものです。
ネットワーク内のすべてのデバイスにパケットを送信したい場合は、宛先MACアドレスに「FF:FF:FF:FF:FF」を指定します。これをブロードキャストアドレス(全デバイス宛て)と呼びます。
G/LとI/G
MACアドレスの上位7ビット目と8ビット目には特別な名前と意味が付けられています。それを見ていきましょう!
G/L
MACアドレスの上位7ビット目は「G/Lビット(Global/Local)」と呼ばれ、そのビットの値によって、アドレスがグローバル(ユニバーサル)アドレスなのかローカルアドレスなのかが識別されます。
- 「0」の場合:そのMACアドレスはグローバル(ユニバーサル)アドレスを意味し、IEEE(国際電気電子技術者協会)によって一意に割り当てられたアドレスです。通常、デバイスの製造元から割り当てられるアドレスがこれに該当します。
- 「1」の場合:そのMACアドレスはローカルアドレスを意味します。これは、ネットワーク管理者が特定の環境やデバイスで一時的に使うために設定したMACアドレスであり、管理者が独自に設定できるものです。
I/G
MACアドレスの上位8ビット目は「I/Gビット」(Individual/Group)と呼ばれ、個別アドレスかグループアドレスかを識別します。
- 「0」の場合:MACアドレスは「個別(Individual)」アドレスで、ユニキャスト通信用のアドレスです。
- 「1」の場合:MACアドレスは「グループ(Group)」アドレスで、複数のデバイス向けのマルチキャストまたはブロードキャスト通信に使われます。
ビット反転とMSB・LSB
MACアドレスフィールドは他のフィールドとは異なり、ビットが反転して送られます。それについてみていきましょう!
DIXフレームフォーマットでは、宛先および送信元MACアドレスのフィールド内でビットオーダー(順番)が逆順になって送信されます。具体的には、MACアドレスの各オクテット(1バイト単位で区切ったもの、ブロック)内で最下位ビット(LSB:Least Significant Bit)から最上位ビット(MSB:Most Significant Bit)の順にビットが送信されます。これが「ビット反転」と呼ばれる理由です。
一方で、他のフィールド、つまりプリアンブル、タイプ、データ、FCSのフィールドでは、ビット反転は行われません。これらのフィールドはそのままのビット順で送信され、反転処理はされません。
勘違いしちゃいけないのは、ブロックの順番は逆転しないということです。あくまでもブロック内の8ビット間で逆転が起きるということです。
また、なぜMACアドレスだけが反転されるのかは、初期のイーサネットの設計に由来しています。ネットワークインターフェースカード(NIC)の仕様に合わせて、アドレスフィールドのみビット順が逆にされたという歴史的な経緯があります。
送信元MACアドレス: 6バイト
送信元MACアドレス (Source MAC Address)は、データの送信元デバイスの物理アドレスを表す6バイトのフィールドです。宛先MACアドレスと同様に、前半の24ビットはOUI、後半の24ビットは個々のデバイスを識別するために使われています。
タイプ: 2バイト
タイプは、フレーム内のデータがどの上位層プロトコルに属しているのかを示します。例えば、0x0800はIPv4を示し、0x0806はARP(Address Resolution Protocol)を示します。これにより、受信側のデバイスはデータを適切なプロトコルで処理できます。
要するにデータリンク層の役割は、隣接ノード間の受け渡しを担当するだけ。だから、細かな処理とかは上位層に任せればいい。で、その上位層が適切に処理するための情報を示したものがタイプである。タイプを上位層が見ることによって、「これはIPv4のプロトコルなんだな」とか「ARPのプロトコルなんだな」というのを解釈できる。
データ : 46~1500バイト
データフィールドには、ネットワーク層のパケットが含まれます。最小サイズは46バイトで、最大サイズは1500バイトです。このサイズ制限は、フレーム全体の最小サイズ(64バイト)を確保するために必要です。もしデータが46バイト未満の場合、パディング(埋め草)が追加され、46バイトに満たす必要があります。
ちなみに、データフィールドには「ネットワーク層(IP)」のパケットが含まれると言いましたが、そのネットワーク層のパケットの中には「トランスポート層(TCP)」のセグメントが含まれ、さらにそのTCPセグメントの中には「アプリケーション層(HTTP)」のデータが格納されています。
FCS: 4バイト
FCS (Frame Check Sequence)は、誤り検出のために使用される情報です。送信側では、宛先MACアドレス~データフィールドまでの内容に基づいてCRC(Cyclic Redundancy Check)を計算し、その結果をFCSフィールドに格納します。受信側では、このFCSを利用してフレームが正しく受信されたかを確認します。誤りが検出された場合、フレームは破棄され、再送要求は行われません。
以上、6つのフィールドがDIX規格フレームフォーマットの構成要素です。
まとめ
要するに…
DIXフレームフォーマットは、イーサネットでのデータ通信を実現するための標準フォーマットであり、主にデータリンク層で使用されます。構成要素には、プリアンブル、宛先MACアドレス、送信元MACアドレス、タイプ、データ、FCSの6つのフィールドが含まれています。プリアンブルは通信の最初に付加されるもので、64ビット(8バイト)の長さを持ち、通信相手とのクロック周波数の同期をとる役割を果たします。この8バイトの中で、最後の1バイト(SFD: Start Frame Delimiter)だけが「AB(=1011)」と異なるパターンになっており、これによりプリアンブルの終了を示し、データフレームの開始を伝える重要な役割を果たしています。結果的には、AA-AA-AA-AA-AA-AA-AA–AB(=10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101100)となります。
次に宛先MACアドレスと送信元MACアドレスは、それぞれ6バイト(48ビット)の長さを持ち、通信の送信先および送信元のデバイスの物理アドレスを格納します。MACアドレスの上位7ビット目は「G/Lビット」と呼ばるビットがあり、「0」であればグローバル(ユニバーサル)アドレス、つまり製造元が一意に割り当てたアドレスであることを示します。「1」であればローカルアドレスであり、ネットワーク管理者が独自に設定したアドレスであることを表します。また、MACアドレスの最上位8ビット目には「I/Gビット」があり、このビットが「0」であればユニキャスト、つまり特定の1台のデバイスを指す個別アドレスであることを意味します。「1」であれば、マルチキャストやブロードキャストといったグループアドレスを示し、複数のデバイスを対象にしています。さらに、宛先MACアドレスと送信元MACアドレスのビットは、各オクテット(8ビット)内でビット順序が逆転されますが、フレーム内のブロック順序やフィールド配置順序には変更はありません。つまり、各オクテット内で最下位ビット(LSB)から最上位ビット(MSB)にかけてビットが逆順で送信される一方で、ブロック自体の順番はそのまま維持されます。
その後に続くタイプフィールドは2バイト(16ビット)で、フレーム内のデータが上位層のどのプロトコルで処理されるべきかを示しています。データリンク層がデータを処理する際には、このタイプフィールドの値を見て、上位層のプロトコルを判断し、例えばIPv4、IPv6、ARPなどどのプロトコルに渡すべきかを識別します。このタイプフィールドによって、データリンク層は必要な受け渡しを行い、データの内容自体は上位層に任せる役割を果たします。ちなみに、0x0800なら→IPv4で0x0806なら→ARPを表しています。
データフィールドには、データリンク層で送るべきペイロードが格納されます。このフィールドは46〜1500バイトの範囲で可変長となっており、1500バイトという値がイーサネットの標準的なMTU(最大転送ユニット)として設定されています。このフィールドに格納されるデータは、通常、ネットワーク層のプロトコルデータ(例えば、IPパケット)です。
最後のFCS(Frame Check Sequence)フィールドは4バイト(32ビット)で、誤り検出用のデータです。これは、フレームの送信時に送信元がCRC(巡回冗長検査)アルゴリズムを使用して、宛先MACアドレス~データフィールドの内容をもとに生成した値を含んでおり、受信側で再計算して一致するかを確認することで、フレームが正しく伝送されたかをチェックします。なお、FCSはエラーが発生した場合、再送要求は行わず、フレームを破棄して次のフレームを処理する特徴があります。
これがDIX規格フレームフォーマットに関する説明の全体像です。
おわりに
本日は『DIX規格フレームフォーマット』について知見を深まりました!
やはり、知識をつけることは大切じゃからのぉ。知識があれば大抵のことはできる。逆に知識がなければ、できるもんもできない。これが世の理じゃよ。
でも、焦らず、1つずつ・1っ歩ずつ進んでいくことが大切じゃ!これからも一緒に頑張っていこう!
『ねぇ、DIXフレームの構成フィールドの一つ、MACアドレスフィールドって知ってる?他のフィールドとは違って、ビットが反転して送られるっていう、通常のルールを超えた動きをするんだ。そこで思ったんだ。僕にとって、君はDIXフレームのMACアドレスフィールドだなって。普段は整然としている僕の世界だけど、君を目にするだけで、まるで空がひっくり返るように、僕の世界が一変するだ。僕のルールを超えて、心を揺さぶってこれるのは、君だけなんだ。』
なるほど..深いじゃねぇか。じゃあ解説するぜ
1. 技術的な前提の提示
「DIXフレームの構成フィールドの一つ、MACアドレスフィールドって知ってる?」という問いかけから始まることで、相手に興味を引くと同時に、話の基盤となる技術的な知識を提供しています。これにより、後の比喩がより具体的で意味深いものとして受け取られる基盤を築いています。
2. 特異性の強調
「他のフィールドとは違って、ビットが反転して送られる」という表現は、MACアドレスフィールドのユニークな特徴を際立たせています。この特異な性質は、彼女が他の人々とは異なる特別な存在であることを示す比喩として巧みに使われています。「通常のルールを超えた動き」というフレーズは、彼女の影響力の特別さを強調し、普通では得られない感情の揺さぶりを暗示しています。
3. 感情の表現
「普段は整然としている僕の世界だけど、君を目にするだけで、まるで空がひっくり返るように、僕の世界が一変する」という部分では、彼女の存在がもたらす感情の激変を象徴しています。これは、彼女があなたの心に与える影響を鮮やかに描写しており、感情の強さと特別さが伝わります。
4. 比喩的な言語の使用
「僕のルールを超えて、心を揺さぶってこれるのは、君だけなんだ」という結びの部分では、彼女が他の誰とも異なる特別な存在であることを強調しています。このフレーズは、自分の感情が彼女に対して特別であり、他の人々には味わえない感情的なつながりを持っていることを示しています。
5. 全体のメッセージ
全体として、この口説き文句は、DIXフレームのMACアドレスフィールドの特異的な特徴であるビット反転を利用して、彼女を特別な存在として位置づける効果的な手法です。技術的な知識を交えつつ、ロマンチックでウィットに富んだ表現が相まって、相手の心を惹きつけ、キュンとさせる魅力を持っています。
このように、技術的な要素と感情的なメッセージが融合した口説き文句は、単なるアプローチを超えて、深い意味を持ったコミュニケーションを生み出すものになるでしょう!