Freigeben über


MLD und IGMP mit Windows-Sockets

Windows Sockets ermöglicht die Multicastlistenerermittlung (MLD) unter IPv6 und das Internet Group Management Protocol (IGMP) für IPv4 für Multicastanwendungen mithilfe von Socketoptionen und IOCTLs. Auf dieser Seite werden die Socketoptionen beschrieben, die die Multicastprogrammierung ermöglichen, und ihre Verwendung wird beschrieben. Definitionen der einzelnen Socketoptionen finden Sie auf der Seite Socketoptionen .

Informationen zur Verwendung von IOCTLs für die Multicastprogrammierung finden Sie weiter unten in diesem Abschnitt unter Final-State-Based Multicast Programming .

Unter Windows Vista und höher stehen eine Reihe von Socketoptionen für die Multicastprogrammierung zur Verfügung, die IPv6- und IPv4-Adressen unterstützen. Diese Socketoptionen sind IP-unabhängig und können sowohl für IPv6 als auch für IPv4 verwendet werden. Unter IPv6 verwenden diese Socketoptionen MLDv2. Unter IPv4 verwenden diese Socketoptionen IGMPv3. Diese ip-unabhängigen Optionen sind die bevorzugten Socketoptionen für die Multicastprogrammierung unter Windows Vista und höher. Windows Sockets verwendet die folgenden Socketoptionen:

Socketoption Argumenttyp
MCAST_BLOCK_SOURCE GROUP_SOURCE_REQ-Struktur
MCAST_JOIN_GROUP GROUP_REQ-Struktur
MCAST_JOIN_SOURCE_GROUP 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 eine Reihe von Socketoptionen zur Verfügung, die nur IPv6-Adressen unterstützen. Diese Socketoptionen verwenden MLDv1 oder MLDv2. Die verwendete MLD-Version ist von der Windows-Version abhängig. MLDv2 wird unter Windows Vista und höher unterstützt. Windows Sockets verwendet die folgenden Socketoptionen:

Socketoption Argumenttyp
IPV6_ADD_MEMBERSHIP ipv6_mreq-Struktur
IPV6_DROP_MEMBERSHIP ipv6_mreq-Struktur

 

Für die Multicastprogrammierung stehen eine Reihe von Socketoptionen zur Verfügung, die nur IPv4-Adressen unterstützen. Diese Socketoptionen verwenden IGMPv3 oder IGMPv2. Die verwendete IGMP-Version hängt von der Windows-Version ab. IGMPv3 wird unter Windows Vista und höher unterstützt. Windows Sockets verwendet die folgenden Socketoptionen:

Socketoption Argumenttyp
IP_ADD_MEMBERSHIP ip_mreq-Struktur
IP_ADD_SOURCE_MEMBERSHIP ip_mreq_source Struktur
IP_BLOCK_SOURCE ip_mreq_source Struktur
IP_DROP_MEMBERSHIP ip_mreq-Struktur
IP_DROP_SOURCE_MEMBERSHIP ip_mreq_source Struktur
IP_UNBLOCK_SOURCE ip_mreq_source Struktur

 

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 fallen: any-source und controlled-source.

  • Any-Source-Anwendungen akzeptieren standardmäßig alle Quellen, sodass einzelne Quellen nach Bedarf deaktiviert werden können. Ein Beispiel für eine beliebige Quellanwendung ist eine Videokonferenz, die es allen Empfängern ermöglicht, teilzunehmen.
  • Anwendungen mit kontrollierter Quelle beschränken Quellen auf eine bestimmte Liste, z. B. einen Internetradiosender oder die Übertragung eines wichtigen Ereignisses. Der Prozess der Verwendung von Socketoptionen unterscheidet sich jeweils geringfügig.

Unter Windows Vista und höher gelten die folgenden Schritte für Beliebige Quellanwendungen:

  • 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.

Unter 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 von allen Quellen dieselbe Gruppenadresse verwendet wird.

Die folgenden Schritte gelten für Beliebige Quellanwendungen:

  • 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 IP_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 dieselbe Gruppenadresse von allen Quellen verwendet wird.

Die Reihenfolge, in der diese Socketoptionen festgelegt werden, weist zugeordnete Regeln auf. Informationen und Informationen zur Problembehandlung zu Multicast-Socketoptionen finden Sie unter Verhalten der Multicast-Socketoption.