MLD und IGMP mit Windows Sockets
Windows Sockets ermöglichen die Multicastlistenerermittlung (Multicast Listener Discovery, MLD) auf IPv6 und das Internet Group Management Protocol (IGMP) auf IPv4 für Multicastanwendungen mithilfe von Socketoptionen und IOCTLs. Auf dieser Seite werden die Socketoptionen beschrieben, die die Multicastprogrammierung ermöglichen, und wie sie verwendet werden. Definitionen der einzelnen Socketoptionen finden Sie auf der Seite Socketoptionen.
Informationen zur Verwendung von IOCTLs für die Multicastprogrammierung finden Sie unter Final-State-Based Multicast Programming weiter unten in diesem Abschnitt.
Auf Windows Vista und höher stehen mehrere Socketoptionen für die Multicastprogrammierung zur Verfügung, die IPv6- und IPv4-Adressen unterstützen. Diese Socketoptionen sind IP-agnostisch und können sowohl auf IPv6 als auch auf IPv4 verwendet werden. Auf IPv6 verwenden diese Socketoptionen MLDv2. Auf IPv4 verwenden diese Socketoptionen IGMPv3. Diese IP-unabhängigen Optionen sind die bevorzugten Socketoptionen für die Multicastprogrammierung auf Windows Vista und höher. Windows Sockets verwenden die folgenden Socketoptionen:
| Socketoption | Argumenttyp |
|---|---|
| MCAST _ BLOCK _ SOURCE | GROUP _ SOURCE _ REQ-Struktur |
| MCAST _ JOIN _ GROUP | GROUP _ REQ-Struktur |
| MCAST _ _ JOIN-QUELLGRUPPE _ | GROUP _ SOURCE _ REQ-Struktur |
| MCAST _ LEAVE _ GROUP | GROUP _ REQ-Struktur |
| MCAST _ LEAVE _ SOURCE _ GROUP | GROUP _ SOURCE _ REQ-Struktur |
| MCAST _ UNBLOCK _ SOURCE | GROUP _ SOURCE _ REQ-Struktur |
Für die Multicastprogrammierung stehen mehrere Socketoptionen zur Verfügung, die nur IPv6-Adressen unterstützen. Diese Socketoptionen verwenden MLDv1 oder MLDv2. Die verwendete MLD-Version hängt von der Version von Windows ab. MLDv2 wird unter Windows Vista und höher unterstützt. Windows Sockets verwenden die folgenden Socketoptionen:
| Socketoption | Argumenttyp |
|---|---|
| IPV6 _ MITGLIEDSCHAFT HINZUFÜGEN _ | ipv6 _ mreq-Struktur |
| IPV6 _ DROP _ MEMBERSHIP | ipv6 _ mreq-Struktur |
Für die Multicastprogrammierung stehen mehrere Socketoptionen zur Verfügung, die nur IPv4-Adressen unterstützen. Diese Socketoptionen verwenden IGMPv3 oder IGMPv2. Die verwendete IGMP-Version hängt von der Version von Windows ab. IGMPv3 wird unter Windows Vista und höher unterstützt. Windows Sockets verwenden die folgenden Socketoptionen:
| Socketoption | Argumenttyp |
|---|---|
| _IP-MITGLIEDSCHAFT HINZUFÜGEN _ | ip _ mreq-Struktur |
| _IP-QUELLMITGLIEDSCHAFT HINZUFÜGEN _ _ | ip _ mreq _ source structure |
| _ _ IP-BLOCKQUELLE | ip _ mreq _ source structure |
| IP _ DROP _ MEMBERSHIP | ip _ mreq-Struktur |
| IP _ DROP _ SOURCE _ MEMBERSHIP | ip _ mreq _ source structure |
| IP _ UNBLOCK _ SOURCE | ip _ mreq _ source structure |
Wenn IGMPv3 verfügbar ist, werden die Optionen IP _ ADD _ SOURCE _ MEMBERSHIP, IP BLOCK _ _ SOURCE, IP DROP SOURCE _ MEMBERSHIP und IP _ _ _ UNBLOCK SOURCE effizienter _ behandelt, da der Router die Filterung verarbeiten kann. Wenn nur IGMPv2 verfügbar ist, muss der Host die Filterung verarbeiten.
Es gibt zwei Kategorien, in die die meisten Anwendungen wahrscheinlich fallen: beliebige Quelle und kontrollierte Quelle.
- Any-Source-Anwendungen akzeptieren standardmäßig alle Quellen, sodass einzelne Quellen bei Bedarf deaktiviert werden können. Ein Beispiel für eine Beliebige-Quelle-Anwendung ist ein Videokonferenzanruf, der allen Empfängern die Teilnahme ermöglicht.
- Anwendungen mit kontrollierter Quelle beschränken Quellen auf eine bestimmte Liste, z. B. ein Internetsender oder die Übertragung eines wichtigen Ereignisses. Der Prozess der Verwendung von Socketoptionen unterscheidet sich jeweils geringfügig.
Auf Windows Vista und höher gelten die folgenden Schritte für Any-Source-Anwendungen:
- Verwenden Sie MCAST _ JOIN _ GROUP, um einer Gruppe beizutreten.
- Verwenden Sie MCAST _ BLOCK _ SOURCE, um eine bestimmte Quelle bei Bedarf zu deaktivieren.
- Verwenden Sie MCAST _ UNBLOCK _ SOURCE, um eine blockierte Quelle bei Bedarf erneut zuzulassen.
- Verwenden Sie MCAST _ LEAVE _ GROUP, um die Gruppe zu verlassen.
Auf Windows Vista und höher gelten die folgenden Schritte für Anwendungen mit kontrollierter Quelle:
- Verwenden Sie MCAST _ JOIN SOURCE _ _ GROUP, um jedes Gruppen-/Quellpaar zu verbinden.
- Verwenden Sie MCAST _ LEAVE SOURCE _ _ GROUP, um jede Gruppe/Quelle zu verlassen, oder verwenden Sie MCAST LEAVE _ _ GROUP, um alle Quellen zu belassen, wenn die gleiche Gruppenadresse von allen Quellen verwendet wird.
Die folgenden Schritte gelten für Any-Source-Anwendungen:
- Verwenden Sie IP _ ADD _ MEMBERSHIP, um einer Gruppe beizutreten (IPV6 _ ADD _ MEMBERSHIP für IPv6).
- Verwenden Sie IP _ BLOCK _ SOURCE, um eine bestimmte Quelle bei Bedarf zu deaktivieren.
- Verwenden Sie DIE _ IP-ADRESSE UNBLOCK _ SOURCE, um eine blockierte Quelle bei Bedarf erneut zuzulassen.
- Verwenden Sie IP _ DROP _ MEMBERSHIP, um die Gruppe zu verlassen (IPV6 _ DROP _ MEMBERSHIP für IPv6).
Die folgenden Schritte gelten für Anwendungen mit kontrollierter Quelle:
- Verwenden Sie IP _ ADD SOURCE _ _ MEMBERSHIP, um jedes Gruppen-/Quellpaar zu verbinden.
- Verwenden Sie IP _ DROP SOURCE _ _ MEMBERSHIP, um jede Gruppe/Quelle zu verlassen, oder verwenden Sie IP DROP _ _ MEMBERSHIP, um alle Quellen zu belassen, wenn die gleiche Gruppenadresse von allen Quellen verwendet wird.
Der Reihenfolge, in der diese Socketoptionen festgelegt werden, sind Regeln zugeordnet. Informationen und Problembehandlungsinformationen zu Multicastsocketoptionen finden Sie unter Multicastsocket-Optionsverhalten.