廣播是怎樣傳送的?路由器及主機又如何處理廣播?很遺憾,這是難以回答的問題,因為它依靠于廣播的類型、應用的類型、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那個地址,預期的結果是:


新聞熱點
疑難解答