無線與行動網路

隱藏節點問題(hidden-terminal problem)

想像長廊裡有三個人:一端是安娜,中間是櫃台的羅莎,遠端是卡爾。安娜和卡爾都聽得到羅莎,但兩人離得太遠、彼此聽不到。如果安娜和卡爾各自一聽到安靜就要對羅莎講話,他們有時會剛好在同一刻開口——兩人都沒聽到對方、也就都沒有等——於是聲音在羅莎那裡撞在一起,她什麼也聽不懂。安娜和卡爾彼此「隱藏」。這就是無線網路上的隱藏節點問題。

在有線乙太網路上,發送端可以一邊送一邊聽,察覺到碰撞(這就是 CSMA/CD,碰撞偵測)。但在空中這招行不通,原因有二。第一,當無線電自己的發射器在近處強力放送時,它沒辦法有意義地去聽遠方微弱的訊號——自己的訊號把一切都蓋掉了。第二,也更根本的是:真正重要的是碰撞有沒有發生在接收端,而不是發送端;兩個彼此隱藏的發送端可以各自偵測到通道閒置而開始傳送,卻在關鍵的接收端撞在一起。所以在無線上,「送之前先聽通道」並不足以防止碰撞。

為什麼重要:這正是 Wi-Fi 採用碰撞避免(CSMA/CA)而非碰撞偵測的核心原因,也是它為何加入像可選的 RTS/CTS 交握這類招數。一個簡短的「請求傳送」(Request To Send)加上存取點廣播的「允許傳送」(Clear To Send),讓範圍內的所有人——包含對發送端隱藏的那台——都得知通道被預約了一小段時間,於是先按兵不動。還有一個鏡像的情況,叫做暴露節點問題(exposed-terminal problem):某台站台因為聽到一個其實不會在目標接收端造成碰撞的傳送,就毫無必要地保持沉默。這兩個問題都源自在錯誤的位置——發送端——偵測媒介,而不是在接收端偵測。

大辦公室對角兩端的兩台筆電都連到天花板上唯一的存取點。它們離得太遠,聽不到彼此的無線電,所以一再在同一瞬間傳送,AP 收到一團亂碼。開啟 RTS/CTS 就解決了:兩台都先向 AP 詢問,AP 的 CTS 兩台都聽得到,於是輪流發話。

兩台彼此隱藏的站台,在接收端撞在一起。

RTS/CTS 降低了碰撞的代價(撞掉的是一個小小的 RTS,而不是一個大資料訊框),但它本身是額外負擔,所以多數 Wi-Fi 只在較大的訊框、或偵測到隱藏節點時才開啟它——這是緩解手段,不是徹底治本。

又称
hidden node problemhidden station problem隱藏終端問題