Freigeben über


Portieren von Broadcastanwendungen zu IPv6

In diesem Abschnitt werden bewährte Methoden für das Portieren einer IPv6-Broadcastanwendung zu den Multicastfunktionen beschrieben, die mit Windows Sockets verfügbar sind.

Vergleichen von IPv4 mit IPv6

Der wichtigste Aspekt bei der Vorbereitung des Portierens einer IPv4-Broadcastanwendung zu IPv6 ist folgendes: IPv6 verfügt über kein implementiertes Konzept der Übertragung. Stattdessen verwendet IPv6 Multicast.

Multicast für IPv6 kann herkömmliche Broadcastfunktionen in IPv4 emulieren. Das Festlegen der Option IPV6_ADD_MEMBERSHIP Sockets mit der IPv6-Adresse, die auf die Adresse aller Knoten (FF02::1) festgelegt ist, entspricht der Übertragung auf IPv4-Broadcastadressen mithilfe der Option SO_BROADCAST Socket. Diese Adresse wird manchmal auch als Multicastgruppe mit allen Knoten bezeichnet. Für Anwendungen, die einfach nur Broadcastemulation für IPv6 wünschen, ist dieser Ansatz operativ gleichwertig. Ein wichtiger Unterschied zu IPv6 besteht jedoch darin, dass Multicasts für die Multicastgruppenadresse mit allen Knoten standardmäßig nicht empfangen werden (IPv4-Broadcasts werden standardmäßig empfangen). Anwendungsprogrammierer müssen die Option IPV6_ADD_MEMBERSHIP Socket verwenden, um den Multicastempfang von einer beliebigen Quelle zu ermöglichen, einschließlich der Multicastgruppenadresse mit allen Knoten.

Hinweis

In IPv6 wird die Schnittstellenauswahl in der Argumentstruktur angegeben, die an die Multicastsocketoption oder IOCTL übergeben wird.

 

Für umfangreichere, robustere, selektivere und besser verwaltbare Übertragungen an mehrere Hosts sollten Anwendungsentwickler jedoch den Wechsel zu einem Multicastmodell in Betracht ziehen.

Wechseln zu Multicast

Mit Multicast können Anwendungsprogrammierer ein bestimmtes Quell-/Gruppenpaar selektiv auswählen, wodurch ein selektives Empfangsmodell ermöglicht wird. Die Multicastlistenerermittlung (MLD) für IPv6 und Version 3 des Internet Group Management Protocol (IGMPv3) für IPv4 unterstützen die Multicasting-Programmierung. Darüber hinaus ermöglicht Multicast Anwendungen das spezifische Blockieren (oder Aufheben der Blockierung) von Absendern innerhalb einer Gruppe, wodurch Anwendungen vor nicht autorisierten Sendern weiter geschützt werden. Diese Funktion ist für IPv4 (erfordert IGMPv3) sowie für IPv6 (erfordert MLDv2) verfügbar.

Es gibt zwei primäre Szenarien für Anwendungsprogrammierer, die Multicast verwenden: die Portierung von IPv4-Broadcastanwendungen (oder Multicastanwendungen) zu IPv6 und diejenigen, die neue IPv6-Multicastanwendungen erstellen.

Für das Portieren vorhandener Anwendungen gibt es zwei Optionen, um zu IPv6-Multicast zu wechseln: Die Verwendung von Socketoptionen und die Verwendung von IOCTLs.

  • Die Verwendung von Socketoptionen ist ein änderungsbasierter Ansatz, mit dem Entwickler die Socketeigenschaften nach Bedarf ändern können (z. B. Blockieren oder Aufheben der Blockierung eines Absenders, Hinzufügen einer neuen Quelle usw.). Dieser Ansatz ist intuitiver und der empfohlene Ansatz. Weitere Informationen zum änderungsbasierten Ansatz für die Multicastprogrammierung finden Sie unter MLD und IGMP Using Windows Sockets.
  • Die Verwendung von IOCTLs ist ein Aufschlusszustandsbasierter Ansatz, da Entwickler einen vollständig konfigurierten Socketstatus einschließlich Ein- und Ausschlusslisten mit einem Aufruf bereitstellen können. Weitere Informationen zum ansatzbasierten Abschlusszustand finden Sie unter Final-State-Based Multicast Programming.

Für diejenigen, die neue IPv6-Multicastanwendungen erstellen, wird empfohlen, Socketoptionen anstelle von IOCTLs zu verwenden.

Es gibt einen weiteren Ansatz zum Erstellen von Multicastanwendungen mit IPv6, der die Verwendung der WSAJoinLeaf-Funktion umfasst. Während die Verwendung der WSAJoinLeaf-Funktion nicht die empfohlene Vorgehensweise ist, gibt es Situationen, die ihre Verwendung diktieren können. Ein Nachteil bei der Verwendung von Socketoptionen unter Windows Server 2003 und früheren Versionen besteht beispielsweise darin, dass sie IP-versionsspezifisch sind. Unter diesen älteren Versionen von Windows müssen verschiedene Socketoptionen für IPv6 und IPv4 gelten. Unter Windows Vista und höher werden neue Socketoptionen unterstützt, die sowohl mit IPv4 als auch mit IPv6 verwendet werden können. Die WSAJoinLeaf-Funktion ist dagegen ip-versions- und protokollunabhängig und kann daher ein nützlicher Ansatz zum Erstellen einer Anwendung sein, die mit mehreren IP-Versionen unter Windows Server 2003 und früher funktionieren muss. Die Verwendung der WSAJoinLeaf-Funktion kann in bestimmten Situationen, in denen Protokoll- und IP-Versionsunabhängigkeit erforderlich ist, besser geeignet sein.