ローカルエリアの物理ネットワーク-Ethernet
イーサネットは英語でつづるとEthernetとなります。etherのネットワークです。etherはラテン語ではエーテルと読むようですが英語読みは「イーサー」です。16世紀から19世紀まで、光は波なのか、粒子なのかということで論争がありました。そして、波であるとすると波を伝える媒体が必要ではないかということになり、これに対する仮説として、フランス人のフレネルという物理学者が、この宇宙はエーテル(ether、luminiferous
ether)という物質に満ち満ちており、光はこのエーテルによって伝えられるという説を発表しました。しかし、その後アインシュタインによってこのエーテルという考え方は否定され、光は真空中をも伝わる粒子性も併せ持った横波であるということになったようです。エーテル(ether)・アルコール(alcohol)=エチルアルコールのエーテルじゃないってことですね。
イーサネットの発明者はロバート・メランクトン・メトカーフ(Robert Melancton Metcalfe)です。メトカーフは当時参加していたMACプロジェクト(MITのコンピュータ科学研究所の前身)でMITのミニコンピュータ群をインターネットの前身であるARPANETに接続することに興味を持っていたのですが、あまりうまくいかなかったようです。後にゼロックスのパロアルト研究所(Palo
Alto Research Center、カリフォルニア州パロアルトにある世界的な研究所)に移り、ハワイ大学のALOHAnetの研究をして、イーサネットの着想を得ました。
最初の実験ネットワークでは、Alto Alohaネットワークと呼ばれていました。Altoはパロアルト(Palo Alto)からとっています。その後、メトカーフはケーブルなどの物理メディアが全てのコンピュータにビットを送信する様子が、かつて電磁波や光の伝播メディアとして想定されていたイーサーに似ていると考えて、イーサネットと命名しました。
初期のインターネットはイーサネットを接続することから始まっています。イーサネットのネットワーク同士を接続し、インターネットワークを構築し、これを徐々に大きくしていくというのが始まりでした。インターネットのプロトコル実装(プロトコル準拠のハードウェアやソフトウェア)は、イーサネットをプラットフォームとして開発されています。つまり、インターネットを支えている物理ネットワークがイーサネットだというわけです。その後、イーサネットはLANの主流となり、現在はほとんどのLANがイーサネットで構築されているといっても言い過ぎではありません。イーサネットという名前は、いまや開発者の命名の意図を超えて、この宇宙に満ち満ちている物質のごとく、世界にあまねく存在するネットワークという感じになっています。元々、そのような意味で命名したのではないかと勘違いしてしまいそうです。
ALOHAシステムはハワイ大学のNorman Abramson(元MITの工学教授だが、サーフィン好きが高じてハワイ大学に移る)が開発した無線ネットワークシステムです。ハワイ大学では、中央にコンピュータセンターを設置し、各施設に分散したネットワーク(キャンパスネットワーク)を結びつけるという構想を持っていました。各施設のキャンパスネットを中央のコンピュータセンターに接続しようとする場合、当時は電話回線を使うのが一般的でしたが、ハワイでは電話回線の信頼性が非常に低いという特殊事情がありました。
そこで、アブラムソンは、アマチュア無線(UHF帯を使ったもの)のようなシステムを使って各施設に分散するキャンパスネットワーク間を接続することにしました。
ALOHAシステムは極めて単純な仕組みを採用していました。当初のバージョンでは、①中央コンピュータをハブとする星形ネットワークで、端末から中央コンピュータへの流れ(アップストリーム)と、中央コンピュータから端末への流れで周波数を別にしていました。ダウンストリームの利用者は中央コンピュータだけなので衝突は発生しませんが、アップストリームは衝突の可能性がありました。この状況に輪をかけたのが、②送信したい端末はいつでもデータを送信できるという仕組みです。そして、③メッセージが他のメッセージと衝突したことが分かったら、「後で」再送します。この「後で」というのは極めて重要で、このプロトコルに関する研究はほとんど、この「後で」がいつになるべきかに関しています。
ALOHAシステムでは送信したいデータを持っている端末はいつでも送信することが出来きますが、どれかの端末が送信を始める場合は、他の端末はそれが終わるまでじっと待っていなくてはなりません。これを避けるために、パケットを出来るだけ小さくすることにしました。更に、パケットを送る間隔を空けることで他の端末がパケットを送信する余地が出来ます。しかし、同時に複数の端末が送信を開始した時は衝突が発生することは避けられません。ところが無線では衝突が発生したかどうかが分からないのです。そこで、ALOHAシステムでは、送信したパケットに対する承認(ACK)が戻ってくるまでの時間を目安にすることにしました。すぐに返事がない場合は何らかの問題が発生したと考えたのです。その場合はランダム時間待って再送します。実際はトラブルがない場合にも再送をすることもあります。このシステムでは、ネットワークが混雑してくると衝突が急激に増加していきました。
※衝突というとシステムの故障とか、データが壊れるというイメージを持つ方が多いと思いますが、衝突はシステムで初めから想定していることで故障とかトラブルではありません。衝突が発生すると複数の信号が混じりあってしまい、受信側でそれをえり分けて読み取ることができなくなるという意味です。
イーサネットは世界的に利用され、さまざまな規格が開発されていますが、初めに全部ひっくるめて話をすると混乱しますので、しばらくの間は伝送速度10Mbpsのいわゆる標準イーサネット(10BASE5、10BASE2、10BASE-T)を主なターゲットとして説明を進めます。10Mbpsのいわゆる標準イーサネットで、半二重通信方式にもとづいてCSMA/CDというメディアアクセス制御(MAC=Media
Access Control)を行う通信方式を前提にします。
ALOHAシステムのプロトコルはCSMAであるといわれることがあります。MA(Multi Access)とは複数の人(実際は、コンピュータ、あるいはシステム)で1つのチャンネルを使うという意味です。当然衝突の可能性があります。CS(Carrier
Sense)とはチャンネルを使いたい人は、使う前に他の人が使っていないか検査をして、誰も使っていない場合は、使うということです。
ALOHAシステムはシステムとしてはあまり大成功とはいかなかったようです。なぜでしょうか。一因として考えられるのは、CSMAが十分に機能しなかったためだと思います。無線では、CSが完璧にはいきません。お互いに無線の到達距離の外にいる端末がセンターのコンピュータと通信をしていても、反対側の端末にはそれが検知できないのです。その結果、衝突の可能性が格段に高まります。それから、もうひとつ決定的な原因となったのは、無線では衝突が検知できないということです。つまり、CDが欠けていたということになります。そこで、メトカーフはCSMAにCDを追加して、CSMA/CDにすることにしました。しかし、無線では、CSMA/CDを実現するのが難しいと考えて、バス型接続の有線ネットワークでCSMA/CDを実現することにしたのです。
有線通信では、半二重と全二重という通信の方式があります。半二重(half duplex)というのは双方向に通信ができるが、同時に双方からデータを送信できず、時間を区切って片方からしか送信できない方式のことです。双方向にデータをやり取りするためには定期的に通信の向きを切り替える必要がありますが、単一の帯域でデータ通信ができるという簡易さがあるため、初期の通信機器では半二重しかサポートしていないものがほとんどでした。最初のイーサネット標準は、この半二重の通信方式を採用しました。その結果、イーサネットに接続された全てのステーションは1つの通信チャネルを共有するということになります。
※イーサネットで構築されたネットワークに接続されているコンピュータやプリンターなどはNIC(Network Interface Card)を備えています。イーサネットに接続して、イーサネットの通信を行う装置はこのNICです。ただNICと呼ぶとイメージが沸きにくいと思いますので、NICの代わりにコンピュータ(NIC)と言ってもいいのですが、ここではステーションという言葉を使っていますので注意して下さい。従って、ステーションはコンピュータやプリンタその他のNICのついた装置を表します。
※半二重通信では伝送速度に限界がありますので、伝送速度を高めようとするといつかの時点でこの半二重通信方式をやめざるを得なくなります。双方向通信をいつでも実行できる方式を全二重通信方式といいます。全二重方式では衝突は発生しませんので、CSMA/CDも必要ありません。CSMA/CD方式を必要としない「イーサネット」ということになります。これをイーサネットというのかという問題もありますが、一般的にはCSMA/CDを使わない方式もイーサネットと呼ばれています。ネットワークの形もバス方ではなく、ステーションとステーションを直接接続するポイントツーポイント接続になります。
イーサネットは、バス型接続のネットワークを採用していますので、通信の方式はブロードキャスト型(放送型配送:受信したい、したくないにかかわらずデータが届いてしまう方式)になります。イーサネットの信号は1台のコンピュータのインターフェース(NIC)から送り出され、共有のチャンネル経由で全てのコンピュータに届けられます。フレームを受信したステーションはフレームの宛先フィールドのアドレスと、自分のMACアドレスを比較して、一致すれば更にフレーム全体を読み進め、自分のコンピュータで実行されているネットワーキングソフトウェアにフレームを渡します。自分のコンピュータではインターネットのソフトウエアが稼動している場合は、TCP/IPの実装に渡します。通常の場合は、IPの実装であるipd(dはdaemonの意味。OSのバックグラウンドで実行されるプログラムは~dという名前を持つ)に渡すことになります。受信フレームの宛先アドレスフィールドの値が、自分のMACアドレスと違うという場合は、その時点でフレームの読み込みを中止します(これでフレームを破棄したことになります)。
フレームの送信が終わると、フレームを送信しようとする全てのステーションは、次の送信の機会を待ちます。この機会は平等に与えられます。イーサネットは機会均等を保障する仕組みとしてCSMA/CDを採用しています。
CSMA/CDについては既に説明していますが非常に重要ですので、再度説明いたします。簡単に言うと、「共通回線(チャネル)にキャリアがないか検知し、なければ送信を開始、尚且つ送信中も衝突がないか監視する」というルールに従って動作します。
バス(共有の通信チャネル)に接続しているステーションはデータを送信する前にバス上に信号がないか確認します(Carrier Sense)。あれば(信号のある状態を「carrier」と呼びます)無くなるまで待たなくてはなりません。信号が無くなれば、誰でもチャネルを使える(Multi
Access;使いたいときに誰でもチャネルを使う権利を持っているということ)状態になります。
 |
