에듀테크 프로젝트 대시보드
CSMA/CA와 숨은 노드 문제
유선 이더넷의 CSMA/CD는 보내는 도중에도 충돌을 감지하지만, 무선은 그게 불가능하다 · 그래서 생기는 숨은 노드 문제와 해법 RTS/CTS
A는 채널이 조용하다고 판단(캐리어 감지)해도, 실제로는 C가 B에게 이미 보내는 중일 수 있다. A와 C가 서로를 못 듣기 때문. 둘이 동시에 보내면 B에서만 충돌이 일어난다.
A가 먼저 짧은 RTS(보내도 될까?)를 보내고, B가 CTS(그래, 지금 보내)를 모두에게 들리도록 응답한다. 이때 C도 CTS를 듣고 채널이 예약됐음을 안다.
CTS 프레임에는 "앞으로 이만큼 조용히 해달라"는 지속시간이 담겨 있다. C는 이 값으로 NAV 타이머를 세우고, A의 DATA·ACK가 끝날 때까지 전송을 미룬다.
왜 무선은 CSMA/CD(충돌 감지)를 못 쓸까? 유선은 송신 중에도 케이블의 전압 변화를 동시에 관찰할 수 있지만,
무선 안테나는 강한 자기 송신 신호에 묻혀 약한 수신 신호를 들을 수 없다(귀머거리 문제). 그래서 Wi-Fi는 충돌을
사후에 감지(CD)하는 대신, CSMA/CA(Collision Avoidance) — 애초에 충돌을 피하는 전략을 쓴다.
RTS/CTS를 쓰지 않을 때도 채널이 붐비면 각 노드는 임의 백오프(random backoff) 시간만큼 기다렸다가 재시도해
충돌 확률을 낮춘다. 이는 이더넷의 이진 지수 백오프와 같은 아이디어다.
RTS·CTS 자체도 전송 시간과 대역폭을 소모한다. 데이터 프레임이 짧거나 숨은 노드가 없는 좁은 공간(집 공유기 하나뿐인 경우)이라면 오히려 오버헤드가 더 크다. 그래서 실제 Wi-Fi는 프레임 크기가 특정 임계값(RTS Threshold)을 넘을 때만 RTS/CTS를 선택적으로 사용하도록 설정할 수 있다.