RTS와 CTS

hi2li·2026년 5월 5일

network

목록 보기
5/17
  • 무선 LAN에서 충돌을 미리 피하기 위해 사용하는 제어 절차

RTS (Request To Send)

  • 무선 랜에서 충돌을 미리 피하기 위해 사용하는 제어절차중 하나
  • “나 데이터 보내도 돼?”라고 먼저 요청하는 프레임
  • “요청 단계”

CTS (Clear To Send)

  • 무선 랜에서 충돌감소를 위해 사용하는 제어절차중 하나
  • “응 보내도 돼. 지금 이 장치가 전송할 거니까 다른 장치들은 잠깐 기다려”라고 RTS를 허락하는 프레임
  • “허락 단계”

왜 필요한가?

  • 무선 랜에서는 유선처럼 충돌을 직접 감지하기 어렵다
  • 유선 Ethernet은 예전에 CSMA/CD를 사용해서 충돌을 감지했다.
  • 하지만 무선 WIFI는 충돌을 감지 하기 어렵기 떄문에 CSMA/CD, 즉 충돌을 미리 피하는 방식을 사용한다.
  • RTS/CTS는 그 중에서도 Hidden Node문제를 줄이기 위해 사용된다.

Hidden Node 문제

[노트북 A]              [노트북 B]
     \                    /
      \                  /
        \               /    
          \            /
            \        /
               [AP]
  • 위와 같이 A와 B가 무선 AP에 연결되어 있다고 하자. 그림대로라면 A와 B는 각각 AP와 통신할 수 있다.
  • 하지만 A와 B의 거리가 멀어지면서 서로가 무선 AP 에게 보내는 신호를 듣지 못할 수 있다.
  • 결과적으로 A와 B가 서로의 신호를 못 보고 동시에 AP로 신호를 보낼 수 있고 이 경우에 AP는 신호가 겹쳐 충돌이 발생한다. (wifi는 기본적으로 하나의 장치만 전송하도록 설계됨.)
    • 무선에서는 아래와 같은 방법으로 한 번에 하나의 장치만 전송하도록 설계됨.
    1. 채널 듣기
    2. 누가 쓰고 있으면 기다림
    3. 아무도 안 쓰면 랜덤 시간 기다림
    4. 그 다음 전송

동작 흐름

위의 문제처럼 바로 데이터를 보내면 AP에서 충돌이 발생할 수 있기 때문에 A는 바로 데이터를 보내지 않음.

AP에게 짧은 RTS 제어 프레임만 먼저 보냄. (A: "AP야, 나 데이터 보내도 돼?”)

그러면 A의 RTS를 받은 AP는 모두에게 CTS를 보낸다. (AP: "A가 지금부터 데이터를 보낼 거니까, 다른 장치들은 기다려.”)

다른 장치들이 AP의 CTS를 받으면 “지금 A가 AP로 데이터를 보내는구나.. 나는 기다려야겠다”하면서 데이터를 보내지 않음. 이렇게 충돌이 회피됨.

A는 이때 실제 DATA를 전송함.

AP는 데이터를 받으면 ACK를 응답함.


그러면 다른 장치들은 언제까지 기다리나?

→ 기다리는 시간은 RTS/CTS안에 “숫자(시간)”로 명시되어 있다.

RTS/CTS 프레임 안에는 Duration이라는 숫자값이 들어가는데 이 숫자값 만큼 기다린다.

예시

A → RTS
(Duration: 500μs)

이렇게 보내면

"A가 앞으로 500마이크로초 동안 채널 사용할 예정” 이런 프레임이 되는것이다.

이에 따라 AP는 다른 장치들에게 아래와 같이 동일한 duration을 담은 CTS를 보낸다.

AP → CTS
(Duration: 500μs)

이 CTS를 받은 다른 장치들은 "500μs 동안은 내가 전송하면 안 되겠구나” 하게 되는 것.



장치들은 이 기다리는 시간을 스스로 저장하게 되는데 이를 NAV라고 한다.

NAV = Network Allocation Vector

B가 CTS 받으면 
→ NAV = 500μs 설정
→ 그 시간 동안 전송 금지

시간이 지나서 NAV = 0이 되면 
→ 다시 채널 사용 가능
profile
Easy come , Easy go

0개의 댓글