開発ノート【通信の共通言語:TCP/IPモデル(Ethernet):機器】
開発ノート【通信の共通言語:TCP/IPモデル(Ethernet):機器】です。
当サイトは、Bootstrap5で製作しています。
リピーターハブ
- ホストを集めて、データの中継を行う機器をハブという。
- トポロジーのスター型を構成する機器。
- ハブの種類
・スイッチングハブ:データリンク層の機能を持つ。
・リピーターハブ:OSI参照モデルの物理層だけの機能を持つ。 - リピーターハブは、現在のネットワークではあまり使われていない。
※スイッチングハブが普及し、リピーターハブの機能も持っているため。 - ホストを接続するためのポートを複数持っている。
- リピーターハブの基本的な機能は、受信した電気信号の波形を調整し、増幅して他のポートから送り出すこと。
- 物理層にはアドレスというものはないため、常に受信したデータを受信したポートを除く全てのポートから送信する。
ホストは自分宛てかどうかを判断して、処理もしくは破棄する。
- Unicast通信でも、全てのポートから送出する。
コリジョンドメインの形成
ホストをリピーターハブへ接続するには、ツイストペアケーブルを使う。
ツイストペアケーブルは、内部が送信用と受信用に分かれているが、リピーターハブの内部は媒体共有と言って、全てのホストで使う方式になっている。
その結果、電気信号の衝突が起きる可能性があり、この電気信号の衝突が起こりえる範囲のことをコリジョンドメインという。
簡単に言うと、リピーターハブに接続された範囲が、コリジョンドメインとなる。
スイッチ(スイッチングハブ、L2スイッチ)
- スイッチは、データリンク層に相当する機能を持ったハブの一種。
- スイッチングハブやネットワーク層の機器と区別するためにLayer2スイッチ(L2スイッチ)ともいう。
- L2スイッチの筐体は、リピーターハブより大きい。
- L2スイッチは、MACアドレスを学習する。
- L2スイッチは、コリジョンドメインを分割する。
MACアドレスの学習
- L2スイッチがデータリンク層に相当するということは、レイヤー2のヘッダ情報を理解できるということ。
- L2スイッチは、ホストが送信するデータを受信するとEthernetフレームのヘッダを参照して、送信元MACアドレスを調べる。
- その送信元MACアドレスが何番のポートから入ってきたのかを管理表に登録する。
下記の例では、ホストAのデータが1番ポートから入ってきたので、Aと1の組み合わせが管理表に登録される。
- 上記のように送信元MACアドレスを調べて管理表に追加することを「学習する」という。
- 管理表のことをフォワーディングデータベースやMACアドレステーブルという。
- フォワーディングデータベースを見ることで送信元のホストがどのポートに繋がっているかが分かる。
(送信したい相手がどこにいるのかが分かるということ) - 下記の例では、ホストAがホストBにデータを送信した場合。
L2スイッチは2番ポートにホストBが繋がっていることを知っているので、対象のポートに対してのみデータを送信する。
この方法ならホストCに無駄なデータを送信することはない。
- L2スイッチは、MACアドレスを学習して、それに基づいたデータ転送を行うことで、不要なデータの送信をなくすことができる。
- フォワーディングデータベースの内容と実際の接続状態が異なっていた場合は、フォワーディングデータベースが変更される。
- 変更がない場合でも学習した情報は一定時間経過後に削除される。
- その後、再度通信が行われたら改めて学習し、フォワーディングデータベースに追加される。
- フォワーディングデータベースに送信先ホストのMACアドレスが登録されていない場合、L2スイッチは受信したポートを除く全てのポートに対してEthernetフレームを送信する。
- フォワーディングデータベースから送信先が判別できないUnicast通信をUnknown Unicastという。
- 受信ポート以外のポート全てに対して、一斉にEthernetフレームを送信することをフラッディングという。
- 送信先MACアドレスがブロードキャストアドレス(FF-FF-FF-FF-FF-FF)であった場合も、L2スイッチはフラッディングする。
コリジョンドメインの分割
- L2スイッチも多くの場合、ツイストペアケーブルを使用している。
- L2スイッチはリピータハブと異なり、一度受信したEthernetフレームをメモリに貯めて、送信する相手の受信側の線に出してくれる。
- ホストCが送信と受信を行っているように、L2スイッチ(ツイストペアケーブル)は全二重通信が可能なため、電気信号の衝突は起こらない。
そのため、L2スイッチは「コリジョンドメインを分割する」と言われている。
それぞれのポートがコリジョンドメインとなる。
しかし、Broadcast通信の場合は、全てのポートから送信してしまうので、L2スイッチの範囲をブロードキャストドメインという。
転送方式
L2スイッチはEthernetフレームを受信した後、送信先MACアドレスに応じて該当のポートから転送するが、その際に転送方式の違いにより動作が異なる。
・ストアアンドフォワード方式
・カットスルー方式
・フラグメントフリー方式
- ストアアンドフォワード方式
一度Ethernetフレーム全体を受信し、内部メモリに格納する。
そこでフレームが破損していないかをチェックし、問題がなければ対象のポートから転送する。
この方式は、一度フレーム全体を受信するため、他の方式と比較して、受信から転送までの時間が多くなる。
しかし、最近ではL2スイッチの処理性能の向上により、遅延のレベルは問題にはならない。
そのため、L2スイッチの標準になっていることが多い。 - カットスルー方式
フレーム全体を読み込まずに、先頭から6バイト(送信先MACアドレス)だけを読み込む。
この方式は、フレームの破損チェックは行わないため、受信したEthernetフレームが破損していた場合は、そのまま転送されてしまう可能性がある。
ストアアンドフォワード方式のようにフレーム全体をメモリに格納することはないので、ストアアンドフォワード方式と比較して受信から転送までの遅延が少なく高速に処理する。 - フラグメントフリー方式
カットスルー方式を発展させた方式。
先頭から64バイトまでを読み込み、エラーがなければ正常と判断して対象のポートから転送する。
ストアアンドフォワード方式とカットスルー方式の中間的位置づけ。
ループ構成とそのリスク
L2スイッチに限らずネットワークは、機器やケーブルの故障などが起きた場合でも、通信が継続してできるように複数の通信経路を確保するのが一般的。
複数の通信経路を持つ構成を、冗長構成という。
下図のように機器とケーブルを接続したときに、一周できるような構成をループ構成という。
ホスト2台とL2スイッチ4台のネットワークの場合。(L2スイッチはホストのMACアドレスを学習済とする)

