TCP/IPにおけるデータ転送の方法 ~ユニキャスト/ブロードキャスト/マルチキャスト

TCP/IP(IPv4)でデータを転送するには、次の3つの方法があります。

  • ユニキャスト
  • ブロードキャスト
  • マルチキャスト

マルチキャストの仕組みをきちんと理解するために、ユニキャスト/ブロードキャストのデータ転送についても振り返ります。

ユニキャストは1対1のデータ転送で、あて先は1つのホストのみです。一方、ブロードキャスト、マルチキャストは1対多のデータ転送です。ブロードキャストはあて先が同じネットワーク上のすべてのホストになります。マルチキャストのあて先は特定のグループに所属するホストです。

マルチキャストによるデータ送信の特徴を明らかにするため、まずユニキャストとブロードキャストによるデータ転送を考えていくことにします。特にそれぞれのデータのアドレス情報とレイヤ2スイッチでの扱いに注目します。

ネットワークの階層ごとに「パケット」「フレーム」などデータの呼び方が変わりますが、ここでは「データ」として統一することにします。

ユニキャストのデータ転送

ユニキャストは1対1のデータ転送を意味します。あて先は1つのホストです。ユニキャストのデータのアドレス情報を考えましょう。アドレス情報は階層ごとに捉える必要があり、ユニキャストのデータのアドレス情報は次のようになります。

  • レイヤ3のアドレス情報
    クラスA~クラスCのユニキャストIPアドレス
    データを送信したいルータやホストのインタフェースに設定されているユニキャストIPアドレスを宛先IPアドレスに指定。
  • レイヤ2のアドレス情報
    NIC(イーサネットインタフェース)のMACアドレス
    宛先ホストが同じサブネットの場合-送信先ホストのMACアドレス
    宛先ホストが違うサブネットの場合-デフォルトゲートウェイのMACアドレス
    (レイヤ2のアドレス情報は、イーサネット環境に限定して考えています)

下記のネットワーク構成をサンプルにしてユニキャストによるデータ送信を考えてみます。イーサネットの環境はよくバス型のトポロジで表されますが、現在はほぼスイッチを中心としたスター型トポロジです。そのため、スイッチを中心としたスター型トポロジのネットワーク構成で考えます。

図 ネットワーク構成のサンプル
図 ネットワーク構成のサンプル

このネットワーク構成のホストAからホストDにユニキャストでデータを送信するとき、アドレス情報は次のようになります。

  • レイヤ3のアドレス情報
    宛先IPアドレス:192.168.1.4
    送信元IPアドレス:192.168.1.1
  • レイヤ2のアドレス情報
    宛先MACアドレス:D
    送信元MACアドレス:A

宛先MACアドレスは、ARPによって自動的に解決します。ARPの処理については省略しています。

ホストAからホストDのユニキャストによるデータ送信を図に表すと次のようになります。

図 ユニキャストのデータ転送
図 ユニキャストのデータ転送

この図では、レイヤ2スイッチですでにMACアドレステーブルが完成していると仮定しています。ホストAから送信されたユニキャストのパケットは、レイヤ2スイッチで宛先MACアドレスを参照してホストDが接続されているポートにのみ転送されていきます。

ブロードキャストのデータ転送

次にブロードキャストのデータ転送を考えます。ブロードキャストは同じサブネット上の全ホスト宛にデータを転送します。ホストAからブロードキャストする場合のデータのアドレス情報は次のとおりです。

  • レイヤ3のアドレス情報
    宛先IPアドレス:255.255.255.255
    送信元IPアドレス:192.168.1.1
  • レイヤ2のアドレス情報
    宛先MACアドレス:FF-FF-FF-FF-FF-FF
    送信元MACアドレス:A

ホストAからデータをブロードキャストしている様子は次の図のようになります。

図 ブロードキャストのデータ転送
図 ブロードキャストのデータ転送

ホストAから送信されたブロードキャストはレイヤ2スイッチでフラッディングされます。フラッディングとは受信したポート以外のすべてのポートに転送することです。フラッディングするためには元々1つのデータを複数にコピーしなければいけません。レイヤ2スイッチがデータを必要な数分だけコピーして転送します。

転送されたデータは、ホストB、ホストC、ホストDに伝わります。このデータの送信先MACアドレスや送信先IPアドレスがブロードキャストアドレスなので、各ホストは受信してデータを処理します。

マルチキャストのデータ転送

最後にマルチキャストのデータ転送について見てみましょう。マルチキャストは、特定のマルチキャストグループに所属するホスト宛にデータを送信します。マルチキャストグループはクラスDのIPアドレスで定義します。

たとえば、ホストC、ホストDでマルチキャストグループ239.1.1.1というグループを作成し、ホストAから239.1.1.1へのマルチキャストする場合のアドレス情報は次のようになります。

  • レイヤ3のアドレス情報
    宛先IPアドレス:239.1.1.1
    送信元IPアドレス:192.168.1.1
  • レイヤ2のアドレス情報
    宛先MACアドレス:239.1.1.1に対応したMACアドレス
    送信元MACアドレス:A

ホストAから239.1.1.1へマルチキャストでデータを送信する様子を表すと次の図になります。

図 マルチキャストのデータ転送
図 マルチキャストのデータ転送

ホストAから送信されたマルチキャストのデータはレイヤ2スイッチによってフラッディングされます。つまり、レイヤ2スイッチはブロードキャストもマルチキャストも同じように取り扱います。

フラッディングによってホストB、ホストC、ホストDにマルチキャストのデータが届きます。ホストBは、マルチキャストグループに参加していないので、届いたマルチキャストのデータを受信しません。一方、マルチキャストグループに参加しているホストC、ホストDは届いたマルチキャストを受信して処理を行っていきます。

以上のようにユニキャスト、ブロードキャスト、マルチキャストのデータ送信はそれぞれレイヤ3、レイヤ2のアドレス情報やレイヤ2スイッチでの転送の様子が異なっています。

IPマルチキャストの仕組み