ブロードキャストアドレス・マルチキャストアドレス
| ブロードキャストアドレス ブロードキャストとは、ネットワーク上のすべてのコンピュータに対する通信でした。そして、ブロードキャストを示すIPアドレスは、ホスト番号のビットがすべて"1"ということでした。詳しくは、メルマガバックナンバー、ホームページをご覧ください。 このIPレベルのブロードキャストを指定して、通信を行うときに作られるイーサネットフレームのあて先には何が入るんでしょうか?ここに、データリンクレベルのブロードキャストアドレスが入ってきます。 データリンクレベルのブロードキャストアドレスは、MACアドレス48ビットすべて"1"になっているものです。通常、MACアドレスは1バイトずつ16進数で表記するので、データリンクレベルのブロードキャストアドレスは次のようになります。 FF−FF−FF−FF−FF−FF IPレベルのブロードキャストアドレスを指定するとき以外でも、プロトコルの仕様上、ブロードキャストで通信する場合はあて先のMACアドレスにデータリンクレベルのブロードキャストアドレスが使われます。こないだ配信したARPリクエストがそうですね。ARPのパケットはIPが配送するのではないので、IPヘッダはありません。ARPヘッダの中には、MACアドレスを知りたいホストのIPアドレスが入ってきています。その目的のホストにきちんと到達できるように、データリンクレベルのブロードキャストでARPリクエストを送信しています。 まとめると、ブロードキャストアドレスは次のようになります。 IPレベル:IPアドレスのホスト部がすべてビット"1! データリンクレベル:48ビットすべて"1" FF−FF−FF−FF−FF−FF このようにブロードキャストアドレスはIPレベル、データリンクレベルの違いを意識してください。 |
| ブロードキャストの弊害 ついでに、なんでブロードキャストがネットワークに負荷をかけてしまうのか?ということについて。 トラフィック自体は、イーサネット上ではすべてのコンピュータに届いています。それがユニキャストであろうと、ブロードキャストであろうと。 でも、ユニキャストの場合だとあて先MACアドレスに指定されているコンピュータだけがそのデータをさらに上の階層のプロトコルに渡して処理を継続しているということでした。 ここがユニキャストとブロードキャストの違いになります。データリンクレベルまでは NIC が処理を行います。この階層では、各コンピュータはCPU 資源を使っていません。それよりも上の階層は、各コンピュータの OSやアプリケーションが処理を担当することになります。CPU資源を消費してしまうのです。ブロードキャストのトラフィックは、ネットワーク上の全てのコンピュータがネットワーク層にそのデータを渡してしまうことになります。つまりネットワーク上のすべてのコンピュータのCPU資源を消費することがブロードキャストトラフィックの弊害になります。 たとえば、ARPのリクエストは知りたい相手しか関係ないのに、他のコンピュータもネットワーク層のレベルで、「このリクエストは自分宛てじゃないな」と判断することになります。当然、この間はそのコンピュータが行っている他の処理に影響を与えてしまいます。 というわけで、ネットワーク上ではあまりブロードキャストを多用することは好まれないんですね。 |
| マルチキャストアドレス そして、マルチキャストもIPレベルとデータリンクレベルにわけて考える必要があります。 IPマルチキャストアドレスは、IPアドレスのクラスD、つまり最初の1バイトが224〜239の間のアドレスで定義されています。 そのマルチキャストをデータリンクレベル、つまりLAN上でどうやって識別するのか?ということがポイントになってきます。実は、MACアドレスの中にI/G(Individual/Group)ビットという部分があって、そこでユニキャストのMACアドレスか、マルチキャストのMACアドレスかわかります。I/Gビットは、MACアドレスの最初の1バイトの最下位ビットがそうです。 MACアドレス最初の1バイト ![]() IPマルチキャストアドレスを指定すると、イーサネットフレームのあて先MACアドレスに、I/Gビットが"1"のアドレスを使います。他の部分はどうなるかというとこれは、マルチキャストグループによって変わってきます。 が、一般的に使われるIPマルチキャストについては、すでに決められています。 たとえば、OSPFルータを示す 224.0.0.5 というアドレスがあります。このIPマルチキャストに対応するMACアドレスは、01-00-5E-00-00-05 となります。 最初の3バイト01-00-5EはIEEEが予約しているマルチキャスト用のアドレスになります。I/Gビットがオンになっているのがわかると思います。残りの3バイトのうち、最初の1ビットは"0"で予約されています。あと23ビットをIPアドレスの23ビットをそのまま使います。 |
(C) Copyright 2000 Gene All Right Reserved