-
<<<Unicast通信(ホストBからホストAに通信)の場合>>>
- ホストBから送信されたEthernetフレームはL2SW-Dで受信し、フォワーディングデータベースに応じてどちらかのポートに転送される。
(ここではL2SW-Bに転送している) - それを受信したL2SW-Bは、フォワーディングデータベースに応じてEthernetフレームをL2SW-Aに転送する。
- L2SW-Aも同様にホストAに転送する。
- ホストBから全員宛てに送信。
- L2SW-Dは受信ポート以外の全てのポートから転送する。
- それを受信したL2SW-BとL2SW-Cも受信ポート以外の全てのポートから転送する。
- L2SW-Aは同様にホストAに転送する。
- Unicast通信ならここでおしまいだが、Broadcast通信の場合は続きがある。
- L2SW-Aは、L2SW-Bから受け取ったEthernetフレームをL2SW-Cにも転送する。
- 同様にL2SW-Aは、L2SW-Cから受け取ったEthernetフレームをL2SW-Bにも転送する。
- L2SW-BとL2SW-Cは、L2SW-Dに転送する。
- その後の動作はこれまでと同じで、受信ポート以外に転送する。
- このようにEthernetフレームが何度も巡回してしまう状態のことを、ブロードキャストストームという。
(Broadcast通信により何度も同じ機器を巡回してしまう) - ブロードキャストストームが発生すると、L2スイッチはそのEthernetフレームの処理に追われて一気に負荷が高くなり、最終的には通信ができなくなってしまう。
- そのため、ブロードキャストストームはEthernet通信において避けなくてはいけない。
- L2スイッチを使ったネットワークでは、ブロードキャストストームを防止するような技術を導入するのが一般的。
- Ethernet通信には、常にループ構成によるリスクがある。
<<<Broadcast通信の場合>>>