Chapter04 OSI参照モデルとは_"前編データリンク層"
筆者が大学の講義で手に入れた情報をクラウド上(note上)に残すために書いています。講義ノートに近いものです。せっかくインプットしたので、アウトプットしときたいという目的も含まれています。
その道のプロではありません。誤情報が含まれていたり、厳密さに欠けている可能性があります。
今回は2層目のデータリンク層の前編です
前回Chapter03では1層目の物理層について話しました
OSI参照モデル振り返り
7 : アプリケーション層
ユーザーに特定のサービスを提供できるようにする
6 : プレゼンテーション層
データ形式を統一できるようにする
5 : セッション層
双方向に通信できるようにする
4 : トランスポート層
どのプログラムに届いたデータかを仕分けできるようにする
3 : ネットワーク層
地元エリアを連携して、全世界でのデータ通信を実現する
2 : データリンク層
地元エリア内でデータ通信を実現できるようにする
1 : 物理層(フィジカル層)
電気信号、電波、光を利用して、0 1を伝送できるようにする
OSI参照モデルの定義
レベルごとに階層化したプロトコルを作成し、世界共通で利用できるようにする。
こんな内容でした。
Chapter01でOSI参照モデルの定義については話しているのでぜひ参照して戻ってきてください
今回は2層目データリンク層に入っていきます。
データリンク層について
同一LAN上にある(同じハブに接続された)複数のコンピュータを区別し、1台のコンピュータを特定する方法を決める
つまり、
同一LAN上にある特定のPCとデータのやりとりができるようになる
これがデータリンク層の役目です。
物理層では0,1の定義のようなことをしました。
データリンク層では送りたい相手と実際にデータのやりとりができるようにします。
データリンク層の概要
LAN(local area network)
無線やケーブルなどで直接繋がっている家や会社などの単位のネットワーク
接続方法の種類
主な複数のコンピュータ同士の接続方法
バス型
リング型
スター型
接続方式による違いによってのメリット・デメリットについて書かれている記事があったので参照してみるとより分かりやすいだろう。
データリンク層の目的
LAN内の特定の相手にデータを送る
複数のコンピュータのデータ通信の「衝突」を回避する
これら二つについての仕組みについては順に説明していくのでまだ分からなくていい。
フレーム
フレームとは
データリンク層におけるデータのこと
前にヘッダとペイロードについて説明したが、覚えているだろうか。
Chapter01の「OSI参照モデルについて」で話している。
物理層を一度知ってから上記表をみるとさらに少しだけ、意味がわかってくる。
これから説明するデータリンク層のヘッダとペイロードは最終的には全て物理層のルールに従って「1」「0」で表現される。
そしてデータリンク層のヘッダは上記の表でいう「ヘッダ3」のことであり、ペイロードは「ヘッダ2 + ヘッダ1 + データ」の部分に当たる。
そしてデータリンク層では、同じデータでもデータのことをフレームと呼ぶ
まだピンとこなくても大丈夫だ。この後のChapterでも何度もこの説明をしていく、その度にだんだんとわかってくるだろう。
Wiresharkを通して実際にデータリンク層の中身を確認することができる。見てみると分かりやすいのでぜひ見てみてほしい。
イーサネットフレームのヘッダ
ここからはフレームのヘッダの中身を見ていこうと思う。
プリアンブル(64bit)
データの開始を表すbit列
1/0を交互に続け最後の2bitは「11」
宛先アドレス(48bit)
コンピュータ(LANアダプタ)ごとにつけられた「MACアドレス」
宛先(相手)のMACアドレス
送信元アドレス(48bit)
コンピュータ(LANアダプタ)ごとにつけられた「MACアドレス」
送信元(自分)のMACアドレス
プロトコルタイプ(16bit)
データに記入するデータのタイプ
データ本体
48Byte ~ 1500Byteの送受信データ
FCS(32bit)
イーサネットフレームの誤り検知用のbit列
なんだか分からない単語がいっぱいでてきて、戸惑って、挫折しそうになってるかもしれないが、この先の説明を少しずつ見ていけばだんだんと意味がわかってくる。
とりあえず「ふーん」と言ってさきにすすもう
MACアドレス
LANアダプタそれぞれに割り振られているアドレス(物理アドレス)
48bitで構成されていて、8bitごとに分け16進数で表現される
LANアダプタと言う単語がわかると理解が深まると思う
LANアダプタについて分かりやすい記事を下に貼っておく
https://wa3.i-3-i.info/word12499.html
すこしLANアダプタについて簡単にイメージを説明すると
こんな物をイメージしてもらえると分かりやすい
こんなケーブルと刺すための(穴)を見たことがあるだろう。
このケーブルがLANケーブルで、
このケーブルが刺さった先に繋がっているのがネットワークカードと言う部品だ。このネットワークカードの別の呼び名が「LANアダプタ」だと考えよう。(LANケーブルを直接繋がなくても、スマートフォンのように無線で通信できるもにもネットワークカードのようなものが入っている。)
ここで、もう一度MACアドレスの定義を見てみよう
LANアダプタそれぞれに割り振られているアドレス(物理アドレス)
48bitで構成されていて、8bitごとに分け16進数で表現される
つまりコンピュータ一つ一つに割り振られている識別番号のようなものがMACアドレスだ。
これは48bit(二進数で48桁),16進数で8bitずつに分けて書く
00:80:88:16:3A:20
前半24bit(今回で言えば、00:80:88)をベンダーコードと呼び、(LANアダプタ製造会社ごとの番号)が割り振られている。
つまりMACアドレスのベンダーコードをみるだけで、どの会社で作られているコンピュータなのかを見分けることができる。
下記のリンクからMACアドレスの検索ができる。
実際にやってみるのが一番分かりやすいので、PCやスマフォのMACアドレスを調べてみよう。
iPhoneなら設定から>一般>情報>Wi-Fiアドレスと言う部分に書いてある16進数がMACアドレスだ。これをコピーして実際に上記のリンクのMACアドレス検索で検索してみよう。
iPhoneなら
USA Apple Inc.
と出てくるだろう。Apple社のものだということがこのようにベンダーコードからわかるのだ。
MACアドレスには同じ番号が存在しないようになっているはずで、世界で唯一の番号となっているはずだ。
・LAN上でコンピュータを識別するアドレス
・イーサネットフレームの送信元アドレスと受信先アドレスにこれを記述
データリンク層の通信
1 : イーサネットフレーム(データリンク層のデータ)はLAN上のコンピュータ全てに送られる。
2 : イーサネットフレーム受信者はフレームのヘッダの中の受信者アドレスを見る。
3 : 自身のMACアドレスのもの = フレームを受信
そのほか = フレームを破棄
AというコンピュータからC当てに送信したいと思った時のフレームの図である。
ヘッダで出てきた、プリアンブルは物理層でもやったように、データの開始を表すために、イーサネットフレームでは10101010....と62bit続いた後、11と2bit続ける64bitを送信後MACアドレスを送信する。
プリンアンブルでこれだけ101010...11としとけばノイズが混入してもなかなか偶然は起きないし、分かりやすいだろうということだ。
ただ、偶然が起きる可能性はもちろんある。それがベストエフォートだ。
ネットワーク接続機器
物理層で接続する機器(1/0をたんに送るだけ)
・二台の機器・二つのLANのみを接続
リピータ
・複数の機器・LANを接続
リピータハブ
データリンク層で接続する機器(MACアドレスを見て送るかどうか判断する)
・二台の機器・二つのLANのみを接続
ブリッジ
・複数の機器・LANを接続
スイッチングハブ
分かりやすく、詳しい参考リンク
・接続ポートが2つ以上
・特定の機器同士の通信が可能
物理層での接続、データリンク層での接続
物理層での機器(リピータ・リピータハブ)は信号の増幅、整流を行い、きた信号は全ポートに全て流すような仕組みになっている。
データリンク層での機器(ブリッジ・スイッチングハブ)ではMACアドレステーブルと呼ばれるテーブル(表)を持っている。これを使って、ある程度目的のポートに絞って、送信する。こうすることで後に説明する衝突が起きる可能性が減る。
スイッチングハブの動作原理
スイッチングハブ(データリンク層の機器)について考える。
この機器にはMACアドレステーブルという、ポートとMACアドレスを記載できる、記憶できるテーブルを持つ。
電源ONにした直後はテーブルは空の状態である。
AからBにフレームを送信したい時を考える。
Aからスイッチングハブに向かって、フレームを送信する
フレームヘッダ
宛先MAC : bb:bb:bb:bb:bb:bb
送信MAC : aa:aa:aa:aa:aa:aa
スイッチングハブはMACアドレステーブルにAの MACアドレスを登録する。
MACアドレステーブル
ポート : 1
MACアドレス : aa:aa:aa:aa:aa:aa
スイッチングハブはMACアドレステーブルに現在の宛先MACアドレスがないかどうか確認する。
MACアドレステーブルにBのアドレスはない。
フレームをポート2,3,4全てに送出(フラッティング)
フラッティング
ポートの接続されている端末全てにフレームを送信する
フレームの受信者アドレスを見て、該当であるBのみがフレームを受信
次にDからAにフレームを送信する時の動作を考える
DからA用のフレームを送信
フレームヘッダ
宛先MAC : aa:aa:aa:aa:aa:aa
送信MAC : dd:dd:dd:dd:dd:dd
スイッチングハブはMACアドレステーブルにDを登録
MACアドレステーブル
ポート : 1
MACアドレス : aa:aa:aa:aa:aa:aa
ポート : 4
MACアドレス : dd:dd:dd:dd:dd:dd
MACアドレステーブルにAのMACアドレスがある
ポート1のみにフレームを転送(フィルタリング)
フィルタリング
指定のポートにのみフレームを送信すること
フレームの受信者アドレスを見て、該当であるAがフレームを受信
データリンク層について続きはChapter05 後編で説明する
この記事が気に入ったらサポートをしてみませんか?