지금까지 유선을 쓰는 Ethernet에서 Link layer를 바라봤다면,
이제 무선을 쓰는 상황까지 고려해보자.
둘은 개념적으로 유사한 면이 많다.
유선은 케이블 선이 있다면,
무선은 공기가 있다.
위 그림의 흰색 동그란 AP(Access Point)를 보자.
이 놈은 참 특이한게, 무선이면서 유선까지 커버한다.
다시 말해, Wireless는 저 첫 홉만 무선이고, 나머지는 다시 유선으로 동작하니까,
우리는 Wireless를 공부할 때 저 한 홉만 파면 되는 것이다.
그리고 한 홉 통신도 Link Layer에서 커버하기 때문에 여기서 담당하는 것이다.
참고만 하자.
거리와 전송 속도를 비교한 표다. 802.11이 와이파이다.
발전을 해가면서 속도는 빨라지지만, 거리는 벗어나지 못하고 있다.
옆에는 셀룰러 방식의 2G,3G 등도 보인다.
이것도 참고만 하자.
우리가 집중할 것은 한 홉이면서 AP가 필요한, WIFI를 공부해야 한다.
또한 와이파이는 2.4GHZ를 많이 쓰는데, 이게 전자렌지에서 쓰는 주파수이기도 해서,
여러 신호와 섞여 쓰레기가 될 확률이 높다고 한다.
Wireless Fidelity(충실)
근원은 Hi-Fi로, 음악의 음원을 최대한 오리지날로 살리기 위해 노력한 것을
마케팅적으로 바꿔서 Wi-Fi로 지었다고 한다.
발전 하면서 알파벳이 달라지는구나 정도로만 보자.
결국 발전할수록 전송속도가 빨라진다는게 포인트다.
와이파이 아키텍처에서는,
무선 디바이스가 AP(base point)와 통신한다.
그리고 AP는 다시 유선으로 스위치, 라우터 등과 통신을 한다.
기존 통신은 Host가 먼저 요청을 했다면,
AP는 주기적으로 Beacon Frame을 브로드캐스팅한다.
이게 우리가 와이파이 설정 들어가면 연결 가능한 AP가 뜨는 것이다.
HOST 입장에서 Passive 한 것이다.
반대로 Active하게 host가 스캐닝도 할 수 있다.
수기로 우리가 추가할 수도 있지 않은가?
Probe Request 프레임을 보내서 연결할 수도 있다고 한다.
유선과 달리 무선은 다른 사람들의 말이 안 들릴 수도 있다.
물론 CSMA 방식을 사용해서, 내가 메시지를 보내기 전에 먼저 누가 말하고 있는지를 체크한다.
그러나, CSMA/CD는 말을 하고 있다가 누가 들어오면 바로 끊고, 재전송을 하지만,
무선에서는 이게 불가능하다.
와이파이는 한번에 한 방향으로만 작동한다. 들을거면 듣고, 말할 때는 말만 할 수 있다.
역시 여기서도 섞이면 쓰레기가 되는것이고,
CSMA/CD는 섞이면 재전송, 재전송을 했는데,
그리고 내가 Collision detection을 못했다면 잘 갔다고 판단을 할 수 있는데,
여기서는 내 메시지가 안 섞이고 잘 전달되었는지 어떻게 해야될까?
그렇다. ACK이 추가되면 된다.
TCP의 ACK이 아니라, Link Layer의 ACK이다.
Collision Avoidance - 충돌 회피
DIFS(Distributed Interframe Space)
SIFS(Short Interface Space)
위를 보자. 저건 이상적인 상황이고. Data를 쫙 보내고 있는데,
멀리 있는 다른 Sender가, '아무도 없나보다' 하고 쫙 보내면?
AP는 섞인 프레임을 받아 쓰레기가 된다.
그래서 단순 ACK만 쓰는게 아니라
RTS : Ready To send Frame
CTS : Clear To send Frame
마치 ping을 보내듯, 아주 쪼그만 데이터를 슥 보내보는 것이다.
정말 충돌이 안 일어나나.
또한 AP가 응답으로 CTS(A)를 브로드캐스팅을 하기 때문에,
B는 '아 누가 이미 선점했구나. 기다려야겟다'
하는 것이다. 저 CTS에 얼만큼 쓰겟다도 들어잇다.
만약 동시에 RTS를 보낸다면, AP는 쓰레기로 듣고 답을 안할 것이다.
그럼 A,B는 다시 랜덤으로 기다렷다가 다시 RTS를 보내는 것이다.
위 그림을 보면, DATA(A) 이후에 AP가 ACK(A)를 보내는데,
무선이라 브로드캐스팅이 되는 것을 유의하자. 그래서 B에게도 간다.
A는 CTS(A)를 받아서 데이터를 막 보내고 있었다.
B는 못 받아서 RTS를 보내면, 섞일 것이고, ACK가 안 올것이다.
이제 둘다 랜덤 백오프 타이머를 돌려서 먼저 되면 다시 Data든, RTS를 쏜다.
Random Access의 특징이 고스란히 담긴다
사람이 적으면 평화로운데, 많을 수록 전쟁이다.
표준에서는 7번 보내도 ACK가 안 오면 포기하고 다음 프레임을 전송하라고 한다.
그럼 이 프레임은 진짜 버려? 아니, 위 TCP에서 다시 보내라고 할거야 걱정 ㄴㄴ
(참고 : ACK랑 CTS는 다르다.)
중요한 것은 주소란이 4개다.
4번은 잘 안쓰인다고 하니 사실 3개이다.
하나가 이상하다. 아니 한 홉만 커버하면 된다면서, 내가 왜 라우터까지 신경써야하지?
HOST <---->AP<------->Router
여기서 AP는 무선/유선으로 처리한다.
즉 CA/CD 둘다 처리를 해야 한다는 것이다.
그림을 보면 이해가 쉽다.
AP가 라우터와 통신할 때는, 이더넷 프로토콜을 쓴다.
여기선 src,dst MAC 주소만 쓴다.
src를 AP의 MAC주소가 아닌 호스트의 주소를 쓴다.
어느정도 AP가 멍청해서도 있다.
자세한 내용은 다음 시간에...