读书笔记九:TCP/IP详解之广播和多播,IGMP协议
?單播(unicast)???????????
單播是說,對特定的主機進行數據傳送。例如給某一個主機發送IP數據包。這時候,數據鏈路層給出的數據頭里面是非常具體的目的地址,對于以太網來 說,就是具體網卡的MAC地址(不是FF-FF-FF-FF-FF-FF,這是廣播地址)。現在的具有路由功能的主機應該可以將單播數據定向轉發,而目的主機的網卡可以過濾掉和自己MAC地址不一致的數據。
?廣播(broadcast)??????????
廣播是主機針對某一個網絡上的所有主機發送數據包。這個網絡可能是網絡,可能是子網,還可能是所有的子網。如果是網絡,例如A類網址的廣播就是 netid.255.255.255,如果是子網,對應的廣播地址是將子網的網絡地址的主機位全部置1;如果是所有的子網(以B類IP地址為例)則是則是 netid.netid.255.255。廣播所用的MAC地址FF-FF-FF-FF-FF-FF。網絡內所有的主機都會收到這個廣播數據,網卡只要把 MAC地址為FF-FF-FF-FF-FF-FF的數據交給內核就可以了。一般說來ARP,或者路由協議RIP應該是以廣播的形式播發的。
?多播(multicast)??????????
可以說廣播是多播的特例,多播就是給一組特定的主機(多播組)發送數據,這樣,數據的播發范圍會小一些(實際上播發的范圍一點也沒有變小),多播的MAC地址是最高字節的低位為一,例 如01-00-00-00-00-00。多播組的地址是D類IP,規定是224.0.0.0-239.255.255.255。
多播地址分類:- 局部多播地址:在224.0.0.0~224.0.0.255之間,這是為路由協議和其他用途保留的地址,路由器并不轉發屬于此范圍的IP包。
- 預留多播地址:在224.0.1.0~238.255.255.255之間,可用于全球范圍(如Internet)或網絡協議。
- 管理權限多播地址:在239.0.0.0~239.255.255.255之間,可供組織內部使用,類似于私有IP地址,不能用于Internet,可限制多播范圍。
-
屬于永久組的地址:
224.0.0.1 ? 所有組播主機
224.0.0.2 ? 所有組播路由器
224.0.0.4 ? ?DRMRP路由器
224.0.0.5 ? ?所有OSPF的路由器
224.0.0.6 ? ?OSPF指派路由器
224.0.0.9 ? ?RPIv2路由器
224.0.0.10 ?EIGRP路由器
224.0.0.13 ?PIM路由器
224.0.0.22 ? IGMPv3
224.0.0.25 ? RGMP
224.0.1.1 ? ? ?NTP網絡時間協議
多播ip地址和mac地址的對應關系如下:
與IP多播相對應的以太網地址范圍從01:00:5e:00:00:00到01:00:5e:7f:ff:ff。
多播組的地址是D類IP,規定是224.0.0.0-239.255.255.255。
這種地址分配將使以太網多播地址中的23bit與IP多播組號對應起來,通過將多播組號中的低位23bit映射到以太網地址中的低位23bit實現,如下圖所示:
可以看到,ip地址和mac地址的對應不是一一對應的,主機還是要對多播數據進行過濾。
一些驗證首先我ping一下自己所在的子網的某一臺主機:
?ping 192.168.11.1?
正在 Ping 192.168.11.1 具有 32 字節的數據:
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一個廣播地址呢?結果如下
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返回了一些隨機的ip的結果,這些ip都是與主機在同一子網內的ip。我們可以看到,廣播實際上是給處于子網內的所有ip發出數據。
IGMP協議:Internet組管理協議IGMP的作用在于,讓其他所有需要知道自己處于哪個多播組的主機和路由器知道自己的狀態。一般多播路由器根本不需要知道某一個多播組里面有多少個主機,而只要知道自己的子網內還有沒有處于某個多播組的主機就可以了。只要某一個多播組還有一臺主機,多播路由器就會把數據傳輸出去,這樣,接受方就會通過網卡過濾功能來得到自己想要的數據。為了知道多播組的信息,多播路由器需要定時的發送IGMP查詢,IGMP報文封裝在ip數據報中,各個多播組里面的主機要根據查詢來回復自己的狀態。路由器來確定有幾個多播組,自己的轉發操作如何進行。
?
這種查詢回應數據報的TTL一般是1,數據報被限定在子網內,而且不產生ICMP超時差錯。
?
轉載于:https://www.cnblogs.com/maleyang/articles/7290807.html
總結
以上是生活随笔為你收集整理的读书笔记九:TCP/IP详解之广播和多播,IGMP协议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: day17.Python中lambda表
- 下一篇: python当中的生成器