TCP/IP之廣播

IPv4地址分爲三類:單播地址,多播地址和廣播地址,其中廣播和多播僅應用於UDP,TCP只支持單播尋址,廣播分組去往子網上的所有主機,包括髮送主機自身。IPv6不支持廣播,使用廣播的任何IPv4應用程序一旦移植到IPv6就必須改用多播重新編寫。

TCP/IP中的廣播分爲4個類型:

1. 受限的廣播

       受限的廣播地址是255.255.255.255。該地址用於主機配置過程中IP數據報的目的地址,因爲此時客戶主機還不知道服務器主機的IP地址,在任何情況下,路由器都不會轉發目的地址爲受限的廣播地址的數據報,這樣的數據報僅僅出現在本地網絡中。

       當應用進程發送一個目的地址爲255.255.255.255的UDP數據報時,主機怎麼做?

       假設進程已經設置了SO_BROADCAST套接字選項,大多數主機允許發送這種廣播數據報,並把該目的地址轉換爲外出接口的子網定向廣播地址

       當應用進程發送一個目的地址爲255.255.255.255的UDP數據報時,多目的主機怎麼做?

       有些系統只在主接口(第一個被配置的接口)上發送單個廣播分組,其中的目的地址被置爲該接口的子網定向廣播地址,其它系統卻在每個具備廣播能力的接口上發送一個該數據報的副本,然而爲了便於移植,如果應用進程需要從每個具備廣播能力的接口發送同一個廣播數據報,它就應該首先獲取每個接口的配置,然後對每個具備廣播能力的接口執行一個目的地址指定爲該接口之子網定向廣播地址的sendto調用。

2. 指向網絡的廣播

       指向網絡的廣播地址是主機號全1的地址,一個路由器必須轉發指向網絡的廣播,但它也必須有一個不進行轉發的選擇。

3. 指向子網的廣播

       指向子網的廣播地址爲主機號全1且有特定子網號的地址,作爲子網直接廣播地址的IP地址需要了解子網的掩碼,路由器通常不轉發這種廣播。

4. 指向所有子網的廣播

       指向所有子網的廣播地址的子網號及主機號全爲1,如果網絡沒有劃分子網,這就是一個指向網絡的廣播。

廣播的用途

1. 在本地子網定位一個服務器主機,前提是已知或認定這個服務器主機位於本地子網,但是不知道它的單播IP地址,這種操作也稱爲資源發現(resource discovery)

2. 在有多個客戶主機與單個服務器主機通信的局域網環境中儘量減少分組流通,比如ARP,DHCP,NTP,路由守護進程。

廣播的根本問題

       子網上未參加相應廣播應用的所有主機也不得不沿協議棧一路向上完整地處理收取的UDP廣播數據報,直到該數據報歷經UDP層時被丟棄爲止。另外,子網上所有非IP的主機也不得不在數據鏈路層接收完整的幀,然後再丟棄它,要是運行着以較高速率產生IP數據報的應用,這些非必要的處理有可能嚴重影響子網上這些其它主機的工作。


發送廣播的IP數據報時,需要設置SO_BROADCAST套接字選項來設置,不然系統不會允許我們這麼做。另外,源自Berkeley的內核不允許對廣播數據報執行分片,對於目的地址是廣播地址的IP數據報,如果其大小超過外出接口的MTU,發送它的系統調用將返回EMSGSIZE錯誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章