UNIX網絡編程-多播

要求:

  1. 多播地址
  2. 局域網、廣域網的多播
  3. 源特定多播
  4. 多播套接字選項(核心)
  5. 封裝范例

內容:

1.多播地址

多播地址-MAC地址映射.JPG

IPv4多播地址范圍:224.0.0.0-239.255.255.255;IPv6多播地址是以 FF: 開始的地址。
IPv4/IPv6地址到MAC地址的映射如上圖。
多播是一個IP協議上的特性,為了支持多播,需要做一些額外的工作來維護該特性。所以,部分多播地址被用做來維護該特性,如:224.0.0.1 標識所有支持多播功能的主機組;224.0.0.2標識所有路由組(更詳細內容可參考RFC文檔)。

2.局域網、廣域網的多播

局域網-廣域網的多播.JPG

局域網的多播,根據IP地址轉換的MAC地址(如:01:00:5e:00:01:01)即可被加入多播組的主機識別并接受。
廣域網經過了路由,不能單獨通過MAC地址來轉發。主機H3加入了組播,則路由器R2將被通知到。此時,R2將發送IGMP報文來通知R1:本路由器R2有一個人加入了組織,后續有活動,需要告知我R2,然后再轉給H3。

3.源特定多播

在同一網絡里,可能出現使用同一個多播組,卻發送不同報文。為了更好的標識處理該種場景,考慮將發送多播的主機地址和多播地址一起標識一個多播。這就是源特定多播(SSM)。

4.多播套接字選項

A. 發送

  • IF ---- 指定發送組播的接口,默認由內核選擇
  • TTL ---- 發送的組播報文TTL,默認 1
  • LOOP ---- 是否回送自己一份發送的報文,默認回送

前綴:IP_MULTICAST_ / IPV6_MULTICAST_

B. 接受

  • 動作:
    1. ADD/DROP ---- 加入、離開一個組播
    2. BLOCK/UNBLOCK ---- (不)阻塞特定地址發送的組播
    3. ADD/DROP_SRC ---- 加入、離開一個源特定組播
  • 結構體分類:
    1. 多播地址
    2. 接受多播的地址/接口
    3. 發送多播的地址/接口
  • 結構體名稱:
    1. 僅組播
      ip_mreq
      ipv6_mreq
      group_req
    2. 源地址相關的組播
      ip_mreq_source
      group_source_req

5. 封裝范例

1. mcast_join
2. mcast_leave
3. mcast_block
4. mcast_unblock
5. mcast_join_source_group
6. mcast_leave_source_group
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 五、因特網的路由選擇協議 1.有關路由選擇協議的幾個基本概念 Ⅰ、理想的路由算法 路由表中的路由是怎樣得出的呢?核...
    dmmy大印閱讀 2,058評論 0 4
  • 1.這篇文章不是本人原創的,只是個人為了對這部分知識做一個整理和系統的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,134評論 6 174
  • 個人認為,Goodboy1881先生的TCP /IP 協議詳解學習博客系列博客是一部非常精彩的學習筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,092評論 0 8
  • 第二章 物理層 頻分復用:頻分復用的用戶在同樣的時間占用不同的帶寬資源(頻率帶寬) 時分復用:時分復用的用戶在不同...
    PramaWells閱讀 3,847評論 1 3
  • 版權聲明:原創作品,謝絕轉載!否則將追究法律責任。 OSPF路由協議 楔子 為了加強自己我打算好好玩玩網絡。 OS...
    李偉銘MIng閱讀 4,607評論 0 25