와이파이는 어떻게 전송 순서를 정할까

김세빈·2일 전

CS

목록 보기
27/29

반이중 통신과 CSMA/CA

반이중 통신은 양쪽 장치가 데이터를 주고받을 수 있지만, 동시에 송신과 수신을 할 수는 없는 방식이다. 무전기로 대화할 때 한 사람이 말하면 다른 사람은 기다려야 하는 것과 같다.

전이중 통신은 양쪽에서 동시에 데이터를 보내고 받을 수 있는 방식이다. 전화로 상대방의 말을 들으면서 나도 말할 수 있는 것과 같다. 다만 전이중 통신이라고 해서 반드시 회선이 하나 더 필요한 것은 아니다. 송수신 경로를 분리하거나, 같은 매체에서 신호를 구분하는 기술로 구현할 수도 있다.

일반적인 와이파이 통신은 같은 무선 채널에서 반이중 방식으로 동작한다. 여러 장치가 채널을 공유하므로, 데이터를 보내기 전에 다른 장치가 사용 중인지 확인해야 한다.

CSMA/CA로 충돌 가능성을 줄인다

CSMA/CA는 채널의 사용 상태를 확인하고, 전송 시점을 분산해 충돌 가능성을 줄이는 방식이다. 여기서 CA는 Collision Avoidance, 즉 충돌 회피를 뜻한다.

회의에서 여러 사람이 동시에 말을 시작하면 서로의 말을 알아듣기 어렵다. 다른 사람이 말하는지 듣고, 말이 끝난 뒤 잠시 기다렸다가 발언하면 겹칠 가능성이 줄어든다. CSMA/CA도 비슷한 방식으로 동작한다.

아래는 기본적인 경쟁 기반 전송에서 특정 수신자에게 데이터 프레임을 보내는 과정이다.

  1. 현재 채널이 사용 중인지 확인한다

장치는 자신이 통신할 채널을 감지한다. 다른 장치가 사용 중이면 전송을 미루고 기다린다.

사용 중인 채널을 발견할 때마다 다른 빈 채널을 찾아 이동하는 것은 아니다. 같은 AP에 연결된 장치들은 해당 연결에서 사용하는 채널의 전송 기회를 놓고 경쟁한다.

  1. IFS만큼 기다린다

채널이 비었다고 바로 전송하지는 않는다. 일정 시간 동안 계속 비어 있는지 확인한다. 이때 사용하는 프레임 간 대기 간격을 IFS(Interframe Space)라고 한다.

IFS는 도로의 안전거리와 비슷하지만, 프레임의 역할에 따라 먼저 전송할 기회를 주는 기능도 있다.

기본 DCF 방식에서 새로운 데이터 전송을 시작할 때는 DIFS를 사용한다. 수신 확인인 ACK를 보낼 때는 그보다 짧은 SIFS를 사용한다. 덕분에 다른 장치가 새로운 전송을 시작하기 전에 ACK를 먼저 보낼 수 있다. CSMA/CA 동작 설명 논문

  1. 무작위 백오프로 전송 시점을 나눈다

모든 장치가 같은 시간만큼 기다린 뒤 동시에 전송하면 다시 충돌할 수 있다. 이를 줄이기 위해 무작위로 추가 대기 시간을 정한다. 이 과정을 백오프라고 한다.

장치는 0부터 CW(Contention Window)까지의 정수 중 하나를 선택한다. 선택한 값은 기다릴 슬롯 수가 된다.

예를 들어 CW가 15이고 노트북이 3, 스마트폰이 7을 선택했다고 가정한다. 채널이 계속 비어 있다면 노트북이 먼저 전송한다. 스마트폰은 3개 슬롯을 기다렸으므로 남은 값은 4가 된다.

이때 스마트폰은 카운트다운을 멈춘다. 노트북의 전송과 ACK 교환이 끝나고 채널이 정해진 시간 동안 다시 비어 있으면, 남은 4개 슬롯부터 이어서 기다린다. 매번 새로운 난수를 뽑는 것은 아니다. 백오프 카운터 동작

  1. ACK로 전송 결과를 확인한다

수신 장치가 데이터 프레임을 정상적으로 받으면 ACK 프레임을 보낸다. 여기서 ACK는 TCP의 ACK 세그먼트와 별개인 무선 링크의 확인 응답이다.

송신 장치가 정해진 시간 안에 ACK를 받으면 해당 전송을 성공으로 처리한다. ACK를 받지 못하면 재전송을 시도한다.

다만 ACK가 없다고 해서 데이터가 반드시 도착하지 않았다는 뜻은 아니다. 데이터는 도착했지만 돌아오는 ACK가 손실되었을 수도 있다. 송신 장치에서는 성공을 확인할 수 없으므로 재전송하는 것이다.

실패할수록 대기 범위를 넓힌다

재전송에서도 여러 장치가 비슷한 시점에 전송하면 다시 충돌할 수 있다. 따라서 실패하면 무작위 대기 값을 선택하는 범위를 넓힌다.

일반적인 이진 지수 백오프에서는 CW를 다음과 같이 늘리되, 정해진 최댓값을 넘지 않도록 한다.

CW의 다음 값 = 2 × (현재 CW + 1) − 1

예를 들어 초기 CW가 15인 경우, 실패에 따라 31, 63처럼 커진다. 성공하면 초기 범위로 돌아간다. 범위가 커진다는 것은 평균 대기 시간이 길어진다는 뜻이다. 새로 뽑는 값이 무작위이므로 매번 이전보다 오래 기다리는 것은 아니다.

따라서 재시도 횟수 k를 0부터 세면서 대기 범위를 단순히 0부터 2^k−1까지라고 설명하면 초기 경쟁 윈도가 빠진다. 실제 동작에는 초기 CW와 최대 CW가 있으며, 재전송 횟수에도 제한이 있다. ACK를 받았을 때가 아니라 받지 못해 재시도할 때 대기 범위를 늘린다. 경쟁 윈도 증가와 초기화

와이파이와 근거리 무선 통신

와이파이는 IEEE 802.11 기반의 대표적인 무선 LAN 기술이다. 노트북이나 스마트폰을 AP에 연결해 같은 네트워크 안에서 데이터를 주고받도록 한다. 인터넷 연결이 없어도 와이파이로 내부 네트워크를 구성할 수 있다.

블루투스와 지그비도 가까운 거리에서 무선으로 통신하지만, 일반적으로 무선 개인 영역 네트워크인 WPAN 계열로 구분한다. 따라서 와이파이를 대표적인 무선 LAN 기술이라고 설명하는 것은 맞다. 다만 근거리 무선 통신 전체를 와이파이라고 부를 수는 없다.

노트북을 사내 네트워크에 연결하는 데는 와이파이를, 무선 이어폰을 휴대폰에 연결하는 데는 블루투스를, 저전력 센서의 측정값을 전달하는 데는 지그비를 사용하는 식이다.

0개의 댓글