我刚开始阅读关于使用boost::asio进行多播传输的信息,以下内容让我有些困惑:在下面的boost::asio示例中,为什么我们需要一个“监听地址”?这有什么意义?为什么会选择与localhost不同的地址?请参考http://www.boost.org/doc/libs/1_37_0/doc/html/boost_asio/example/multicast/receiver.cpp。
当您拥有多个网络接口卡(每个NIC绑定到不同的IP地址)时,指定监听IP地址是必要的。
当您在家用笔记本电脑工作时,可能并不关心这个问题。主要目标通常是在您的机器内连接所有需要连接的内容,此时 localhost
就足够了。
另一方面,高端服务器通常有 多个网络卡。更好的是,高性能网络卡通常有不止一个物理插口,并且两个插口可能都带有不同的 DHCP 租约。
服务器还经常属于 公共和私有网络,其中可能包括具有自己子网和可访问性参数的 VPN 。系统管理员会深入思考这些地址,并非常关心每个服务可用的特定地址。它是私有服务吗?是否存在不受信任的子网,不应该进行这些请求?
这些问题涵盖了 安全和系统组织 方面的问题。这与组播无关:UNIX 的 bind
系统调用也因上述所有原因而采用了特定的地址。