2. Semantica degli indirizzi multicast specifici della sorgente
Il servizio di multicast specifico della sorgente è definito come segue:
Un datagramma il cui indirizzo IP sorgente è S e il cui indirizzo IP di destinazione G rientra nell'intervallo SSM viene recapitato a ciascun socket host che ha esplicitamente richiesto la ricezione di datagrammi inviati da S a G, e solo a tali socket.
Dove, utilizzando la terminologia di [IGMPv3]:
"socket" è un parametro specifico dell'implementazione utilizzato per distinguere le diverse entità richiedenti all'interno dell'host richiedente (ad esempio, programma, processo o punto di comunicazione all'interno di un programma/processo); il parametro socket della chiamata di sistema Unix BSD ne è un esempio concreto.
Qualsiasi host può inviare un datagramma a qualsiasi indirizzo SSM e la consegna avviene secondo la semantica sopra indicata.
L'interfaccia del modulo IP verso i protocolli di livello superiore è estesa per consentire a un socket di "sottoscrivere" (Subscribe) o "annullare la sottoscrizione" (Unsubscribe) a un particolare canale identificato da un indirizzo sorgente specifico e da un indirizzo IP di destinazione. Questa interfaccia estesa è definita nella sezione 4.1. Se un'applicazione o un host richiede la ricezione di datagrammi inviati a un indirizzo di destinazione SSM G senza specificare il corrispondente indirizzo sorgente come supportato dal modello di multicast a sorgente arbitraria, tale richiesta non ha senso e i router DEVONO (MUST) ignorare qualsiasi richiesta di questo tipo.
Più applicazioni sorgente su host diversi possono utilizzare senza conflitti un medesimo indirizzo di destinazione SSM G, poiché ciascun datagramma inviato da un host sorgente Si verrà recapitato solo agli socket che hanno esplicitamente richiesto la ricezione di datagrammi inviati specificamente da Si a G.
La caratteristica distintiva di questo modello è che il canale è identificato (indirizzato) dalla combinazione di un indirizzo di destinazione multicast nell'intervallo SSM e di un singolo indirizzo sorgente unicast. Pertanto, ad esempio, il canale
S,G = (192.0.2.1, 232.7.8.9)
è diverso da
S,G = (192.0.2.2, 232.7.8.9),
anche se hanno la stessa parte di indirizzo di destinazione. Analogamente, per IPv6,
S,G = (2001:3618::1, FF33::1234)
e
S,G = (2001:3618::2, FF33::1234)
sono canali diversi.