ブロードキャスト
Broadcast
ブロードキャストは、決められた通信範囲にいる全端末へ向けて同じデータを送る方式です。EthernetやIPv4で使われますが、IPv6にはブロードキャストはなく、必要な用途にマルチキャストなどを使います。
🐾 猫で例えると?
タワーの上で、大きく口を開ける茶トラ。その場にいる全員へ向けて「お知らせ」を出す場面だと考えてみましょう。一匹ずつ相手を指定する代わりに、決められた範囲全体へ送る点がブロードキャストに対応します。ただし、届く範囲は無制限ではなく、ネットワークで区切られます。
💻 ネットワーク構築における「ブロードキャスト」とは?
通常のインターネット通信では、特定の相手(IPアドレス)を1つ指定してデータを送る「ユニキャスト(1対1)」が基本です。しかし、ネットワークに新しく機器を繋いだ直後など、「相手のIPアドレスやMACアドレスが分からない」という状況が必ず発生します。
寂しがり屋の茶トラがアメショの姿を見失った時、「アメショちゃーん!どこにいるのー!?」と家中に響き渡る声で鳴くように、ネットワーク上の端末も「このIPアドレスを持っている人は誰ですか?返事をして!」という問い合わせを全員に向けて一斉送信します。この無差別の呼びかけがブロードキャストであり、ARP(Address Resolution Protocol)などの重要な仕組みを支えています。
⚠️ ブロードキャストの仕組みと注意点
ブロードキャストは特定のネットワーク(ルーターで区切られた範囲内)にしか届きません。もし世界中の全パソコンに向けて一斉送信できてしまったら、インターネットは一瞬でパンクしてしまうため、ルーターは原則としてブロードキャストの通信を外へ通さない(破棄する)仕様になっています。
ブロードキャストストームの恐怖
Ethernetの配線がループし、ループを止める仕組みが働かないと、ブロードキャストフレームが複製・転送され続け、帯域を消費することがあります。これがブロードキャストストームの一因です。ケーブルが複数あるだけで必ず起きるわけではなく、VLANやスイッチのループ防止設定も関係します。
# Python 3でアドレス範囲だけを確認する例(通信は送信しません)
import ipaddress
network = ipaddress.ip_network("192.168.1.0/24")
print(network.broadcast_address) # 192.168.1.255
smaller = ipaddress.ip_network("192.168.1.0/26")
print(smaller.broadcast_address) # 192.168.1.63 このようにブロードキャストアドレスはプレフィックス長によって変わり、常に末尾が255とは限りません。また、全端末がブロードキャストpingへ応答するとは限らないため、応答数をそのまま接続台数と数えることはできません。
🛠️ ブロードキャストを賢く管理するためのポイント
安定したネットワークを運用するためには、ブロードキャストが届く範囲(ブロードキャストドメイン)を適切にコントロールすることが重要です。
- VLAN(仮想LAN)を活用する: 物理的な配線を変えずに、スイッチングハブの設定でネットワークを論理的に分割(VLAN)し、ブロードキャストが届く範囲を狭めることで、無駄な通信トラフィックを削減します。
- ループ防止機能(スパニングツリー)を有効にする: スイッチ間の接続でループを作らないように設計します。STP(Spanning Tree Protocol)などの機能を使う場合は、機器と構成に合う設定を確認します。
- サブネットマスクの設計を適切に行う: 1つのネットワークに含める端末数が多すぎると、ブロードキャストの処理だけで端末のCPUを消耗してしまうため、適切な規模でサブネットを分割します。
茶トラの大きな呼びかけは、同じ場所にいる相手へまとめて知らせるイメージです。ネットワークでも全員に届く範囲は決まっています。別のサブネットにも届くと思い込まず、送信先と到達範囲を確かめて使いましょう。