5. IPマルチキャスト
ネットワークプログラミング 5章 IPマルチキャスト
UDP通信では、マルチキャストを利用して同時に複数の相手にデータを送信することができます。本節では、MulticastSocketを利用したマルチキャスト通信の方法を学習します。 5.1. マルチキャストUDPにおけるデータの送信方式には3つの方法があります。
マルチキャストアドレスはクラスDのアドレス(224.0.0.1〜239.225.225.225)を用います。クラスDのアドレスはの通常のIPアドレスのように個別のホストに対して割り当てることはできません。クラスDのアドレス一つが、一つのホストグループを表します。 マルチキャストのパケットは、基本的にネットワークの全てのホストに向けて送信されます。パケットを受信した各々のホストは、自分がそのホストグループに含まれているがどうかを判断し、パケットを取捨選択します。 なお、通常マルチキャストパケットはルータを通過することができません。マルチキャスト対応のルータでマルチキャストを有効に設定した場合のみ、ルータを通過することができます。一般的なインターネットプロバイダはマルチキャストパケットを通過させていません。 5.2. MulticastSocketクラスMulticastSocketクラスはマルチキャスト通信を行うためのソケットを表すクラスです。MulticastSocketクラスはDatagramSocketクラスのサブクラスであり、DatagramSocketにマルチキャスト通信のための機能がいくつか追加されています。 DatagramSocketより追加された重要なメソッドは、マルチキャストグループに参加・脱退するためのメソッドです。
joinGroupメソッドがグループに参加するメソッド、leaveGroupメソッドがグループから脱退するメソッドです。mcastaddrで参加・脱退するマルチキャストアドレスを指定します。自ホストが複数のネットワークインタフェースを持つ時に、netifでどのインタフェースに対して設定するかを指定します。 これら以外に追加されたメソッドにはTTL(TimeToLive)値を取り扱うメソッドがあります。ソケットから送信されるパケットのTTL値を設定・取得します。
TTL値はIPパケットの生存期間を表します。TTL値はルータを通過するたびに1減少し、TTL値が0となったパケットはそれ以上転送されません。TTLの値を大きくすればするほど広範囲のネットワークに対してパケットが送信されることになります。ただし前述のとおり、TTL値を大きな値としてもマルチキャスト非対応のルータは通過できません。 MulticastSocketクラスのデフォルトのTTL値は1です。つまり、デフォルトでは、マルチキャストパケットはルータによって区切られたネットワーク内のみに転送されます。 |
![]()
![]()
|