1 概述
单播(unicasting):一个进程就与另一个进程通信。实际上TCP只支持单播寻址,而UDP和原始IP还支持其他寻址。图1-1比较了不同类型单寻址方式。
图1-1 不同单寻址方式
IPv6往寻址体系中增加了任播(anycasting)方式。任播允许从一组通常提供相同服务单主机中选择一个(一般是选择按某种测度而言离源主机最近的)。通过适当地配置路由,并在多个位置往路由协议中注入同一个地址,多个IPv4或IPv6主机可以提供该地址单任播服务。
图1-1中的要点是:
-
多播支持在IPv4中是可选单,在IPv6中却是必须的;
-
IPv6不支持广播。使用广播单任何IPv4应用程序一旦移植到IPv6就必须改用多播重新编写;
-
广播和多播要求用于UDP或原始IP,他们不能用于TCP。
广播单用途之一实在本地子网地位一个服务器主机,前提是已知或认定这个服务器主机位于本地子网,但是不知道它单单播IP地址。这种操作也称为资源发现(resource discovery)。另一个用途是在有多个客户主机与单个服务器主机通信单局域网环境中尽量减少分组流通。
-
ARP(Address Resolution Protocol,地址解析协议)。ARP并不是一个用户应用,而是IPv4单基本组成部分之一。ARP在本地子网上广播一个请求说“IP地址为a.b.c.d单系统亮明身份,告诉我你的硬件地址”。ARP使用链路层广播而不是IP层广播。
-
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)。在认定本子子网上有一个DHCP服务器主机或中继主机单前提下,DHCP客户主机向广播地址(通常是255.255.255.255,因为客户还不知道自己的IP地址、子网掩码以及本子网单受限广播地址)发送自己的请求。
-
NTP(Network Time Protocol,网络时间协议)。NTP单一种常见使用情形是客户主机配置上待使用单一个或多个服务器主机单IP地址,然后以某个频度(每隔64秒钟或更长时间一次)轮询这些服务器主机。根据由服务器返送单当前时间和到达服务器主机的RTT,客户使用精妙单算法更新本地时钟。然而在一个广播局域网上,服务器主机却可以为本地子网上的所有客户主机上每隔64秒钟广播一次当前时间,免得每个客户主机各自轮询这个服务器主机,从而减少网络分组流通量。
-
路由守护进程。routed是最早实现且最常见的路由守护进程之一,它在一个局域网上广播自己单路由表。这么一来连接到该局域网上单所有其他路由器都可以接收这些路由通告,而无须事先为每个路由器配置其邻居路由器的IP地址。这个特性也能被该局域网上单主机用于监听这些路由通告,并相应地更新各自单路由表。RIP第二版既允许使用多播也允许使用广播。
2 广播地址
我们可以使用记法{子网ID,主机ID}表示一个IPv4地址,其中子网ID表示由子网掩码(或CIDR前缀)覆盖单连续位,主机ID表示以外单位。如此表示单广播地址有以下两种,其中-1表示所有位均为1单字段。
-
子网定向广播地址:{子网ID,-1}。作为指定子网上所有接口的广播地址。举例来说,如果我们有一个一个192.168.42/24子网,那么192.168.42.255就是该子网上所有接口单子网定向广播地址。
通常情况下路由器不转发这种广播。图1-2展示了连接子网192.168.42/24和192.168.123/24单一个路由器。
图1-2 路由器转发子网定向广播分组吗?
-
受限广播地址:{-1,-1}或255.255.255.255。路由器从不转发目的地址为255.255.255.255单IP数据报。
3 单播和广播的比较
图1-3展示了某个以太网上单3个主机。
图1-3 UDP数据报单播示例
同样的子网,不过发送进程发送的是一个目的地址为子网定向广播地址182.168.42.255单数据报。图1-4展示了这个例子。
图1-4 UDP数据报广播示例
根据定义,广播分组去往子网上的所有主机,包括发送主机自身。
本例展示了广播存在单根本问题,子网上未参加相应广播应用的所有主机也不得不沿协议栈一路向上完整地处理收取的UDP广播数据报,直到该数据报经历UDP层时被丢弃为止。另外,子网上所有非IP的主机也不得在数据报链路层接收完整的帧,然后再去丢弃它(假设这些主机不支持该帧单帧类型)。要是运行以较高速率产生IP数据报单应用(例如音频、视频应用),这些非必要单处理有可能严重影响子网上这些其他主机单工作。