CS
回線を使いたい人はその前に回線が空いているかチェック
|
誰も使っていないと判断してフレームを送信しても、同じことを思っている人が他にもいるかもしれません。したがって、CSを使っても衝突の発生を避けることはできません。これはエラーということではありません。イーサネットでは当然の前提事項ということです。
 |
同時にフレームの送信を始めることもある
|
 |
同時にフレーム送信を始めると衝突が発生する
衝突が発生すると2つの信号が混じってしまい受信者は2つの信号を読み分けることが難しい
|
フレームの衝突を検知したら再送を行います。では、衝突したということはどうやって判断するのでしょうか。これは回線のメディアが同軸ケーブルなのか、より対線なのか、光ファイバーなのかで違ってきます。また、フレームのヘッダの知識なども必要ですので、準備が整った段階で説明することにします。いつ再送するかは非常に重要です。再送時はランダムになるように決められています。そうしないとまた衝突が発生してしまうかもしれないからです。これについても後で説明します。
イーサネットでデータを送信する場合に使用されるビットの集合体をフレームといいます。フレームはフィールドに分けられ、イーサネットの通信で必要な制御情報や、イーサネットで伝送される情報データはそれぞれ決まったフィールドに格納されます。次にイーサネットフレームの各フィールドを示します。
64bits |
48bits |
48bits |
16bits |
46~1500bite |
32bits |
プリアンブル |
宛先アドレス |
送信元アドレス |
タイプ/長さ |
データ |
FCS |
上の宛先アドレスからCRCまでがイーサネットのフレームです。最初についているのは「プリアンブル」と言って、イーサネットフレームを流す際にイーサネットシステムのハードウェアや電子システムに対して、フレームの送信の始まりを認識するための準備時間を与える役目を担っています。いきなりフレームを流したのではシステムをびっくりさせてしまうからです。プリアンブル(preamble)は英語の辞書を引くと、「前口上」とか「前触れ」などという訳が出てきます。イーサネットフレームを流す前に「咳払い」するような感じでしょうか。10101010という、"1"と"0"のビット並びのバイトを7つ連続で送り、最後に10101011というバイトを送ります(最初の7バイトをプリアンブルと呼び、後の1バイトをSFDという言い方と、8バイトを全体でプリアンブルという言い方があります。これは規格による違いです)。全部で64ビットの長さがありますが、これはイーサネットの10BASE-T(10Mbps)標準に合わせているようです。この後、100Mbps、1000Mbpsと伝送速度が上がると、この仕組みが使えなくなり、プロアンブルとは異なる仕組みを導入せざるを得なくなったのですが、互換性を保つために、他の規格でも利用されています。
プリアンブルに続くのは宛先アドレスと送信元アドレスです。イーサネットは宛先アドレスと、送信元アドレスに48ビットのMACアドレスを使います。MACアドレスを割り振っているのは、IEEE-SAという管理団体です。ただし、IEEE-SAが割り振っているのは上位24ビットだけです。この上位24ビットはOUI(Organizationally
Unique Identifier)と呼ばれる番号です。イーサネット装置ベンダは自社の製品に、OUIに続けて固有の24ビットを割り振ります。これによって、重複のない48ビットのMACアドレスが出来上がります。装置ベンダはOUIに続ける番号を使い切ってしまうと、他の番号を再度求める(購入する)ことになります。この番号はイーサネットのインターフェース(NIC)毎に割り振られているので「ハードウェアアドレス」あるいは「物理アドレス」などと呼ばれています。あなたのパソコンに使われているNICのMACアドレスはpowershellで"ipconfig
/all"を実行すれば、イーサネットアダプターローカルエリア接続のブロックの物理アドレスの行に表示されています。
次は「タイプ/長さ」フィールドです。初心者を悩ませるところです。タイプなのか、長さなのか?通常はタイプが使用されます。イーサネットは通常はインターネットに対して物理ネットワークを提供しています。つまり、イーサネットを使っているところは通常は上位プロトコルとしてTCP/IPを使っているのです。タイプはイーサネットとTCP/IPを結びつける楔の役割をしています。TCP/IPのプロトコル階層については既に簡単に説明していますが、レイア(階層)3のプロトコルとして、ip以外に、arpやrarpなどがあったことを思い出してください。TCP/IPの場合は、レイア3のプロトコルとして何を利用しているのかは定まっていないのです。IPを使うことがほとんどですが、これは決まったわけではないので、通信ごとに指定しなくてはなりません。そのときに利用するのがこのタイプ番号というわけです。代表的なものは、IPv4=0x0800、ARP=0x0806、RARP=0x8035、IPv6=86DDなどです。イーサネットはインターネット以外のものも上位ネットワークとして使うことができるように設計されています。今はあまり利用されてはいないと思いますが、かつては利用者の多かったNovell
NetwareのIPXは0x8137、Apple Talkは0X809Bです。"0x"は16進表示を表しています。主なイーサネットタイプ番号(Ethernet
Type Number)を次に示します。
タイプ番号 |
Protocol |
0x0000~0x05DC |
IEEE802.3Length Field(10進で0~1500) |
0x0101-0x01FF |
実験用 |
0x0800 |
Internet IPv4 |
0x0806 |
Address Resolution Protocol (ARP) |
0x8035 |
Reverse Address Resolution Protocol (RARP) |
0x805B |
VMTP (Versatile Message Transaction Protocol) |
0x809B |
Apple Talk (Ether Talk) |
0x80F3 |
Apple Talk Address Resolution Protocol (AARP) |
0x8137 |
IPX (Novell Netware) |
0x814C |
SNMP over Ethernet |
0x8191 |
NetBIOS/NetBEUI |
0x817D |
XTP |
0x86DD |
IP version 6 (IPv6) |
0x8863 |
PPPoE Discovery Stage |
0x8864 |
PPPoE Session Stage |
0x9000 |
Loopback (Configuration Test Protocol) |
上位層を使わない場合は長さが入ります。では、このフィールドを長さフィールドとして使っているのか、それともタイプフィールドとして使っているのかはどうして判別するのでしょうか。ここは値の大きさで判別しています。このフィールドに16進数にして0x0600(10進で1536)以上の値が入っている場合は、タイプフィールドとして使っていて、0x05DC(10進では1500)以下の値が入っている場合は長さフィールドという約束になっています(1501~1535の間は意図的に未定義)。
次はデータフィールドで、大きさは64バイトから1500バイトまでと予め決まっています。これはイーサネットにつながる各ステーションその他の装置が適切な時間内にフレームの送出を検出できるように、イーサネットの信号の長さをある程度に保つ必要があるという配慮からです。
最後はFCS(フレームチェックシーケンス)はフレーム全体のデータの完全性をチェックするためのCRCという値が入ります。CRC(Cyclic
Redundancy Check:巡回冗長検査)はフレームを構成するビットパターンに対して多項式を適用することによって得られる固有の番号です。多項式を送信側と受信側で共有して、送信側は計算結果をFCSフィールドに入れて送信し、受信側では同じ多項式を使って再度計算し、計算結果をFCSフィールドの値と比較することで送信途中での誤りの有無を検査します。CRCという用語は特定のコードを指す言葉ではなく単なる分類名です。ベーシック手順、HDLC、イーサネットなどの通信方式によって、使っているCRCの具体的なコードは違います。
イーサネットの基本的な要素は、共通チャネルの利用をどのように制御するか(MAC)、チャネルに送信するデータユニットはどうすべきか(フレームフォーマット)と、物理回線(物理メディア)上に信号を送信する構成要素と、実際に信号を送る物理メディア(同軸ケーブルや、撚り対線、光ファイバなど)です。通信制御(MAC)についてはCSMA/CDを使っています。フレームヘッダについても説明しました。
物理メディア上に信号を送信する要素はコンピュータに装着するインターフェース(NIC)だけでなく、リピータやハブ、スイッチングハブなども含まれます。また、初期のイーサネットでは、インターフェースと物理メディアシステムを接続するためにトランシーバを必要としましたが、やがてトランシーバはインターフェースボードに内蔵されるようになりました。これらについてはまた、必要なところで少しずつ説明することにします。
イーサネットでは1つのケーブルで接続された部分をセグメントとか、ケーブルセグメントなどと言います。いくつかのケーブルセグメントを接続して大きなイーサネットシステムを構築する際に利用するのがリピータと呼ばれる装置です。リピータは単にセグメントに流れている信号を他のセグメントに中継するだけの装置です。
 |
