日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TCP/IP详解学习笔记(7)-广播和多播,IGMP协议

發(fā)布時間:2025/3/17 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TCP/IP详解学习笔记(7)-广播和多播,IGMP协议 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.單播,多播,廣播的介紹

1.1.單播(unicast)

單播是說,對特定的主機(jī)進(jìn)行數(shù)據(jù)傳送。例如給某一個主機(jī)發(fā)送IP數(shù)據(jù)包。這時候,數(shù)據(jù)鏈路層給出的數(shù)據(jù)頭里面是非常具體的目的地址,對于以太網(wǎng)來 說,就是網(wǎng)卡的MAC地址(不是FF-FF-FF-FF-FF-FF這樣的地址)。現(xiàn)在的具有路由功能的主機(jī)應(yīng)該可以將單播數(shù)據(jù)定向轉(zhuǎn)發(fā),而目的主機(jī)的網(wǎng) 絡(luò)接口則可以過濾掉和自己MAC地址不一致的數(shù)據(jù)。

1.2.廣播(unicast)

廣播是主機(jī)針對某一個網(wǎng)絡(luò)上的所有主機(jī)發(fā)送數(shù)據(jù)包。這個網(wǎng)絡(luò)可能是網(wǎng)絡(luò),可能是子網(wǎng),還可能是所有的子網(wǎng)。如果是網(wǎng)絡(luò),例如A類網(wǎng)址的廣播就是 netid.255.255.255,如果是子網(wǎng),則是netid.netid.subnetid.255;如果是所有的子網(wǎng)(B類IP)則是則是 netid.netid.255.255。廣播所用的MAC地址FF-FF-FF-FF-FF-FF。網(wǎng)絡(luò)內(nèi)所有的主機(jī)都會收到這個廣播數(shù)據(jù),網(wǎng)卡只要把 MAC地址為FF-FF-FF-FF-FF-FF的數(shù)據(jù)交給內(nèi)核就可以了。一般說來ARP,或者路由協(xié)議RIP應(yīng)該是以廣播的形式播發(fā)的。

1.3.多播(multicast)

可以說廣播是多播的特例,多播就是給一組特定的主機(jī)(多播組)發(fā)送數(shù)據(jù),這樣,數(shù)據(jù)的播發(fā)范圍會小一些(實(shí)際上播發(fā)的范圍一點(diǎn)也沒有變小),多播的MAC地址是最高字節(jié)的低位為一,例 如01-00-00-00-00-00。多播組的地址是D類IP,規(guī)定是224.0.0.0-239.255.255.255。

雖然多播比較特殊,但是究其原理,多播的數(shù)據(jù)還是要通過數(shù)據(jù)鏈路層進(jìn)行MAC地址綁定然后進(jìn)行發(fā)送。所以一個以太網(wǎng)卡在綁定了一個多播IP地址之后,必 定還要綁定一個多播的MAC地址,才能使得其可以像單播那樣工作。這個多播的IP和多播MAC地址有一個對應(yīng)的算法,在書的p133到p134之間。可以看到 這個對應(yīng)不是一一對應(yīng)的,主機(jī)還是要對多播數(shù)據(jù)進(jìn)行過濾。

個人的看法:廣播和多播的性質(zhì)是一樣的,路由器會把數(shù)據(jù)放到局域網(wǎng)里面,然后網(wǎng)卡對這些數(shù)據(jù)進(jìn)行過濾,只拿到自己打算要的數(shù)據(jù),比如自己感興趣的多 播數(shù)據(jù),自己感興趣的組播數(shù)據(jù)。當(dāng)一個主機(jī)運(yùn)行了一個處理某一個多播IP的進(jìn)程的時候,這個進(jìn)程會給網(wǎng)卡綁定一個虛擬的多播mac地址,并做出來一個多播 ip。這樣,網(wǎng)卡就會讓帶有這個多播mac地址的數(shù)據(jù)進(jìn)來,從而實(shí)現(xiàn)通信,而那些沒有監(jiān)聽這些數(shù)據(jù)的主機(jī)就會把這些數(shù)據(jù)過濾掉,換句話說,多播,是讓主機(jī) 的內(nèi)核輕松了,而網(wǎng)卡,對不起,您就累點(diǎn)吧。

一些文章也印證了這種想法,最明顯的就是局域網(wǎng)監(jiān)聽的原理、實(shí)現(xiàn)與防范

