廣播,就是指同時向子網中的多台計算機發送消息,並且所有子網中的計算機都可以接收到發送方發來的消息。每個廣播消息包含一個特殊的IP地址。
廣播消息地址分為兩種類型:本地廣播和全球廣播。
通過本地廣播向子網中的所有計算機發送廣播消息時,其他網絡不會受到本地廣播的影響。我們知道IP地址分為兩部分,網絡地址和主機地址,標准網絡地址部分組成了本地網絡地址的第一部分,字節地址中全部為1的部分用於主機地址部分(即十進制的255)。
例如,對於B類網絡192.168.0.0,使用子網掩碼255.255.0.0,(此IP地址的網絡號為192.168,主機號為0.0,子網掩碼全為1的對應的IP地址的網絡號)則本地廣播地址是192.168.255.255,用二進制表示為11000000、10101000、11111111、11111111。其中前兩個字節為網絡地址,后兩個字節為主機地址。
仍以192.168.0.0為例,如果子網掩碼為255.255.255.0,則本地廣播地址是192.168.0.255。192.168.0為網絡地址,255代表192.168.0子網中的主機地址。
全球廣播使用四個字節所有位全為1的IP地址,即點分十進制的255.255.255.255,這個特定的廣播地址表明數據報的目的地是網絡上的所有設備。但是由於路由器會自動過濾掉全球廣播,所以使用這個地址沒有實際意義。
子網划分
子網划分是為了解決網絡IP不夠用的情況,
它的實質其實就是,在A,B,或者C類中把原先分配給它的主機號位數拿出若干個位來作網絡號.這樣就可以緩解網絡IP不夠用的情況了.
一個子網192.168.15.0,要划分成三個子網,其中一個子網有100台,另兩個分別是60、48台。
三個子網,故最多向主機號借兩位,子網可分為四個(00,01,10,11) ,平均下來每個子網為2^6-2=62台,因第一個子網要求100台,故子網00,01被分成一個
一個子網100台,故需要二進制至少需要7位主機號,因為默認的子網掩碼為255.255.255.0,故此時的子網掩碼為255.255.255.128,IP地址為192.168.15.1~192.168.15.127
一個子網60台.故需要二進制至少需要6位主機號,因為默認的子網掩碼為255.255.255.0,故此時的子網掩碼為255.255.255.192 .IP地址為192.168.15.129~192.168.15.190
一個子網48台.故需要二進制至少需要6位主機號,因為默認的子網掩碼為255.255.255.0,故此時的子網掩碼為255.255.255.192 .IP地址為192.168.15.192~192.168.15.254
組播
廣播的通信模式雖然能夠實現一對多的通信需要,但是,由於廣播是向子網中的所有計算機用戶發送消息,沒有目的性,不但增加了網絡傳輸負擔,而且資源消耗較高。組播的出現,較好地解決了這個問題。組播也叫多路廣播。所謂組播是將消息從一台計算機發送到本網或全網內選擇的計算機子集上,即發送到那些加入指定組播組的計算機上。組播組是開放的,每台計算機都可以通過程序隨時加入到組播組中,也可以隨時離開。
組播組是分享一個組播地址的一組設備。與IP廣播類似,IP組播使用特殊的IP地址范圍來表示不同的組播組。組播地址(1110開頭的D類地址)是范圍在224.0.0.0到239.255.255.255的D類IP地址。任何發送到組播地址的消息都會被發送到組內的所有成員設備上。組可以是永久的,也可以是臨時的。大多數組播組是臨時的,僅在有成員的時候才存在。用戶創建一個新的組播組時只需從地址范圍內選出一個地址,然后為這個地址構造一個對象,就可以開始發送消息了。
使用組播時,應注意的是TTL(生存周期Time To Live)值的設置。TTL值是允許路由器轉發的最大數目,當達到這個最大值時,數據包就會被丟棄。如果使用默認值(默認值為1),則只能在子網中發送。可以通過UdpClient對象的Ttl屬性直接設置TTL值,例如:
UdpClient myUdpClient = new UdpClient();
myUdpClient.Ttl = 50;
該語句設置TTL值為50,即最多允許50次路由器轉發。
在UdpClient類中,使用JoinMulticastGroup方法將UdpClient對象和TTL一起加入組播組,使用DropMulticastGroup退出組播組。例如:
//創建UdpClient的實例並設置使用的本地端口號
UdpClient udpClient=new UdpClient(8001);
udpClient.JoinMulticastGroup(IPAddress.Parse("224.100.0.1"));
或者:
UdpClient udpClient=new UdpClient(8001);
udpClient.JoinMulticastGroup(IPAddress.Parse("224.100.0.1"), 50);
其中50為TTL值。
組播IP地址到MAC地址的映射
d類地址是從224.0.0.0到239.255.255.255之間的IP地址
其中224.0.0.0到224.0.0.255是被保留的地址
224.0.0.1表示子網中所有的組播組
224.0.0.2表示子網中所有的路由器
224.0.0.5表示OSPF路由器
224.0.0.6表示OSPF指定路由器
224.0.0.12表示DHCP服務器
2層的MAC地址是如何與3層的IP地址進行映射的咧?
通過將MAC地址的前25位強行規定為0100.5e,而后23位對應IP地址的后23位,而組播IP地址的前4位均相同,如
IP地址: 1110yyyy.yxxxxxxx.xxxxxxxx.xxxxxxxx
MAC地址: 00000001.00000000.01011110.0xxxxxxx.xxxxxxxx.xxxxxxxx
后面是相同的