リピータは電気信号を増幅して他のセグメントに伝える |
10BASE-Tよりも古い規格として10BASE5や10BASE2などの規格がありました。10BASE5や10BASE2では、セグメントはケーブルで構成されていました。最初の10Mbpsのイーサネット標準である10BASE5では、同軸ケーブルという太い線を使っていて、セグメントにコンピュータを参加させるときは、ケーブルの途中にトランシーバを装着して、トランシーバは同軸ケーブルに針を刺すような形で(この接続形態からバンパイヤー接続などの異名がある;Vampire tap)芯線に接続していました。10BASE2ではトランシーバはNICに内蔵されるようになりましたが、依然としてケーブルにコネクタを装着して回線にNICを接続していました。この当時はケーブルセグメントという言葉は適切だったと思います。
10BASE5や10BAAE2では複数のセグメントを接続するときはリピータという装置を使いました。複数のケーブルセグメントをつないでいくと、ケーブルの総延長距離が伸びていきますので、電気信号が弱くなります(減衰する)。それにより電気信号にゆがみが生じデータの受信処理がうまくいかなくなる可能性がありますので、途中にはさんだリピータで電気信号を増幅していました。
次に10BASE-Tが開発されるとケーブルは扱いやすい撚り対線(ツイストペアケーブル、UTP、Unshielded Twisted-Pair
Cable)になります。10BASE5や10BASE2の時代は、ケーブルは扱いにくくケーブルセグメントのステーションを追加するにも一苦労でした。ケーブルは大抵の場合、天井裏に引き回していたことが多かったので、ステーションを追加する際は天井裏に入って真っ黒になりながらトランシーバやコネクタを取り付けていたのですが、10BASE-Tは画期的な装置を導入してくれました。これがハブとか、リピータハブとよばる装置です。
 |
