多播
想弄清楚多播,首先需要了解主機對信道傳送的過來幀的過濾過程。下圖說明了這一過程:
??????? 1.網卡查看信道傳過來的幀,確認是否接收該幀。通常網卡只接收目的地址為網卡物理地址或廣播地址的幀(ff:ff:ff:ff:ff:ff)。但是大多數網卡經過配置能夠接收多播地址或子網多播地址的幀(地址最高字節的最低位設置為1,01:00:00:00:00:00)。如果網卡確認接收該幀,這個幀將被傳送給設備驅動程序。
??????? 2.設備驅動程序將進行另外的幀過濾。首先通過幀類型確認是哪一種協議(IP、ARP等),然后再檢測該主機是否屬于該多播組。如果檢測通過,就將數據包傳送給下一層(IP、ARP等)。比如,當幀類型指定為IP數據報時,就傳往IP層。
??????? 3.IP層根據IP地址中的源IP和目的IP再進行更多的過濾。如果正常再傳送給傳輸層(TCP/UDP)。
??????? 4.UDP或TCP收到數據報之后再進行端口號過濾。如果該進程存在就將數據報傳給應用層,如果不存在就立即產生一個ICMP不可達報文并回復。
在理解這一過程的同時,肯定會產生一個疑問,到底設備驅動程序是怎么根據MAC地址來檢測該主機是否屬于該多播組的。
??????? 首先要搞清楚 的多播組地址的格式,如圖:
????????從上圖可以得出,多播地址范圍從224.0.0.0到239.255.255.255。???????
???????
??????? 其次,我們要知道多播組地址和多播MAC地址之間的轉換關系,如圖:
??????????????? 從上圖我們就可以很清楚地了解到多播組地址轉換到MAC地址,其實就是將多播組地址的后23位映射到MAC地址的后23位。
??????? 搞清楚這兩點之后,我們就可以很容易的理解怎么加入分組并且設備驅動程序在接收的時候怎么檢測分組了。
??????????????? 所謂的加入分組就是告訴設備驅動程序必須能夠接收這些經過多播地址映射后的MAC地址的多播幀。
??????????????? 向該分組發送數據時,通知IP層發送給定多播地址的數據包,設備驅動程序將經過多播地址映射后的MAC地址發送出去。
新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!總結
- 上一篇: libjpeg移植到arm
- 下一篇: 零基础搭建Hadoop大数据处理环境