유선통신과 달리 무선랜에서는 collision 감지하는것이 어렵다.
따라서 무선랜에서는 가능한 한 충돌을 회피(collision avoidance)하는 CSMA/CA방식을 사용한다.
왼쪽은 sender, 오른쪽은 receiver이다.
우선 sender는 전송하기 전 channel idle인지 확인한다.
idle이라면 바로 전송하는것이 아니라, 일정시간 대기한다. (DIFS)
DIFS시간이 끝날 때까지 계속 idle하다면, 데이터를 전송한다.
receiver는 데이터를 받았다면 SIFS만큼 대기한 이후, ACK를 보내준다.(잘 받았다는 뜻)
sender는 일정 시간동안 ACK가 오기를 기다리고, ACK가 정상적으로 오면 전송이 완료되었다고 생각한다.
반면 ACK가 도착하지 않는다면, 전송이 실패했다고 생각하고 재전송을 하게된다.
이 때 binary exponential back-off를 한다.
k값을 하나 뽑아 카운트다운을 하는데, 만약 카운트다운 도중 channel busy가 감지되면 카운트다운을 일시정지 하고,
다시 channel idle이 되었을 때 DIFS만큼 대기한 이후 카운트다운을 재개한다.
카운트다운이 끝났다면 바로 데이터를 전송한다.
위의 CSMA/CA방식만 사용하면, hidden node problem을 해결할 수가 없다.
이 그림을 보면, A와 B, B와 C 사이에서는 통신이 되지만
A와 C는 거리가 멀어 서로 인지하지 못하고 있다. 이때문에 channel busy인지도 인지를 못 하는 것.
A와 C가 각각 B에게 데이터를 전송한다고 하자.
A가 B에게 데이터전송 중이어도 C는 A의signal을 받지 못하기 때문에 channel idle로 인식하고 C도 데이터를 보낸다.
그러면 B에서 collision이 일어나게 된다.
이를 해결하기 위한 RTS/CTS 방법이 있다.
위 그림에서 A,C는 서로를 인지할 수 없다.
우선 A가 B에게 전송할 데이터가 있다.
A는 B에게 RTS를 보낸다.(request to send)
"B님, 저 10초정도 드릴 말이 있는데 말 해도 될까요?"
B는 A가 보낸 RTS를 받고, CTS를 브로드캐스트 한다.(clear to send).(dest MAC address를 모두 1로 채움)
"10초동안 말하세요~~"
B가 브로드캐스트 한 내용은 A,C 둘 다 받을 수 있다.
CTS를 수신한 A는 데이터를 전송하고,
CTS를 수신한 C는 누군가가 말하고있다는 것을 인지하고 대기한다.
이 방법으로 hidden node problem을 방지할 수 있다.(CSMA/CA with RTS/CTS로 사용함)
(Virtual carrier sensing이라고도 한다)
물론 RTS가 collision 날 수도 있는데, 마찬가지로 back-off하고 재전송 한다.
RTS는 사이즈가 작기때문에 collision이 난다고 해도, 크기가 큰 데이터를 보냈다가 실패하는것 보다 효율적이다.
SNR과 BER
SNR: signal to noise ratio
BER: bit error rate
SNR은 잡음 대비 신호 비율,(단위: dB 데시벨) 높을수록 좋다.
BER은 비트에러가 발생하는 비율, 낮을수록 좋다.
무선랜에서 BER을 낮추는 방법?
- SNR을 높인다
- noise에 강한 modulation 기법을 적용시킨다.
SNR을 높이기 위해서는 노이즈를 줄이거나 시그날 파워를 높여야 한다.
노이즈를 줄이는 것은 힘들기 때문에 TX power를 높여 SNR을 높일 수 있다.
(시그날 파워가 너무 크면 다른 장치들에게 노이즈가 될 수 있다. 따라서 적정한 시그날파워를 사용하는것이 좋다)
noise에 강한 modulation 기법 적용시키기.
digital data를 analog signal로 변환하는 방식은 여러가지 있다.
BPSK, QPSK, QAM 등이 있는데,
BPSK로 갈수록 속도는 느리지만 노이즈에 강하고,
QAM으로 갈수록 속도는 빠르지만, 위상이 조금만 틀어져도 다른 값이 되어버리기 때문에 노이즈에 취약하다.
그래서 실제 스마트폰에서는 무선랜 신호가 약하면 BPSK와 같은 노이즈에 강한 modulation 기법을 적용시켜 BER을 낮추기도 한다.
802.11 Frame Format
이더넷에 비해 상당히 복잡해 보인다.
맨 앞의 frame control에는 type,subtype이 있다. 여기에는 이 프레임이 RTS인지 CTS인지 ACK인지 DATA인지 구별하는 정보가 있다.
duration은 RTS/CTS 에서 사용된다.
또한 address가 총 4개가 있는데,
address1은 dest,
address2는 src,
address3은 라우터,
address4는 Ad-hoc 통신시 사용하는 주소이다.
왜...이렇게 주소를 많이 가지고있을까?
라우터정보는 왜?..
무선랜 통신시 AP로 데이터가 전송되면, 그 이후에 AP에서 라우터로 이더넷통신을 하게 된다.
그럼 WiFi Frame에서 헤더를 떼고, 이더넷 헤더를 붙여 유선통신을 한다.
Handoff
어떠한 AP에서 다른 AP로 변경하는 작업이다.
handoff를 해야겠다고 인식되면,
Scanning과정을 거쳐야 한다.
scanning은 두 가지 기법이 있다.
- Active scan
- Passive scan
Active의 경우 probe request를 브로드캐스트하고, 돌아오는 probe response frame을 받는다.
Passive의 경우 AP가 주기적으로 보내주는 비콘 프레임을 듣는 방식이다.
액티브 방식이 속도가 빠르다.
'2022-2 > 데이터통신' 카테고리의 다른 글
[데이터통신] Wireless LAN (0) | 2022.12.04 |
---|---|
Switch (1) | 2022.11.23 |
ARP and Ethernet (0) | 2022.11.16 |
[데이터통신] Data Link Layer (0) | 2022.11.02 |
Analog Transmission (0) | 2022.10.19 |
댓글