广播是怎样传送的?路由器及主机又如何处理广播?很遗憾,这是难以回答的问题,因为它依靠于广播的类型、应用的类型、TCP/ip实现方法以及有关路由器的配置。
首先,应用程序必须支持广播。假如执行
sun%ping255.255.255.255
/usr/etc/ping:unknownhost255.255.255.255打算在本地电缆上进行广播。但它无法进行,原因在于该应用程序(ping)中存在一个程序设计上的问题。大多数应用程序收到点分十进制的IP地址或主机名后,会调用函数inet_addr(3)来把它们转化为32bit的二进制IP地址。假定要转化的是一个主机名,假如转化失败,该库函数将返回-1来表明存在某种差错(例如是字符而不是数字或串中有小数点)。但本网广播地址(255.255.255.255)也被当作存在差错而返回-1。大多数程序均假定接收到的字符串是主机名,然后查找DNS(第14章),失败后输出差错信息如“未知主机”。
假如我们修复ping程序中这个欠缺,结果也并不总是令人满足的。在6个不同系统的测试中,仅有一个像预期的那样产生了一个本网广播数据报。大多数则在路由表中查找IP地址255.255.255.255,而该地址被用作默认路由器地址,因此向默认路由器单播一个数据报。最终该数据报被丢弃。
指向子网的广播是我们应该使用的。我们向测试网络中IP地址为140.252.13.63的以太网发送数据报,并接收以太网中所有主机的应答。与子网广播地址关联的每个接口是用于命令ifconfig的值。假如我们ping那个地址,预期的结果是:
新闻热点
疑难解答