# 컴네 12일차
WiFi는 전자기기들이 무선 랜에 연결할 수 있게 해주는 기술로서 IEEE 802.11에 기반한다.
먼저 IEEE 802.11 랜 아키텍처를 살펴보자.
무선 호스트들은 기지국(=base station, access point)들과 통신한다. BSS(Basic Service Set)이란 기지국이 데이터를 주고 받을 수 있는 범위를 말한다. cell이라고도 한다.
802.11은 해당 범위의 주파수를 대략 11개의 채널로 나눈다. 같은 채널에 여러 AP가 있을 경우 간섭이 발생할 수 있다.
호스트는 반드시 AP와 연결되어야 한다. 호스트는 채널을 스캔하여 AP의 이름(SSID)와 MAC 주소를 포함하는 비콘 프레임을 확인한 후 연결할 AP를 선택한다. 연결이 완료되면 DHCP를 통해 IP 주소를 할당받아 네트워크에 접속한다.
* DHCP : Dynamic Host Configuration Protocol, 호스트의 IP주소와 각종 TCP/IP 프로토콜의 기본 설정을 클라이언트에게 자동적으로 제공해주는 프로토콜
* 비콘 프레임 : 무선 네트워크에서 AP가 주기적으로 전송하는 관리 프레임의 일종이다. SSID(Service Set Identifier)와 타이밍 정보, 지원 기능, 네트워크 상태 등의 중요한 정보를 포함하고 있어 이를 통해 무선 장치들이 네트워크에 연결할 수 있도록 돕는다.
AP와 연결하기 위한 방법으로는 passive scanning, active scanning 두 가지가 있다.
passive scanning 방식은 AP가 여러 호스트들에게 비콘 프레임을 준다. 어떤 호스트가 연결하고자 하는 AP에게 association request frame(너랑 연결하겠다)을 보낸다. request를 받은 AP는 다시 해당 호스트에게 association Response frame(알겠다)를 보낸다.
active scanning 방식에서는 호스트가 AP들에게 Probe request frame을 broadcast한다. AP들에게서 Probe Response가 날라오면 호스트는 연결하고자 하는 AP를 골라 그 AP에게만 association Request frame을 보낸다. 이 request를 받은 AP는 호스트에게 association response frame을 보낸다.
AP가 먼저 비콘 프레임을 보내고 그중에서 AP를 선택하면 passive scanning 방식이고, 호스트가 먼저 AP들에게 broadcast하면 active 방식이다. 무선 네트워크를 찾으려고 누르는 것이 active scanning이라고 한다.
IEEE 802.11의 frame은 아래 그림과 같다.
모바일이 이동함에 따라 기지국, 모바일은 전송속도를 동적으로 변경하고 SNR도 다양하다.
802.11에서 multiple access는 CSMA(Carrier Sense Multiple Access)를 사용한다. 프레임을 보내기 전에 채널의 상태를 미리 센싱(감지)하여 다른 노드가 전송 중일 경우 전송하지 않는다. 이는 충돌 확률을 낮춰준다. 하지만 충돌이 발생했을 때 충돌을 감지할 수가 없다. 무선에서는 무선 매체 특성 상 hidden terminal, signal attenuation 등의 문제를 가지기 때문이다. 따라서 충돌 감지 대신 최대한 충돌이 발생하지 않도록 충돌을 피하는 방법을 사용한다. 이 방식이 CSMA/CA(Collision Avoidance)이다.
802.11 sender에서 먼저 채널을 감지한다. DIFS 시간 동안 채널이 idle 상태라면 전체 프레임을 전송한다. 하지만 다른 노드가 채널을 사용 중이라 busy 상태라면 랜덤으로 backoff 시간을 설정한다. 이 시간만큼 기다렸다가 다시 채널을 감지하고, idle일때까지 이를 반복한다.
sender가 프레임을 모두 정상적으로 보내면 receiver 쪽에서는 SIFS 시간만큼 기다렸다가 ACK를 반환한다. hidden terminal problem때문에 ACK로 정상적 수신 확인이 꼭 필요하다.
* DIFS (Distributed Inter-Frame Space): 데이터 프레임을 전송하기 전 기다려야 하는 시간 간격
* SIFS (Short Inter-Frame Space): ACK와 같은 단기 제어 프레임을 전송하기 전 기다려야 하는 짧은 시간 간격
(그림에 에러체크 시간이라고 되어있는데 아닌 것 같음, 데이터프레임과 ACK 프레임 사이의 짧은 대기 시간이라고 한다.)
더 충돌을 피하기 위해서 RTS와 CTS도 사용할 수 있다. RTS(Ready To Send) sender가 receiver에게 신호를 보내기 전에 신호를 보낼 준비가 되었다는 뜻으로 보내는 메세지이다. 수신자는 채널 상황이 idle할 경우 받을 준비가 되었다는 의미로 CTS(Clear To Send)를 보낸다. CTS를 받은 sender는 신호를 보낼 수 있다. 이렇게 하면 내 네트워크 망 밖에 있는 노드의 상황까지 확인한 후 신호를 보낼 수 있어 hidden terminal problem을 해결한 것이다.
위 그림을 보면 호스트 A와 B가 각각 AP에게 RTS를 보낸다. 하필이면 동시에 보내서 충돌이 났다. 일정 시간 기다렸다가 A가 다시 RTS를 보냈고, AP에서는 이 RTS를 받아 모든 노드에게 CTS(A)를 보낸다. 나 이제 A와 연결할거니까 다른 노드들은 나한테 보내지 말라는 의미로 전체 노드에게 알리는 것이다. CTS를 받은 A는 DATA를 전송한다. A랑 연결해서 데이터를 모두 받았다는 의미로 ACK(A)도 모든 노드에게 보내 알린다. 이제 다시 채널이 사용가능하다는 것을 알려주는 것이다.
1. DIFS (Distributed Inter-Frame Space):
송신자는 DIFS 동안 채널이 비어 있는지 확인한 후 RTS(Request To Send)를 보낸다.
2. RTS (Request To Send):
송신자가 수신자에게 데이터를 보내기 전에 보내는 신호
3. SIFS (Short Inter-Frame Space):
수신자는 SIFS 동안 대기한 후 CTS(Clear To Send)를 보낸다.
4. CTS (Clear To Send):
수신자가 송신자에게 데이터를 보내도 된다고 알려주는 신호
5. NAV 설정:
RTS와 CTS 패킷에는 예상 데이터 전송 시간 정보가 포함된다. 이 정보를 바탕으로 다른 노드들은 NAV 타이머를 설정하여 해당 시간 동안 채널 사용을 피한다.
5-1. NAV(RTS): RTS 패킷을 받은 노드들이 설정하는 타이머이다. RTS 패킷은 송신자에서 수신자에게 전송되기 때문에, 무선 네트워크의 특성상 송신자 주변의 노드들은 이 패킷을 수신할 수 있다. RTS 패킷을 수신한 노드들은 송신자가 데이터를 전송할 준비를 하고 있음을 인지하고, 지정된 시간 동안 채널 사용을 피한다.
5-2. NAV(CTS): CTS(Clear To Send) 패킷을 받은 노드들이 설정하는 타이머이다. CTS 패킷은 수신자에서 송신자에게 전송되기 때문에, 무선 네트워크 특성 상 수신자 주변의 노드들이 이 패킷을 수신할 수 있다. CTS 패킷을 수신한 노드들은 수신자가 데이터를 받을 준비가 되어 있음을 인지하고, 지정된 시간 동안 채널 사용을 피한다.
그럼 왜 두 개 다 타이머를 설정하느냐? 송신자와 수신자는 서로 다른 위치에 있기 때문에, 각자 주변의 노드들이 다를 수 있다. RTS 패킷은 송신자 근처의 노드들에게 송신자의 전송 의도를 알리는 역할을 하고, CTS 패킷은 수신자 근처의 노드들에게 수신자의 수신 준비 상태를 알리는 역할을 한다. 이로 인해, 송신자와 수신자 근처의 노드들이 각각 NAV를 설정하여 채널 사용을 피하도록 하는 것이 중요하다. 이렇게 양쪽 주변 노드들이 모두 채널 사용을 피하게 하여 충돌 방지를 강화할 수 있다.
802.15 기반으로는 personal area network가 있다. 이게 블루투스이다. 10미터 이내의 근거리에서 유선 연결을 대체하는 목적으로 사용된다. ad hoc구조를 가지고 있어서 기지국이 필요없다. master controller와 client device가 존재하여 클라이언트가 마스터에게 연결을 요청, 마스터가 받아주는 구조이다.
참고 블로그
'컴퓨터네트워크' 카테고리의 다른 글
[컴퓨터 네트워크] Mobility (0) | 2024.07.11 |
---|---|
[컴퓨터 네트워크] LANs : addressing, ARP (1) | 2024.07.11 |
[컴퓨터 네트워크] Wireless : Intro, CDMA (0) | 2024.07.11 |
[컴퓨터 네트워크] Link layer - Multiple Access Protocol (0) | 2024.07.10 |
[컴퓨터 네트워크] Link layer - Introduction, Error Detection & Correction (0) | 2024.07.09 |