マエカワの備忘録的な何か

思い立ったが吉日

ユビキタスネットワーク 其の二 20171016

Ethernetについて

 Ethernetには物理層データリンク層が関係している。

データリンク層

 多重アクセス制御が大事になってくる。この方法には二種類ある。

  • メディアアクセス制御(MAC
  • 論理リンク制御(LLC)

この二種類の制御方法のことをサブレイヤと呼び、データリンク層にはMACとLLCのサブレイヤが入っている構造になっている。

MAC(メディアアクセス制御)

 多重アクセス制御を行い、無線、優先などLANの種類によって使う領分が違う。

LLC(論理リンク制御)

 作られた当初、何もしないタイプ1と、フレームの送信確認などの重装備を持ったタイプ2などのタイプがあった。しかし、今では何もしないタイプ1だけが生き残っている。

Ethernetの歴史

 1980年に開発された。それまでの通信速度が300~9600bpsだったのに対して、いきなり10Mbpsをたたき出す。ここでは、主な構造について順を追って書いていく。

同軸ケーブル

 今やTVのケーブルとして使われている同軸ケーブルが初期のEthernetに使われてた。この同軸ケーブル、内側と外側に電流がそれぞれ流れているので、互いの電流が磁場を打ち消し合います。そんな話はさておき、この同軸ケーブルを使って高周波信号を送っていたわけです。
 仕組みとしては、一本の同軸ケーブルの合間にトランシーバと呼ばれるものを針で刺して接続。各端末に電流が通るようにします。同軸ケーブルの両端は無反射終端にして、電流が跳ね返ってくるのを防ぎます(これができてないと衝突が起こってしまう)。こうすることで、どこかの端末が信号を送れば、同軸ケーブル内を信号が走り、各端末に一回ずつ信号が伝播し、無反射終端で信号が消滅する。

マンチェスター符号

 Ethernetを実現するにあたって、「信号無し」という状態を表現しなければいけなくなった。信号のオンオフだけではこの「信号無し」を表現することができないので、2パルス1ビットのマンチェスター符号が用いられた。この符号の対応は

  • 10→0
  • 01→1
  • 00→信号無し

となっている。

MACアドレス

 信号が誰宛なのかを判別するためには、各端末にユニークなアドレスが必要になってくる。そこで登場したのがMACアドレスMACアドレスは合計で6バイト。内上位3バイト(OUIという)をIEEEが管理している。大量の端末にアドレスをつけるため、各企業はこの上位3バイトの組み合わせを大量に取得している。
 数あるMACアドレスの中でもFF:FF:FF:FF:FF:FFのことをブロードキャストアドレス*1と呼ぶ。

フレームという概念

 データを一気に送信しようとすると、ほかの作業に支障が出たりとあまりうれしくない。そこでフレームという単位に分けて、そのフレームごとに送信している。フレームの構成は次の通り。

  • プリアンブル(7バイト)
  • SFD(1バイト)
  • 宛先アドレス(6バイト)
  • 送信元アドレス(6バイト)
  • データタイプ(2バイト)
  • データ(46~1500バイト)
  • SCF(4バイト)
プリアンブルとSFD

 フレームの最初の8バイトには、プリアンブルとSFDと呼ばれるビット列が格納されている。これは、どこからデータの送信が始まるのかを宛先側に教えて準備をさせる役割を担っている。いきなりデータに来てもらわれては、宛先側もたまったもんじゃない。
 具体的なビットパターンは

  • プリアンブル:10101010
  • SFD    :10101011

となっている。プリアンブルは7バイト分あるので、このビットパターンを7回繰り返すことになる。

FCS

 これは、誤り検出を可能にするものになっている。

フレームの送受信

 フレームの送受信には、CSMA/CDという手法を用いていた。この手法は通信どうしが衝突しないために必要になってくる。他の端末が信号を送信していたら送信見送り。送信が終わるまで待ち、ランダム時間待ってから自分のデータを送信する。
 プロセスは自分が流したデータと違うデータが流れていたら衝突とみなして処理中止というもの。ただ、この方法には、衝突を判断する前にフレームを送信しきってしまうという問題がある。この原因は大きく二つ。フレームが短い場合か、ケーブルが長い場合。このため、フレームの最小長は64バイトとなっており、データのサイズの最小値も46バイトと定められている。また、ケーブルの最大長も1kmと定められている。
 ケーブルの種類は長さや直径によって変わり、

  • Thick Coax:10BASE-5(500m)
  • Thin Coax:10BASE-2(200m)

のような種類が存在する。

Star型ネットワークの登場

 これまでの同時期ケーブルを使ったデータ通信はBus型と呼ばれるもの。これではすべての端末に一回一回信号が送信されてしまったりなどと無駄が多かった。そこで提案されたのが、一つのハブから各端末にケーブルが伸びるようなStar型ネットワーク。この方式が出てきてしばらくは、ハブの機能は同軸ケーブルと変わらなかった。
 しかし、次第に「別の端末に信号送るの無駄じゃん?」って感じでスイッチングハブの提案がされた。

スイッチングハブ

 MACアドレスを管理するテーブルを保持している*2。これによって、フレームの宛先アドレスと合致するポートに限定して送信できるようになった。しかし、これでは衝突を検出することができないので、フレームのキャッシュを残しておくためのフレームバッファも必要になる。
 また、ケーブルは同軸ケーブルではなく、UTPケーブルを用いている。このケーブルには送信用と受信用のケーブルが備わっていて、送受信を同時にすることができる。この通信方法を全二重通信と呼ぶ。対して、同軸ケーブルを用いていた通信は半二重通信と呼ばれるものだ。どちらの通信方式がいいかは一概に言えず、時と場合による。

Ethernetの名称

 二つ前のセクションにも出てきた「10BASE-2」「10BASE-5」とかいう表記法だが、これは三つのことを表している。

  1. 伝送レート
  2. ビット列の加工の有無
  3. メディア(ケーブル)に関係するもの

 1.はそのままの意味です。伝送レートを表している。
 2.の値が「BASEの」場合はビットの加工はしていない。他に「BROAD」という表記があるが、こちらはビットを加工しているものを表す。しかし、めったにない。
 3.は同軸ケーブルか、何メートルのケーブルなのかなど、メディア関連のことを表現している。UTPケーブルを用いているときの表記は「-T」と決まっている。
 したがって、伝送レート10Mbpsでビット加工なし、UTPケーブルを用いているEthernetの表記は「10BASE-T」ということになる。

ほかにもいろいろEthernet

 マンチェスター符号化では1ビットを2パルスで表現していた。これを1B2B符号と呼ぶのだが、これでは情報量が50%になってしまい、非常にもったいない。そこで、4ビットを5パルスで表現する4B5B符号というものが登場した。この方式のEthernetの名称には最後に「X」が付く。
 また、光ファイバを利用したEthernetの名称は、メディアを表すところが「-F」になる。例えば、4B5B符号と光ファイバを用いて構成されている伝送レート100MbpsのEthernetの名称は「100BASE-FX」と表すことができる。

*1:このアドレスは、セグメントに接続されたすべてのホストにパケットを送るために用いられる

*2:MACアドレスとポートの対応付けは、初回アクセス時に行っている