4.1. Extensions to the IP Module Interface
4.1. IP模块接口扩展
IP模块与上层协议的接口进行了扩展,允许协议请求接收发送到特定信道的所有数据报。
Subscribe ( socket, source-address, group-address, interface )
Unsubscribe ( socket, source-address, group-address, interface )
其中:
socket 如第2节所定义,
并且,引用[IGMPv3]的描述,
interface 是网络接口的本地标识符,用于标识要启用或禁用接收(source-address,group-address)对标识的信道的网络接口。可以使用特殊值来指示"默认"接口。如果希望在多个接口上接收相同的信道,则需要为每个接口分别调用Subscribe。
以上是严格的抽象功能接口——该功能可以通过特定实现的方式提供。例如,在支持[MSFAPI]的组播源过滤应用程序编程接口的主机上,Subscribe和Unsubscribe接口可以通过该API来支持。当主机被配置为知道SSM地址范围(无论配置机制是手动的还是通过协议的),主机的操作系统应该(SHOULD)向发出非源特定请求以接收发送到SSM目标地址的组播的应用程序返回错误。
不支持这些IP模块接口(例如,仅支持ASM的主机)及其底层协议的主机不能期望可靠地接收在SSM信道上发送的流量。如下文第5.2节所述,路由器不会设置SSM转发状态或转发数据报以响应ASM加入请求。
IP数据包接收接口的广泛实现(例如,BSD Unix中的recvfrom()系统调用)不允许接收器确定数据报发送到的目标地址。在具有这种实现的主机上,当接收数据报的套接字订阅了多个信道时,无法推断数据报的目标地址。主机操作系统应该(SHOULD)提供一种方法,让主机能够确定数据报发送到的源地址和目标地址。(例如,Linux操作系统将数据包的目标作为recvmsg()系统调用响应的一部分提供。)在此功能存在之前,应用程序可能被迫使用更高层的机制来识别数据报发送到的信道。