我的意思是,我知道每個資料包都帶有 MAC 位址發送,但是串流傳輸又如何呢?
如果當路由器接收一個封包時,來自另一台裝置的封包到達,會發生什麼事?
路由器如何知道與天線碰撞的光子是第一個資料包的一部分還是第二個資料包的一部分?
還是光速太快以至於這種情況幾乎不會發生,資料包只是被報告為損壞並再次發送?
答案1
在無線網路中,其實只有一台裝置同時「說話」。每個其他設備都會監聽並等待頻道上的空氣安靜後再說話。這種技術稱為帶有衝突避免的載波偵聽多路存取 (CSMA/CA)
RTS/CTS 交換透過提供一種方式讓一個節點對每個其他節點說“嘿,我要講這麼長時間,所以等這麼久”,從而幫助所有節點有效地保持同步。
@Petr Abdulin 是正確的,但我認為所有 Wifi 網路都使用 CSMA/CA。依賴舊的 10BaseT 非交換有線網絡具有衝突偵測的載波偵聽多路存取 (CSMA/CD)。在所有節點都連接到交換器的網路上不會發生衝突。
答案2
如果發生兩個傳輸相互幹擾(衝突),則兩個傳輸都將被損壞,並且將在隨機延遲後重新傳輸,從而降低重複衝突的風險。
答案3
如果當路由器接收一個封包時,來自另一台裝置的封包到達,會發生什麼事?
直接的後果是一些重疊位被損壞。通常,太多位元被損壞,以至於接收器發現幀檢查序列不匹配,並且接收器只是將壞資料扔掉,否則就像沒有聽到任何資料包一樣。
隨後,更高層級的協定最終會注意到封包尚未被確認 (ACK) 並重新發送該封包。
然而,WiFi 標準包含許多不同的方法來防止此類衝突,包括:
大多數版本的 WiFi 使用 COFDM 或擴頻 + 額外錯誤校正位的其他組合。如果幸運的話,只有少數位元被翻轉,所有這些位元都可以在接收器處糾正,並且一的數據包順利通過。
正如 LawrenceC 已經指出的那樣,大多數 WiFi 版本都使用載波偵聽多路訪問碰撞避免(CSMA/CA):無線存取點協調與其通訊的所有筆記型電腦,以便(通常)一次只有一台裝置正在傳輸,因此(通常)不會發生衝突。 (有時,您仍然會與其他筆記型電腦試圖與其他無線存取點通訊的資料包發生衝突,或與各種其他裝置發生幹擾)。
那麼串流媒體呢?
那又怎樣呢?
當筆記型電腦播放串流音訊(或串流視訊;1080p 視訊串流約為 5 Mbit/s)時,發送者會將其作為一系列小型資料包發送。 Modern communication hardware is fast (802.11a transmits at over 20 Mbit/s, and more recent Wi-Fi standards are even faster), so there are (relatively) long gaps between one packet to that laptop, and the next packet to the same筆記型電腦.
在每個資料包之間,無線存取點有足夠的時間將資料包發送到其他幾台筆記型電腦,偵聽來自那些確認先前傳輸並請求下一個串流的筆記型電腦的偶爾資料包,甚至更偶爾地重新發送資料包當發生碰撞或其他錯誤時。
如果所有這些筆記型電腦都與同一個存取點通信,則該存取點會協調傳輸,因此一次只有一個裝置正在傳輸。
如果其中一些筆記型電腦正在與一個接入點通信,而其他筆記型電腦正在與其他某個(不協調的)接入點通信,並且所有這些設備都距離足夠近,可以輕鬆地互相竊聽,那麼就會發生頻繁的衝突。
任何衝突的資料包都會重新傳輸。通常,重新傳輸的資料包最終會在播放之前很久就通過,因此沒有人注意到有問題。因此(通常)每個人都會產生自己「連續」專用流的錯覺。