ハブは自分の中にケーブルセグメントを収めた |
10BASE-Tで導入されたハブ(リピータハブ)は機能的にはリピータとまったく同じで、電気信号の波形の増幅や整形を行いますが、画期的なのはケーブルセグメントを自分の中に収納して、複数のポートから10BASE-Tの撚り対線(UTP)を介して、ステーションをケーブルセグメントに参加させることができるということです。
UTPは8個のピンを持つRJ-45コネクタという終端装置を両端に備えていて、一方をステーションのNICのポート、他方をハブのポートに接続することで簡単に、ステーションをセグメントに参加させることを可能にしています。
 |
 |
撚り対線
2本ずつ撚ってある
|
RJ-45コネクタ |
 |
 |
撚り対線にRJ-45を装着
|
ハブにケーブルを装着
|
 |
 |
NIC
コンピュータやプリンターなどのイーサネットに接続するシステムに装着(ディスクトップパソコンの場合は、後背部のスロットからマザーボードに装着 |
NICとハブの接続 |
イーサネットのハードウェアコンポーネントの中で最も重要なのがNIC(Network Interface Card)です。LANカード、ネットワークカード、ネットワークアダプタなどと呼ばれることもあります。
インターフェースカードはMACプロトコルの機能を持っています。CSMA/CDだけでなく、例えば接続しているメディアの最大伝送速度に合せてフレームを送受信する機能や、フレームを一時的に格納するためのバッファメモリや、コンピュータシステムとの信号のやり取りをするための処理速度の調整機能などが含まれます。イーサネットの初期のころはこれらの処理を行う種々のチップが装着され、互いに結線されていたためNICはかなり大きなボードとなっていました。最近は、シングルチップ構造のイーサネットインターフェースが一般的でカードもコンパクトなものになっています。また、NICの機能が最初からマザーボードに装着された状態で販売されているディスクトップやノートパソコンが一般的になっています。このようなインターフェースはコンピュータシステムのハードウェアに適合して最大のパフォーマンスを出せるように既に調停されているはずです。別途購入して装着するという場合は、自分のコンピュータシステムにマッチしたものを購入しなくてはなりません。
表示したNICはディスクトップ型のパソコンに装着するタイプです。これ以外にも、ノートパソコンのスロットに装着するコンパクトなカード型のものや、USBポートに挿して使うタイプなどさまざまなタイプがあります。
撚り対線は8本の銅線を2本づつ撚り合わせて(ねじり合わせて;Twisted)4つのペア(pair)にして束ねたもの(Cable)です。ツイストペアケーブルには、ノイズの影響を抑えるためにシールド(Shielded)加工したSTP(Shielded
Twisted-Pair Cable、※Shield加工:芯線の周りを静電シールドで加工)とシールド加工していないUTP(Unshielded
Twisted-Pair Cable)があります。工場などのノイズが発生しやすい所はSTP、一般のオフィスなどではUTPが使われます。
RJ-45のピン配列は次の通りです。表を見て分かる通り送信用のピンと受信用のピンに分かれています。したがって、UTPケーブルの中では衝突は発生しません。
※"-"はグラウンド(ショート)を表しています。
ピン番号 |
信号 |
1 |
TD+(送信データ) |
2 |
TD-(送信データ) |
3 |
RD+(受信データ) |
4 |
未使用 |
5 |
未使用 |
6 |
RD-(受信データ) |
7 |
未使用 |
8 |
未使用 |
UTPタイプのLANケーブルにはストレートケーブルとクロスケーブルがあります。ストレートケーブルはRJ-45のピンの同じ番号同士をつないだケーブルです。2台のステーションのNICをストレートケーブルで直接接続すると、あるステーションのNICから送信されたフレームが相手側のステーションのNICの送信ポートに届きます。これでは通信は成り立ちません。一方の送信ピンと他方の受信ピンを接続するような結線でなくてはなりません。次にストレートケーブルと、クロスケーブルの結線図を示します。
 |
ストレートケーブルは同じ番号のピン同士を接続
|
 |
クロスケーブルはTD+とRD+、TD-とRD-を接続
|
単純に考えるとクロスケーブルを使わなくてはならないように思われるかもしれませんが、市場に出回っているのはほとんどがストレートケーブルです。クロスケーブルとクロスケーブルをつなぎ合わせると、ストレートの結線に戻ってしまいます。したがって、クロスケーブルと、ストレートケーブルが混在しているネットワークは非常に分かりにくいものとなります。そこで一般的にはストレートケーブルだけでネットワークを構成します。しかし、こうなるとコンピュータとハブを接続する場合はどうしたらいいでしょうか。普通はこれもストレートケーブルを使います。えっーと思った人もいると思いますが、ハブは自分の中で結線をクロスしているのです。
 |
ハブは自分の中で結線をクロス |
ハブは自分の中で結線をクロスしています。そのため、ステーションはストレートケーブルを使ってハブに接続できます。もし、ハブが自分の中で結線をクロスしていなかったらどんな状態が発生するでしょうか。ステーションとハブをクロスで接続すると、ステーション+ハブ+ステーションで、クロス+ストレート+クロスで、通信ができなくなってしまいます。あるステーションはクロスでハブに接続し、他のステーションはストレートで接続した場合は、通信ができますが、ストレートで接続した同士、クロスで接続した同士は互いに通信できないという困った事態になってしまいます。やはりストレート主体の結線がいいようです。しかし、ステーション同士を直接つなぐという場合はやはりクロスケーブルが必要ですので、1本位はクロスケーブルを用意しておくというのもいいかもしれません。
少しLANを拡張しようと思ったときはハブを多段接続してセグメントを延ばさなくてはなりません。ハブの数が偶数になると全体で結線が元に戻ってしまうのではないでしょうか。こうなると、ハブを偶数にするか、奇数にするかいつも気にかけている必要があります。うっかり偶数段にするとセグメント全体が通信不能に陥ってしまうかもしれません。そんなことになっては面倒ですので、ハブはUplinkというポートを備えています。このUplinkポートは中で結線をクロスしていません。これは上段のハブに接続するためのポートです。ハブを多段接続する場合は下段のハブのUplinkポートと上段のハブの通常のポートをつないでください。
 |
|
ハブのUplinkポート |
MDI-Xポート |
自分の中でストレートの結線をしているポートをMDI(media depend interface)といい、自分の中で結線をクロスしているポートをMDI-Xと呼びます。MDIポート同士をつなぐときはクロスケーブル、MDI-X同士をつなぐときもクロスケーブル、MDIとMDI-Xをつなぐときはストレートケーブルを使います。MDI-Xのポートには通常"x"マークがついています。
セグメントを接続して、イーサネットシステムを拡張させる場合は、ケーブルの長さはどれだけかとか、リピータで接続してセグメントを伸ばすのは何段目までとかいろいろの制限があります。これはどれだけの時間で信号がネットワーク全体に行きわたるかということと関係しています。これによってCSMA/CDが正常機能するかどうか影響するためです。これに関係してくるのがラウンドトリップ時間です。
ラウンドトリップ時間とは、信号が物理メディアシステムの両端を往復するのにかかる時間です。こういうと信号が物理メディアの末端で跳ね返ってくると勘違いする人がいるかもしれませんが、決してそんなことはありません。跳ね返ってくると衝突が発生してしまいますので、物理メディアの両端には終端抵抗がついていて信号を吸収して(消費して)跳ね返さないようにしています。ラウンドトリップ時間は仮に往復するとしたら必要な時間という意味です。半二重通信のイーサネットでは、このラウンドトリップ時間は厳密に規定されています。いろいろの物理メディアをリピータで接続する場合や、セグメントを伸ばす場合に、ラウンドトリップ時間を守らなくてはなりません。これが守られていれば、要求された時間待って、信号を検出できない場合は、チャネルに信号を流しても問題ないだろうということになりますが、守られていなければ、いいだろうと思って信号を流した場合でも衝突が発生してしまう確率が高くなり、システムが極めて不安定になってしまいます。このラウンドトリップ時間は物理メディアの種類によって異なりますので、メディアの種類ごとのルールを守る必要があります。
ここでは半二重方式のチャネル共有イーサネットにおける(と言ってもいいまで説明してきたイーサネットのことですが、特に強調したいので、言っておきました)フレーム送信のルールについて細かく見ていきたいと思います。
① チャンネル上に信号が存在している場合は、チャンネルは「キャリア」と呼ばれる状態になります。この状態では、チャネルに接続するステーションは待つしかありません。
② チャンネル上に信号がない状態を「アイドル」状態と言います。アイドル状態になったら、送信したいデータを持っているステーションは、短い時間(IFG、Interframe
Gap、フレーム間隔時間)だけ待ち、それでもアイドル状態が続いていたら、フレームを送信することが出来ます。フレームを連続して送りたい場合でも、IFGだけ空けなくてはなりません。
③ フレーム送信中に衝突を検出した場合、ステーションは32ビットの「衝突伝播ジャム信号」と呼ばれる信号を送信します。
④ 衝突を起こすことなくフレームの512ビット(プリアンブルを除く)を送信し終わったステーションには、チャネルの獲得が通知されます。正常に動作しているイーサネットならチャネル獲得後に衝突が発生することはありません。この512ビット時間を「スロットタイム」と呼びます。
スロットタイムは、総ラウンドトリップ時間(いくつものセグメントをつなげた場合を想定して、ランドトリップ時間の総和を計算)によって決まります。ラウンドトリップ時間がスロットタイムを越えると、チャネルを獲得したと思っても、その後で衝突が発生するなどの不都合が発生してしまう可能性があります。
● イーサネットスロットタイム
スロットタイムはラウンドトリップ伝播時間と衝突伝播に必要な時間(衝突の検出時間と、衝突伝播ジャム信号を送信する時間)の合計時間(ビット時間)に、誤差分の数ビットを加えた時間です。これは10Mbpsでは512ビット時間になります。
● スロットタイムとネットワークの最大距離
512ビット時間はケーブルの最大距離と最小フレームサイズとの得失の兼ね合いを考慮して選択されています。
● スロットタイムの使用
512ビット時間(スロットタイム)の間にフレームの送信に成功したステーションは、チャンネルを獲得できます。この512ビット時間は最大サイズのイーサネットの全ステーションがフレーム送信を検知するのに十分な時間で、また衝突情報が最も遠いステーションから戻って来るにも十分な時間です。この間に衝突が発生しなかったのですから、この後は衝突の心配をすることなく、フレームの残りを送信することが出来ます。
512ビット時間内は衝突が発生する可能性があります。回線上に信号が存在する(キャリア)場合、それを検出した全ステーションは送信を控えます。512ビット時間経過すればフレームは全ステーションに行きわたりますので、その後はフレームの送信を控えます。しかし、512ビット時間経過前はそうとは言い切れません。512ビット時間以前に衝突の発生を検知すれば(他の誰かが送信したフレーム破片が届く)フレームの送信をそこで止めますので、フレームが全部送信し終わっていないうちに送信を打ち切ることになります。つまり、途中で切れたフレームが発信されたことになります。ということは途中で切れている、つまり512ビット以下の長さのフレームは途中で送信停止をしたフレームだということになります。このような512ビットに満たないフレームはラント(runt、小さなもの)と呼ばれます。
● スロットタイムと最小フレームサイズ
512ビット以下のフレームは中途半端なフレームであるとするには、正常なフレームはどうしても512ビット以上なくてはなりません。プリアンブルの64ビットを除いて考えると、最短でヘッダ長は144ビットあります。512-144=368で、368/8=46バイトですから、データフィールドは最短でも46バイトなくてはなりません。データフィールドの説明で、46~1500バイトと言ったのはこういう意味があります。
10BASE5は太い(thick、シック)同軸ケーブル、10BASE2は細い(thin、シン)同軸ケーブルを使っていますので、衝突が起こります。同軸ケーブルでは複数のステーションが同時に信号を送信した場合、衝突が発生します。衝突が発生すると、通常よりも電圧が高い状態になりますので、平均の電圧レベルを観察していると衝突が発生したかどうかが分かります。10BASE-Tは撚り対線を使用します。撚り対線では、送信線と受信線が異なりますので、正面衝突のような形にはなりませんが、送信線と受信線で同時に活動が見られたら衝突が発生したと考えています(送信中に他のステーションからのフレームを受信したら衝突と考えている)。
512ビット時間内に発生する衝突は正常の範囲の衝突でシステムでは織り込み済みの衝突です。この場合は再送の仕組みが働きますし、衝突断片は他のステーションによって正常に破棄されます。問題は512ビット時間後に発生してしまった衝突です。これは「遅れ衝突」などと呼ばれますが、システムの障害です。
衝突が発生した場合は再送しますが、再度衝突が発生しないように送信ステーションはランダム時間を待ってから、再送を開始します。CSMA/CDが採用しているランダム時間のアルゴリズム(衝突バックオフアルゴリズム)は次の通りです。
待ち時間はスロットタイム512ビット時間の倍数に設定されます。10Mbpsではビット時間は100nsと決められています(ちなみに100Mbpsのファーストイーサネットでは10ns)。このスロットタイムをTと表します。待ち時間はTと次のようにして決められる整数値rの積によって決められます。
再試行回数をiとするとき、rは 0 ≦ r < 2 ^ i の条件を満たす任意の値
ただし、i > 10 の場合は、0 ≦ r < 2 ^10
※ i > 16 の場合は、再試行を止める
ということで、衝突を繰り返すほど、整数値の候補の幅は広くなります。
衝突後1回目の再試行では、rは0か1になりますので、0を選択した場合は直ちに再送を行い、1を選択した場合は512×100ns=51.2μsだけ待って再送を行うということになります。1回目の再送でまた衝突が発生したときは、スロットタイムの係数rは今度は0、1、2、3のいずれかになります。何度やっても衝突してしまうということはネットワークが混雑しているということになりますので、衝突を回避するためにはスロットタイム係数の選択幅を広げてやるしかありません。試行回数が10回に至るまでは、選択幅は指数関数的に急激に増加していきます。試行回数が10回を超えると選択肢の幅は、0~1,023(2^10=1,024)に固定され、16回目でなお衝突が発生する時は再送を諦めます。
5回も10回も再送を試みてもだめなのかといぶかる方もいると思いますが、2台が再送する場合は多分1回目か、2回目の再送でうまくいてのではないかと思います。しかし、100台、200台が同時に再送を試みることもありえないことではありません。バックオフアルゴリズムはこのような最悪の場合も考えた上でのアルゴリズムということになります。1,023回以上はもう諦めということと、リピータによって複数のケーブルセグメントが接続された場合の接続可能な最大ステーション数が1,024までに限定されているのには、関係があります。
10BASE5、10BASE2、10BASE-Tではリピータやリピータハブ(ハブ)によってセグメントを接続します。リピータやリピータハブ(ハブ)は信号をフレームとしてではなく、単なる信号のレベルで増幅するだけですので、複数のステーションが同時にフレームを送信すると衝突が発生します。この衝突が発生する範囲を衝突(コリジョン、Collision)ドメインといいます。リピータやハブによって接続したセグメントがコリジョンドメインを構成します。
 |
同じハブに接続したステーションは同一のコリジョンドメインに含まれる
|
 |
複数のコリジョンドメインをハブで接続すると単一のコリジョンドメインとなる
|
 |
スイッチングハブはコリジョンドメインを分割
複数のコリジョンドメインをスイッチングハブで接続しても別々のコリジョンドメインのまま
|
3節のフレームフォーマットの説明で、「タイプ/長さ」フィールドが初心者を悩ませると言いましたが、実は10Mbpsの標準にはDIX標準とIEEE802.3標準という2つの標準があります。この2つの標準はほとんど同一なのですが、「タイプ/長さ」フィールドだけが違っています。
イーサネットの開発者のメトカーフはイーサネットをオープンな標準にしたいと考えました。Xerox社は当初特許登録しましたが、その後、特許を開放してオープンな規格とすることに同意しました。その後、DecとIntelも開発に加えて、1979年には3社の頭文字をとったDIX標準を制定しました。その後、1982年にはXeroxはイーサネットの商標権も放棄しました。イーサネットは名実ともに世界で最初のマルチベンダに対応したオープンなLANになったのです。メトカーフはイーサネットがメーカ独自ではなくオープンな業界標準として発明(創作)されたことは、イーサネットの技術自体よりもずっと意義深いことだったと言っています。
このオープン規格に対して世界中の企業・技術者が様々な技術の仕様策定と製品の開発に加わりました。時を同じくして3Com社(COMputer、COMmunication、COMpatibilityの3つのCOMに由来)を設立したメトカーフは、ネットワーク製品開発競争を主導していくことになります。1980年当時は米国のIBM社の「トークンリング」や米国のAppleコンピュータ社の「Apple
Talk」などのローカルネットワーク製品もありましたが、規格を公開して多くの賛同者を得たイーサネットが勝者として残ることになりました。
1980年にはDIX仕様はIEEE802委員会に提出され、IEEEE802.3 CSMA/CDとして標準化されました。しかし、このときの仕様では、タイプ番号フィールドは「長さ」フィールドに書き換えられました。そして、同じイーサネットでDIX標準と、IEEE802.3標準が共存できるようなメカニズムが導入されました。しかし、ほとんどのネットワークソフトウェアはタイプフィールドを採用してきたため、IEEE80-2.3標準もやがて、用途に応じてタイプと長さを使い分けられるように定義されました。
イーサネットはOSI参照モデル的に言うと物理層とデータリンク層のみの物理ネットワークです。上位の論理的なネットワークを必要としています。開発当時の候補としてはNovell社のNetWareやMicrosoftなどのLAN
Managerなどがありましたが、直ぐにインターネットが有力候補となって現われます。
イーサネットの上位プルトコルとしてTCP/IPが乗ってくると、TCP/IPでやり取りされるべき情報は、イーサネットのデータフィールドに格納されます。しかし、イーサネットとインターネットは、全く別の互いに独立したものとして開発されましたので、当然のことながら、イーサネットはデータ部分に何が格納されているのか知ることが出来ません。中身が分からないのでTCP/IPのネットワーク層の誰に頼まれたのか、相手側の誰にデータを渡していいのかが分かりません。もちろん、上位層プロトコルはTCP/IPに決まったわけではありません。NETwareなども依然として候補であり続けていました。従って、上のプロトコルとしてNETwareなどが乗った場合にも対応が出来なくてはなりません。つまり、上のネットワークプロトコルと連携を取るための何らかの目印、申し送り状のようなものが必要とされました。それがヘッダの「タイプ」フィールドです。
イーサネットは上位層のプロトコルから依頼を受けたらそれに応じなくてはなりません(サービスの提供)。サービス提供では、上位層からの依頼品(TCP/IPならデータグラム)をフレームで包んで(カプセル化といいます)、サービス依頼者が誰だかわかるようにタイプ番号フィールドに目印を付けて、宛先のイーサネットに運びます。宛先は誰かは、上位層から指定されますが、上位層のプロトコルはIPアドレスで最終宛先を指定してきます。しかし、イーサネットはローカルの物理ネットワークですので、最終宛先まで運ぶことは出来ません。そこで、物理ネットワークの出口まで運びます。物理ネットワークの出口は上位層が教えてくれます(通常は、コンピュータの管理者が、IPに対して、デフォルトゲートウェイという形で教えます。あるいは、DHCPが自動的に設定してくれます)。ただし、出口の物理アドレスは分かりません。ここでもまた、TCP/IPが助けてくれます。TCP/IPが提供してくれる物理ネットワークの出口アドレスを知るためのツールをARPといいます。ARPで物理アドレスの出口アドレスを聞きだし、これをフレームのヘッダフィールドに記載して、フレームを物理ネットワークに送り出します。これを受信したステーション(デフォルトゲートウエイとして設定されているルータ)のNICはARPを呼び出し、次の出口(途中の場合はルータ)のNICのアドレスを聞きだし、フレームヘッダに格納します。これを宛先アドレスに到達するまで繰り返します。最終宛先のNICはタイプ番号から上位層プロトコル(の実装)に正しくデータフィールドの値(データグラム)を渡すことが出来ます。
現実世界の郵便制度にたとえると、TCP/IPでやり取りされるパケット(データグラム)が封書で、ローカルの物理ネットワーク内でパケットを運んでいるフレームは郵便局の郵便配送車というイメージになります。郵便局の配送車(たぶん実際は貨物列車か?)は郵便局から、郵便局に運び、目的地の郵便局の郵便配達係が、目的の家の郵便ポストに投函します。郵便ポストに入れられた封書の中にはセグメントという包が入っていて、このセグメントの中に本来やり取りされるべきメッセージが入っているというわけです。
ここまでは、概ね10Mbpsについて、その中でも代表的な10BASE-Tを前提として説明してきました。想定していたのはステーションには10BASE-T対応のトランシーバを内蔵するインターフェース(NIC)を装着し、UTPケーブルを使って、10BASE-Tに対応したポートを持つリピータハブに接続し、半二重の通信を行うというネットワークです。
しかし、イーサネットメディアの伝送速度は10Mbpsだけでなく、100Mbps、1Gbps、最近は10Gbpsなどのものもあります。また、集線装置はリピータハブだけでなく、スイッチングハブも登場しています。スイッチングハブは装置内部で全二重の通信を実現しますので、送信線(TD)と受信線(RD)を別々に持っているUTPケーブルで、ステーションを直接スイッチングハブに接続すれば、全く衝突のない通信を実現することが出来ます。ということは、CSMA/CD方式は必要なくなるということです。
「10BASE-T対応のトランシーバを内蔵するインターフェース」とか、「10BASE-Tに対応するポートを持つリピータハブ」と言いましたが、規格毎に符号化の方式が決まっていますので、対応していないとヘッダの制御情報を読み取ることが出来ません。また、伝送速度が異なると、当然ビット幅も異なりますので、正常にヘッダの制御情報を読み取ることが出来ません。小規模のネットワークではあまり気にする必要はありませんが、大きなネットワークを徐々に拡張していく計画がある場合は、標準への準拠や、ベンダー相互の運用性などを予め考慮しておく必要があります。
イーサネットのメディアシステムには標準策定時に省略表記が割り当てられます。この表記には伝送速度、信号種別、物理メディア情報という3つの部分があります。
初期のころ策定された標準では物理メディア情報は100m単位のケーブル長が使われていましたが、最近の標準ではメディアの種類(ツイストペア、光ファイバ)が表記されています。次に示すのはイーサネットのメディア標準のうちよく利用されているものです。
メディアシステム |
説明 |
二重化
サポート |
10BASE5 |
10Mbpsイーサネットシステムの一種。シック(太芯)同軸ケーブルを使用。「10」は伝送速度、BASEはベースバンド方式、「5」はケーブルセグメントの最長距離の500mを表す。500mを越える場合はリピータなどを使う。符号化はマンチェスタ符号化方式 |
× |
10BASE2 |
10Mbpsイーサネットシステムの一種。シン(細芯)同軸ケーブルを使用。ケーブルセグメントの最長距離は185mだが、簡潔に表現するために「2」と表記。リピータを使って延長。マンチェスター符号化方式 |
× |
10BASE-T |
10Mbpsイーサネットシステムの一種。カテゴリ3以上のツイストペアケーブルを使用。「T」は「twisted」の意味。マンチェスタ符号化方式 |
〇 |
10BASE-FL |
FOIRL(Fiber Optic Inter-Repeater Link)という初期の規格を改良したもの。FOIRLはリピータとリピータを光ファイバで接続するだけの規格だったが、10BASE-FLでは、ステーションもつなげる規格に拡張 |
〇 |
100BASE-TX |
100Mbpsファーストイーサネットシステムの一種。カテゴリ5のツイストペアケーブル2対を使用。4B/5B符号化方式 |
〇 |
100BASE-FX |
100Mbpsファーストイーサネットシステムの一種。光ファイバーケーブルを使用。4B/5B符号化方式 |
〇 |
1000BASE-SX |
1000Mbpsギガビットイーサネットシステムの一種。短波長(Short Wavelength)レーザ送信部と光ファイバケーブルを使用。8B/10Bブロック符号方式 |
〇 |
1000BASE-LX |
1000Mbpsギガビットイーサネットシステムの一種。長波長(Long Wavelength)レーザ送信部と光ファイバケーブルを使用。8B/10Bブロック符号方式 |
〇 |
1000BASE-CX |
1000Mbpsギガビットイーサネットシステムの一種。銅線ケーブルで100Mbpsを実現。8B/10Bブロック符号方式 |
〇 |
1000BASE-T |
1000Mbpsギガビットイーサネットシステムの一種。ツイストペアケーブルを使用。4D-PAM5ブロック符号化方式 |
〇 |
伝送路に電気信号を流す方式としてはベースバンド(baseband)方式とブロードバンド(braodband)方式があります。ベースバンド方式ではベースバンド信号を流します。ベースバンド信号とは、伝送したい元(オリジナル)の信号のことです。これに対してブロードバンド方式は搬送波と呼ばれるサイン(sine)波(正弦波)に伝送したい信号を載せて送信する方式です。サインカーブは遠くまできれいな形で届きますので、遠くまでデータを届けるときによく利用されます。搬送波にデータを載せることを変調と言います。イーサネットの規格でも10BROAD36という規格があります。これは広範な地域をカバーする目的としたシステムで「36」はシステム上の任意の2局間の距離が3,600mであることを示しています。しかし、最近では広範囲をカバーするメディアとして光ファイバが圧倒的に多くなっていて、ブロードバンドイーサネットの需要は高くありません。
上に示した標準は全てベースバンド方式です。ベースバンド方式はオリジナルなデータをそのまま信号にして送る方式です。変調をしないため遠くまで届きにくいのですが、色々の工夫をして信号の読み取りミスが生じないようにしています。単純に0は高電圧、1は低電圧などと決めてしまうと、0や1がずっと続いたような場合に、色々と困ったことがおこります。例えば、ずっと低電圧が続いている場合は、システムが壊れているのか1がずっと流れているのか分かりません。また、ずっと同じ電圧が続くと同期が取りにくいという問題もあります。例えば、10BASE-Tなどに利用されているマンチェスタ符号化方式の場合は、ビット時間を半分にして前半が高電圧で、後半が低電圧の場合を0、前半が低電圧で後半が高電圧の場合を1と定義しています。これによって、1あるいは0が連続しても、高電圧あるいは低電圧がずっと続くということはなくなります。また、高電圧と低電圧が繰り返しますので、同期を取りやすいという利点もあります。しかし、マンチェスタ符号は1ビット送信するのに実質的には2ビット送るのと同じビット時間を費やしているという問題があります。従って、伝送速度をもっと上げたいという場合は、別の工夫が必要となります。
100BASE-TX、100BASE-FXで使われている4B/5B符号化方式はデータを4ビットのブロックに分け、メディアシステムに送り出すときに5ビットにして送り出すものです。4ビットのコードグループ毎に5ビットのコードグループを割り当てる方式です。4ビットのコードグループは"1111"になったり、"0000"になったりすることが当然あるのですが、5ビットのコードグループは必ず0と1の組み合わせになるように、変換しています。
全二重(full-duplex)は、2台のステーション間で同時通信を可能にする伝送方式です。ステーション間のリンクはツイストペアケーブル(送信TDと受信RD線が別々)や光ファイバなどのポイントツーポイントのメディアを使い、集線装置はスイッチングハブなどの全二重通信に対応したものを利用しなくてはなりません。
 |
スイッチングハブを介した全二重通信
Aの送信線とCの受信線、Aの受信線とCの送信線が1対1接続される |
全二重では衝突は発生しません。上の例でいえばステーションAの送信線とステーションCの受信線が1本につながり、ステーションAの受信線とステーションCの送信線が1本の線でつながっています。ほとんど同時にステーションBがステーションCと通信しようとした場合は、バッファに保存し後で送ります。バッファメモリは高価ですので、低価格のスイッチではバッファの容量は小さめに抑えられます。バッファ一杯になったら捨てられてしまいます。これは結果としては衝突のようなものですが衝突ではありません。衝突ならA→Cの信号と、B→Cの信号の両方が捨てられることになりますが、全二重の場合は、片方は捨てられずに相手に届けられます。
衝突の心配なしに送信と受信を同時に行うことが出来ますので、100Mbpsのメディアなら、200Mbpsの帯域を使うことが出来ます。CSMA/CDを使いません。CSMA/CDが有効に機能するためには、セグメントの最大距離が制限を受けていましたが、全二重ではこの制限も必要なくなります。
ケーブルの最大長を制限するのはケーブルの信号伝送特性だけです。ツイストペアケーブルで使われている銅線は距離が長くなるとインピーダンス(交流の抵抗値)の影響で信号波形が乱れてきますが、光ファイバーは信号伝送特性が極めていいので、長い距離の伝送が可能となります。
更新履歴
2016/03/01 作成
|