2. Sémantique des adresses de multicast spécifique à la source
Le service de multicast spécifique à la source est défini comme suit :
Un datagramme dont l'adresse IP source est S et l'adresse IP de destination G se trouve dans la plage SSM est remis à chaque socket d'hôte ayant explicitement demandé à recevoir des datagrammes envoyés par S vers G, et uniquement à ces sockets.
Où, en utilisant la terminologie de [IGMPv3] :
« socket » est un paramètre spécifique à l'implémentation servant à distinguer les différentes entités demandeuses au sein de l'hôte demandeur (par exemple, programme, processus, ou point de communication au sein d'un programme/processus) ; le paramètre socket de l'appel système Unix BSD en est un exemple concret.
N'importe quel hôte peut envoyer un datagramme à n'importe quelle adresse SSM, et la remise s'effectue selon la sémantique ci-dessus.
L'interface du module IP vers les protocoles de couche supérieure est étendue pour permettre à un socket de « s'abonner » (Subscribe) ou de « se désabonner » (Unsubscribe) à un canal particulier identifié par une adresse source spécifique et une adresse IP de destination. Cette interface étendue est définie à la section 4.1. Si une application ou un hôte demande à recevoir des datagrammes envoyés à une adresse de destination SSM G sans spécifier l'adresse source correspondante comme le prend en charge le modèle de multidiffusion de source quelconque, une telle demande n'a aucun sens et les routeurs DOIVENT (MUST) ignorer toute demande de ce type.
Plusieurs applications source sur différents hôtes peuvent utiliser sans conflit une même adresse de destination SSM G, car chaque datagramme envoyé par un hôte source Si ne sera remis qu'aux sockets ayant explicitement demandé à recevoir des datagrammes envoyés spécifiquement par Si vers G.
La caractéristique distinctive de ce modèle est que le canal est identifié (adressé) par la combinaison d'une adresse IP de destination de multidiffusion dans la plage SSM et d'une adresse source unicast unique. Ainsi, par exemple, le canal
S,G = (192.0.2.1, 232.7.8.9)
est différent de
S,G = (192.0.2.2, 232.7.8.9),
même s'ils ont la même partie adresse de destination. De même, pour IPv6,
S,G = (2001:3618::1, FF33::1234)
et
S,G = (2001:3618::2, FF33::1234)
sont des canaux différents.