インターネットのマルチキャスト

# プロセスを同時に複数に対して送る
>通常のIPの通信は一つの送り手と一つの受け手の間で行われる。しかし、プロセスが同時に複数の受け手に送ることができる方が役に立つアプリケーションも存在する

>マルチキャストとは、`1対多のIP通信方式`です。マルチキャストで送信されたデータは、`特定の集団（グループ）に所属する全員が受信`します。またマルチキャストは、以下のように送信者と受信者で利用方法が異なるのが特徴です。

| |  | 
| ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 
| 送信者 | グループ所属の有無に関わらず、どこからでもデータを送信できる。送信者は、以下の手順でマルチキャストを利用する。<br>* グループと紐づいたルーターに対して、データを送る。<br>* データはルーターなどのネットワーク機器で複製され、グループのメンバー全員に送られる。 | 
| 受信者 | データを受信したい場合、グループに参加する。| 

https://business.ntt-east.co.jp/service/cast/column/multicast/index.html#id_01_1:~:text=%E3%83%9E%E3%83%AB%E3%83%81%E3%82%AD%E3%83%A3%E3%82%B9%E3%83%88%E3%81%A8%E3%81%AF%E3%80%811%E5%AF%BE,%E3%81%97%E3%81%9F%E3%81%84%E5%A0%B4%E5%90%88%E3%80%81%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%81%AB%E5%8F%82%E5%8A%A0%E3%81%99%E3%82%8B%E3%80%82

# クラスDのIPアドレスでマルチキャストする
>IPは、クラスDのIPアドレスを使うことで、一体多通信（マルチキャスト)をサポートしている。それぞれのクラスDアドレスは、ホストのグループを表している。グループを表すのに28ビット利用できるため、２億5000万以上のグループが同時に存在可能である。
### 全力でパケットを送るが届いたかどうかは保証されない
>プロセスがパケットをあるクラスDアドレスへ送ると、そのグループのアドレスで示されているすべてのメンバーへベスト・エフォートでパケットをパケットが配送されるが、いかなる保証も行われない。

# クラスDとは
>クラスD：`先頭ビット列が「1110」`
クラスDは、`マルチキャストアドレスに使用されるIPアドレス`です。特殊用途のIPアドレスであり、先頭4ビットが「1110」で始まります。
>
>マルチキャストは、複数のコンピュータに同じデータを同時に送信する技術であり、ビデオ会議やオンラインゲームなどで活用されています。
>
>クラスDのIPアドレスは、通常のコンピュータには割り当てられません。`10進数では、「224.0.0.0」～「223.255.255.255」`と表します。

https://www.gmo.jp/security/brandsecurity/dns/blog/ip-address/#:~:text=223.255.255.255%E3%80%8D%E3%81%A8%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82-,%E3%82%AF%E3%83%A9%E3%82%B9D%EF%BC%9A%E5%85%88%E9%A0%AD%E3%83%93%E3%83%83%E3%83%88%E5%88%97%E3%81%8C%E3%80%8C1110%E3%80%8D,%E3%81%BE%E3%81%9B%E3%82%93%E3%80%8210%E9%80%B2%E6%95%B0%E3%81%A7%E3%81%AF%E3%80%81%E3%80%8C224.0.0.0%E3%80%8D%EF%BD%9E%E3%80%8C223.255.255.255%E3%80%8D%E3%81%A8%E8%A1%A8%E3%81%97%E3%81%BE%E3%81%99%E3%80%82,-%E3%82%AF%E3%83%A9%E3%82%B9E%EF%BC%9A%E5%85%88%E9%A0%AD

### クラスDの特定のIPアドレス
>244.0.0.1 LAN上のすべてのシステム
244.0.0.2 LAN上のすべてのルーター
244.0.0.5 LAN上のすべてのOSPFルーター
244.0.0.251 LAN上のすべてのDNSルーター

# 同じLAN上でクラスDの範囲でブロードキャストされる
>IPアドレスの244.0.0.0/24の範囲は、`ローカル・ネットワークでマルチキャストを行うために予約されている。`この場合はルーティング・プロトコルは必要ない。`パケットはマルチキャスト・アドレスと共にLAN上へ単にブロードキャストされる。`LAN上のすべてのホストがこのブロードキャストを受信し、グループのメンバーであるホストのみがこのパケットを処理する。

### メンバーとは何か?
>データはルーターなどのネットワーク機器で複製され、グループのメンバー全員に送られる。

https://business.ntt-east.co.jp/service/cast/column/multicast/index.html#id_01_1:~:text=%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AF%E3%83%AB%E3%83%BC%E3%82%BF%E3%83%BC%E3%81%AA%E3%81%A9%E3%81%AE%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E6%A9%9F%E5%99%A8%E3%81%A7%E8%A4%87%E8%A3%BD%E3%81%95%E3%82%8C%E3%80%81%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%81%AE%E3%83%A1%E3%83%B3%E3%83%90%E3%83%BC%E5%85%A8%E5%93%A1%E3%81%AB%E9%80%81%E3%82%89%E3%82%8C%E3%82%8B%E3%80%82

### 異なるネットワークのメンバーだとルーティングが必要となる
>他のマルチキャスト・アドレスは、異なるネットワークのメンバーを含んでいる場合もある。こういった場合には、ルーティング・プロトコルが必要になる。しかし、まずはどのホストがこのマルチキャスト・グループのメンバーであるかをマルチキャスト・ルーターが把握する必要がある。

# IGMP(Internet Group Magagement Protocol:インターネット・グループ管理プロトコル)
>ネットワークに接続されているコンピュータやその他の機器は、IGMPを使用してマルチキャストグループに参加にします。IGMPに対応するルーターは、どの機器がどのマルチキャストグループに属しているかを把握するために、機器からのIGMP送信を待ち受けます。
>
>IGMPは、マルチキャスト用に確保されたIPアドレスを使用します。マルチキャストのIPアドレスは、224.0.0.0～239.255.255.255の範囲にあります（これに対してエニーキャストネットワークでは任意の通常のIPアドレスを使用できます）。マルチキャストグループごとに、これらのIPアドレスを1つずつ共有します。ルータは、共有IPアドレスに向けられた一連のパケットを受信すると、それらのパケットを複製し、マルチキャストグループのすべてのメンバーにコピーを送信します。
>
>IGMPマルチキャストグループはいつでも変更することができます。デバイスは任意の時点で IGMPに「Join Group」または「Leave Group」メッセージを送信することができます。

https://www.cloudflare.com/ja-jp/learning/network-layer/what-is-igmp/#:~:text=%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%81%95%E3%82%8C%E3%81%A6,%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82

### プロセスがグループに出入りを指示する
>プロセスは、`ある具体的なグループに加わるよう、そのホストに要求する`ことができる。また`グループを離れるようにホストに要求`することもできる。

### プロセスがいなくなるとグループがなくなる
>`各ホストは、そのプロセスが現在どのグループに属しているかの情報を保持`している。`ホスト上の最後のプロセスがグループを離れたとき、そのグループはもはやホスト上には存在`しなくなる。

### LAN上でプロセスが所属するグループに対して折り返し要求する
>ある瞬間において、各マルチキャスト・ルーターはハードウェア（データ・リンク層）マルチキャストをそのLAN上のすべてのホスト（アドレス224.0.0.1)へ送り、それらのプロセスが現在属しているグループについて折り返し報告してくれるよう要求する

>各ホストは関連するすべてのクラスDアドレスに対して返答する

https://bookplus.nikkei.com/atcl/catalog/23/03/16/00728/