1.組播位址範圍224-239,d類位址
3.單播有路由表,組播也有路由表,但是針對目的位址是區域性位址的時候不會查詢路由表,因為只有一跳,這屬於逐跳行為
逐跳和逐流的區別:
逐跳行為有封裝和解封裝的過程,逐流行為是沒有任何加封裝和解封裝的過程,這個資料報是被直接查詢**的,沒有更改源和目的
組播一定是基於單播的,通過urpf-unicast reverse path forwarding--單播逆向路徑**來說明:
如圖:1.r1的f0/0口配置ip位址15.1.1.1,環迴口配置52.1.1.2
2.r5的f0/0配置ip位址15.1.1.2 ,f1/0口配置ip位址52.1.1.1,f2/0口配置53.1.1.1
3.r2的f0/0口配置ip位址52.1.1.2
4.r3的f0/0口配置ip位址53.1.1.2
5.除r5以外其他所有路由器配置預設路由指向r5
6.在r2和r3上開啟dubug ip icmp
7.在r1指定源為52.1.1.2去ping 53.1.1.2
那麼思考下,為何會出現這樣的原因?
因為對於r3只關心目的,並不關心源,當資料從r1將資料發到53.1.1.2,r3回包的時候,查詢路由表發現有路由可以到達52.1.1.2 ,因此會將資料發到r2,此問題傳送的根本原因在於路由器只關心資料要發到什麼地方,而不關心資料從什麼地方來,因此,我們需要讓路由器關心資料從什麼地方來,也就是源
開啟以後,r5發現源是52.1.1.0網段的ip位址,資料來自f0/0介面,但是我本地的路由表中52.1.1.0網段的路由對應的是f1/0口,因此,r5收到以後將資料丟棄,不再**給r3。
以上只是做乙個演示,一旦開啟組播,urpf自動開啟,也就是說,組播是會校驗源的,為了將資料發到下一跳裝置會查詢組播路由表,所以說組播路由表一定是基於單播的,因為要先有目標網路的路由表,資料才可以發出去,資料可以發出去才能查詢組播路由表,查詢組播路由表才能校驗源,因此,單播路由表是基於組播路由表的。
說到組播就不得不提一下igmp協議了,igmp協議,(internet group management protocol,internet管理組協議)
這個協議是用於主機和pc之間的通訊的,當資料通過組播路由表的查詢從一端發到另一端的時候,另一端的組播路由器無法將資料傳送到終端裝置,那麼為了能夠發現終端裝置,路由器需要和下面的終端裝置執行乙個協議,這個協議就是igmp協議,執行了igmp協議以後該路由器會定期的向下傳送週期性的詢問訊息,通常是60s一次,該訊息叫做多播組查詢訊息,下游的終端裝置收到以後需給予回應,如果超過三次沒有回應(180s),那麼將不再向下傳送多播組查詢訊息
igmp協議有三個版本:v1版本,v2版本,v3版本
以上是關於組播訊息的基本介紹,後期會定期更新內容,謝謝!
加入乙個組播組
網路中的一台主機如果希望能夠接收到來自網路中其它主機發往某乙個組播組的資料報,那麼這麼主機必須先加入該組播組,然後就可以從組位址接收資料報。在廣域網中,還涉及到路由器支援組播路由等,但本文希望以乙個最為簡單的例子解釋清楚協議棧關於組播的乙個最為簡單明瞭的工作過程,甚至,我們不希望涉及到igmp包。我...
加入乙個多播組 最簡單的情況
應用程式通過命令字ip add membership把乙個socket加入到乙個多播組,ip add membership是乙個ip層的命令字,其呼叫使用的引數是結構體struct ip mreq,其定義如下 struct ip mreq 該結構體的兩個成員分別用於指定所加入的多播組的組ip位址,和...
隨機生成乙個多播位址
網路位址字串 以數字和點組成的字串,例如 163.13.132.68 網路位址字串 232.0.1.0 轉 二進位制 0xe8000100 const char cp 232.0.1.0 unsigned long int aa inet addr cp printf aa x n htonl aa...