2.一些驗(yàn)證性實(shí)驗(yàn)

這些實(shí)驗(yàn)并不是很復(fù)雜,我們只是要ping一下一般的ip和一個廣播地址。首先我ping一下自己所在的子網(wǎng)的某一臺主機(jī):

Reply from 192.168.11.1: bytes=32 time<1ms TTL=255
Reply from 192.168.11.1: bytes=32 time<1ms TTL=255
Reply from 192.168.11.1: bytes=32 time<1ms TTL=255
Reply from 192.168.11.1: bytes=32 time=1ms TTL=255

可以看到,機(jī)器返回的是一臺主機(jī)的回應(yīng)結(jié)果,進(jìn)而推測,如果我ping一個廣播地址呢?結(jié)果如下

Reply from 192.168.11.9: bytes=32 time=1ms TTL=255
Reply from 192.168.11.174: bytes=32 time<1ms TTL=64
Reply from 192.168.11.174: bytes=32 time<1ms TTL=64
Reply from 192.168.11.174: bytes=32 time<1ms TTL=64
Reply from 192.168.11.218: bytes=32 time<1ms TTL=64
Reply from 192.168.11.174: bytes=32 time<1ms TTL=64

可以看到,ping返回了一些隨機(jī)的ip的結(jié)果,這些ip都是與主機(jī)在同一子網(wǎng)內(nèi)的ip。我們可以看到,廣播實(shí)際上是給處于子網(wǎng)內(nèi)的所有ip發(fā)信。

再來一個多播的例子,但是要實(shí)現(xiàn)這個多播并不容易,因?yàn)槲也恢谰W(wǎng)絡(luò)內(nèi)有多少個多播組,就只好利用幾個特殊的多播地址來驗(yàn)證了。

對于多播地址,有幾個特殊的多播地址被占用,他們是

  • 224.0.0.1--該子網(wǎng)內(nèi)所有的系統(tǒng)組。

  • 224.0.0.2--該子網(wǎng)內(nèi)所有的路由器。

  • 224.0.1.1--網(wǎng)絡(luò)實(shí)現(xiàn)協(xié)議NTP專用IP。

  • 224.0.0.9--RIPv2專用IP

  • 所以只要ping這幾個IP,就應(yīng)該能得到一些結(jié)果,比如說我ping 224.0.0.2。

    Reply from 192.168.11.1: bytes=32 time<1ms TTL=255
    Reply from 192.168.11.1: bytes=32 time<1ms TTL=255
    Reply from 192.168.11.1: bytes=32 time<1ms TTL=255
    Reply from 192.168.11.1: bytes=32 time<1ms TTL=255
    Reply from 192.168.11.1: bytes=32 time<1ms TTL=255
    Reply from 192.168.11.1: bytes=32 time<1ms TTL=255
    Reply from 192.168.11.1: bytes=32 time<1ms TTL=255

    我們可以看到,這回ping只返回了一個ip的回應(yīng)。而這個就是我的網(wǎng)關(guān)的地址,這也驗(yàn)證了224.0.0.2是所有路由器的多播(組播)地址

    3.IGMP協(xié)議

    IGMP的作用在于,讓其他所有需要知道自己處于哪個多播組的主機(jī)和路由器知道自己的狀態(tài)。一般多播路由器根本不需要知道某一個多播組里面有多少個主機(jī),而只要知道自己的子網(wǎng)內(nèi)還有沒有處于某個多播組的主機(jī)就可以了。只要某一個多播組還有一臺主機(jī),多播路由器就會把數(shù)據(jù)傳輸出去,這樣,接受方就會通過網(wǎng)卡過濾功能來得到自己想要的數(shù)據(jù)。為了知道多播組的信息,多播路由器需要定時的發(fā)送IGMP查詢,IGMP的格式可以看書,各個多播組里面的主機(jī)要根據(jù)查詢來回復(fù)自己的狀態(tài)。路由器來決定有幾個多播組,自己要對某一個多播組發(fā)送什么樣的數(shù)據(jù)。

    這種查詢回應(yīng)數(shù)據(jù)報(bào)的TTL一般是1,而且就算是出錯也不產(chǎn)生ICMP差錯(沒必要)。


    轉(zhuǎn)載于:https://blog.51cto.com/jiaoshou/1665018

    總結(jié)

    以上是生活随笔為你收集整理的TCP/IP详解学习笔记(7)-广播和多播,IGMP协议的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。