2009年2月10日 星期二

[TCP/IP Illustrated] Broadcasting & Multicasting

前言

IP address 有三種,分別是:
  1. unicast
    此即為一般的 IP address,傳送者與接收者是一對一的關係。

  2. broadcast
    當要將訊息發布給同網段中所有的電腦時,就將訊息送給 broadcast IP address,這樣一來所有的電腦都會將訊息接收過去。使用此特性的協定有 ARP、RARP....等等。

  3. multicast
    此種也是類似 broadcast,但接收端僅為特定的群組,並非全部電腦都包含在內。

其中 broadcase 與 multicase 都必須仰賴 UDP 協定,原因是因為使用 TCP 必須先進行 3-way Handshake 以進行兩端點間的連線,並不適合用於此情境中。



Broadcasting

broadcast 是將資料傳送到網路中所有的電腦的一種方式,一共可以分為四種:(資料來源)
  1. 有限廣播 (Limited Broadcast)
    只有目前所在的區域網路 (LAN) 上作廣播,其IP的地址格式為255.255.255.255。

  2. 網路取向廣播 (Net-directed Broadcast)
    在某特定 (指定) 的網路作廣播,例如向某一類別為A (Class A) 的網路廣播,其IP地址格式為netid.255.255.255。

  3. 子網路取向廣播 (Subnet-directed Broadcast)
    針對某等級(class) 中的某子網路 (Subnetwork) 作廣播。以類別B的網路來看,若其子網路遮罩 (subnet mask) 為255.255.255.0,而IP地址為140.116.46.255,則是表示將資料廣播到類別B的網路140.116.中的子網路46上,而最後一個255則是代表廣播的意思。

  4. 全子網路取向廣播 (All-subnets-directed Broadcast)
    針對某一等級中所有的子網路皆作廣播。此種廣播方式必須與路由器 (router) 的子網路遮罩配合。例如有一類別B的子網路遮罩為255.255.255.0,則若有一IP地址為140.116.255.255時,則表示將資料廣播到類別B的網路140.116中的所有子網路上。在實際的網路架構中,歸屬於某一類別網路的所有子網路,可能位在不同路由器 (router) 的不同輸出入埠上(port),因此藉由子網路遮罩,路由器可以將資料傳送到所屬的所有子網路上進行廣播



Multicasting

IP Multicasting 是將資料傳送給某一特定群體 (Group) 的所有成員 (members),而屬於同一群體的各個成員可能是散佈在各個不同的網路上。

接著用一張圖來說明 multicasting 的 IP address 格式:

從上圖可以知道,multicasting IP address 屬於 class D,其範圍介於「224.0.0.0 ~ 239.255.255.255」之間

RFC 1112 定義了 IP multicast 的標準,它的特性之一是可送出一份 IP datagram 到 LAN 或 WAN 上,只要對這份 datagram 有興趣的使用者加入此「group address」(如何加入呢? 只要設定要擷取特定 multicasting IP address 的資料,就表示加入此 group 了;若是有其他認證機制則另當別論),就可收到這份 datagram。Multicasting 是一種 push 的技術,server 送出資料而 client 不用發出 request。

而 router 也要判斷所連結的網段中是否有加入特定 multicasting group 的電腦,來決定是否繼續傳送 multicasting 的訊息,這裡面運作的機制,稱為 IGMP(Internet Group Management Protocol)。

在目前還是有許多地方會應用到,最常用的大概就屬於視訊會議這一類的應用了。

然而,IANA 預先定義了幾個 well-known 的 multicasting IP address(就像 well-known port number 一樣),在使用上就必須要避開這些 IP,例如:
  • 224.0.0.1 (子網路中所有的系統)

  • 224.0.0.2 (子網路中所有的 router)

  • 224.0.1.1 (NTP;Netowork Time Protocol)

  • 224.0.0.9 (RIP-2)

當然不只以上這些,而若要查詢最新的清單,可以查詢 RFC 文件。


參考資料

2 則留言:

  1. 請問:子網路取向廣播 (Subnet-directed Broadcast)
    以類別B的網路來看,若其子網路遮罩 (subnet mask) 為255.255.255.0,

    這邊的class b不是應該是class c嗎?
    還是我的net mask和subnet mask搞混了??
    謝謝

    回覆刪除
    回覆
    1. 分級定址的class B遮罩是255.255.0.0
      這是CIDR的無分級定址方式
      可以把class B的網路用255.255.255.0的遮罩( /24的prefix)
      切割成2^8(=256)個子網路
      每個子網路包含2^8(=256)個host

      刪除