네트워트 레이어까지만 얘기하더라도 개념적인 전용 링크가 있어서, 패킷을 전송하면 게이트웨이 라우터에 도착한다고 하지만, 사실 링크 레이어에서 다른 주변의 호스트들과 공유를 하는 하나의 브로드 캐스트 미디엄이었구나.


내가 얘기하면 다른 사람도 들리고 다른 사람이 얘기하면 나 또한 들리므로, 동시에 얘기하는 경우 충돌이 발생하고 이러한 미디엄에 어떻게 접근하느냐에 대한 컨트롤이 중요할 것이고 어떻게 할 것인가가 얘기를 하였다.


따라서 맥 프로토콜이 필요하고, 유선 링크 상황에서 맥 프로토콜이 어떻게 동작하는지 살펴보았는데, 여기서 동작하는 맥 프로토콜이 CSMA/CD 프로토콜이다. 그런데 이 이야기는 유선 이더넷 케이블인 상황이고, 이후에 기술이 발달해서 유선이 아닌 무선링크인 상황이 존재한다. 여기서 어떠한 방식의 맥 프로토콜이 사용되는지 살펴봐야 한다.


유선 이더넷을 사용할 때, 하나의 링크를 공유해서 브로드 캐스트를 하는 것이라면, 무선 이더넷은 공기라는 하나의 미디엄을 공유해서 충돌이 발생하고 이러한 것을 어떻게 해결할 것인가에 대한 얘기를 해야한다.


무선 링크와 유선 링크 상의 특성상 차이가 존재한다.


Wireless And Mobile Networks

네트워크 관점에서 모빌리티는 무언가 Connectivity 가 있는 상황에서 이동이 있는 것을 모빌리티라고 의마하며, 단순히 선이 없음을 말하는 것, wireless 이다. 무선링크는 흔히 말하는 Wifi 라고 불리우는 것들이 있다. 


먼저 Wireless 의 기본 네트워크 개념은 랩탑, 스마트폰이 있고 이것들이 AP라고 불리우는 액세스 포인트가 있다. 우리가 구글 캘리포니아의 서버에 접속한다면, 어디까지가 무선인가? 다 무선은 아니다. 딱 첫 hop 만 무선이고 이후는 유선이다. 결국 한 홉을 어떻게 갈 것인가에 대한 이야기이다. 


첫 홉을 어떻게 무선으로 갈 것인가?

무선 네트워크를 특성별로 나누면, 아래의 그림처럼 나타낼 수 있다.

X 축은 전송반경이다. m, km 단위, 실내 혹은 실외에 대한 것이고 Y 축은 데이터 속도에 대한 내용이다. 보면 전송거리가 짧은 것 802.11 은 wifi 라고 불리우는 인터넷 테크놀로지이다. 802.11b, 802.11a 이렇게 나오고 전송반경은 짧다. 주로 실내에서 사용된다. 반면에 전송반경이 긴 것들은 셀룰러 테크놀로지에 사용되는 것들이다. 5G는 이미 개발되었으며 위의 사진보다 Y축이 더 위에 존재할 것이다.


Wireless 네트워크의 분류로는 인프라 스트럭처가 있느냐, 있지 않느냐로 나눌 수 있다. 무선 네트워크가 싱글홉이냐 혹은 멀티홉이냐로 나눌 수 있다. 우리가 흔히 보는 90% 이상의 무선 네트워크는 인프라 스트럭처가 있으면서 싱글홉인 경우다. Wifi 를 보면 AP가 있으면서 Base Session 이 있고 거기까지만 싱글홉이고 나머지는 유선인 경우다.


무선 네트워크의 특징

(1) 유선 이더넷은 시글널이 케이블을 통해서 전달된다. 케이블이 있고 외부는 피복으로 감싸여저 있어 내부에는 시그널이 전달된다. 완전히 보호된 채 외부의 어떤 노이즈로부터 차단된 채 시그널이 진행된다. 그리고 시그널이 진행되는 매체 자체도 안정적이다. 유선 인터넷에 대한 비유적인 그림으로 상상하면, X축이 전송 센더로부터의 거리이고 Y축이 신호의 세기이면 유선같은 경우는 거의 일정하다. 무선의 경우에는 거리가 늘어남에 따라서 Exponential 하게 신호의 세기가 떨어진다. 전혀 보호받지 못하면서 간섭도 많이 생기기 때문이다.


예를 들면 잔잔한 호수에 돌덩이를 던지면 주변에는 큰 파동이 생기지만 점점 멀어져가는 거리의 물의 파동은 약해지며 멀어질수록 잠잠하다.


무선 호스트 A 와 B 그리고 C가 존재한다고 가정하자. 이것들이 유선 이너뎃에 같이 있는 네트워크이면 A가 전달하는 것에 대해서 B와 C가 같이 받는다. 그리고 A에서 B는 80m 이고 B에서 C의 거리는 80m이다. 여기서 무선 환경에서 Wifi 전송반경이 100m이면 A가 보낸 데이터에서 B는 들을 수 있을 것이다. 하지만 C는 들을 수 없다. 데이터의 시그널 크기가 거리에 따라서 작아진다.


A가 전송하는지 안하는지를 C가 알아야 방해를 하지 않을 것이다. A가 데이터를 전송한다면 C는 전송하지 말아야 한다. 충돌이 일어나지 않도록 하기 위해서이다. 무선 인터넷의 가장 큰 단점은 Collision detection 이 불가능하다. A, B, C 가 같이 있는다 쳐도 A가 어떤 이야기를 한다고 치더라도 B가 하는 얘기가 A에게 안들린다는 이야기이다. A가 무엇을 얘기한다면 주변에서 하는 얘기는 엄청 작게 들린다. 전송 거리에 따라서 신호세기에 따라 엄청나게 줄어들기 때문이다.


무선 같은 경우에 내 목소리를 전송한다면 주변의 목소리는 들리지 않게 된다. 이러한 문제점때문에 유선에서 사용하는 CSMA/CD를 사용하기 어렵다. 무선링크에서는 어떤 맥 프로토콜을 사용하는 것인가.


Wifi (IEEE 802.11 Wireless LAN), (=Wireless Fidelity)

wifi의 구성은 액세스 포인트가 있으며 주변에 연결되어 있고, 스위치가 연결되어 있다. 어딘가에 AP가 숨겨져 있으며 유선이 꼽혀져 있다. 이 케이블은 이더넷 케이블으 꼽혀 있으며 스위치가 연결되어 있으며 제일 끝에 라우터가 연결되어 있는 것이다. 하나의 AP가 bss(Basic Service Set) 라고 구성을 한다. 우리가 bss에 연결되며, 우리가 처음 랩탑에 열면 주변의 BSS와 연결한다. 주변에 AP들이 많을텐데 어떤 AP를 연결하느냐. 주변의 모든 AP 들은 주기적으로 자기자신의 정보를 브로드캐스트한다. beacon이라는 프레임에다가 자기 자신의 정보를 주기적으로 초당 10번정도 브로드캐스트하면 호스트들이 그 정보를 가지고 판단을 한다. 비콘 정보를 담아 브로드캐스트하며, 각 AP의 정보들과 MAC Address 들의 정보들이 있으며 시그널의 세기도 알 수 있다. 이를 판단해 가장 최적의 AP를 선택하여 연결한다. 이 과정을 passive scanning 이라고 한다. 호스트는 가만히 있음에도 불구하고 비콘을 AP들이 ㅡ냥 보내주기 때문이다.


Wifi 링크의 맥 프로토콜 알아보기

항상 무선링크, wifi 를 생각하면 AㅡㅡㅡBㅡㅡㅡC 라는 그림의 각각 반경을 생각하자. 각각이 AP 라는 프레임을 주고받는 것이다. 기존의 그냥 알고 있는 유선 이더넷 링크의 CSMA/CD 를 사용할 수 있을 것인가 생각해볼 수 있다. CSMA/CD 를 사용한다고 생각한다면 A가 하는 이야기를 C가 듣지 못한다. A가 데이터 프레임을 보내고 있는 상황이라면 carrier sense 하고 있는 상황이라면 C는 데이터를 보내지만 충돌을 감지하지 못하기 때문에 데이터를 전송하고 말아버리지만 실질적으로 데이터를 보낸 것은 아니다. 결국 무선 링크에서는 충돌을 발생하는데 충돌 감지를 하지 못한다. 결국 어떻게 할 것인가?


정리하면 유선 이더넷에서 맥 프로토콜은 충돌이 났다?! 하면, 데이터가 전송되지 않았고 이를 재전송한다. 충돌이 나지 않을때까지 재전송하는 것이다. CSMA/CD 프로토콜의 방식이다. 결국 충돌이 나지 않는다면 제대로 갔음을 의미한다. 링크레이어는 ACKs 가 필요하지 않다. 여기서 무선 링크 환경에서는 충돌을 감지하지 못하는데 충돌이 발생한다. 프레임의 전송을 확신하지 못하기 때문에 제대로 갔는지 여부를 상대방이 알려주어야 한다. 결국 무선 링크의 경우에는 유선에 없었던 ACKs 가 필요하다. 여기서 TCP 에서의 ACKs 와 전혀 다른 개념이다. TCP 에서의 ACKs 는 End to End 에서의 피드백이었다면 위의 ACKs 는 링크에서의 ACKs이다 한 홉에서 잘 갔는지에 대한 ACKs 이다. 


Wifi 환경에서의 맥 프로토콜의 이름 : CSMA/CA (Collision Avoidance)

동작은 제일 처음에 보낼 데이터가 있으면, 센더가 carrier sense 를 해보고, 누군가 전송하고 있다면 보내지 않는다. carrier sense 했는데 조용했으면 데이터를 보내며, carrier sense 하는 시간은 DIFS 이며 이 시간만큼 채널이 조용하면 데이터를 전송한다. sender 는 ACKs 를 받았을 때만 전송 데이터가 제대로 갔음을 확인한다. 만약 ACKs 를 받지 않으면 collision이 발생했음을 인지하고 재전송 준비를 한다. DIFS 시간에 누군가 전송을 하고 있다면 보내지 않는다. 그리고 조용히 될 때까지 기다리며 랜덤한 시간만큼 기다리다 보낸다. 왜냐하면 여러사람이 있을 수도 있기 때문이다.

데이터를 전송해서 ACK가 온다. 센더는 ACK가 올 때까지 재전송을한다. 여기서 유선 링크에서 CSMA/CD 와의 동작 차이를 생각하면 CSMA/CD 에서 데이터를 전송했는데 충돌을 감지했다면 바로 멈춘다. 그 후 backoff 만큼 랜덤한 값으로 뒤로 갔다가 다시 보낼 시작을 한다. 여기서 CSMA/CD 는 얘기를 시작하면 다 얘기해야 한다. 멈춘다는 개념이 없다. 한 번 전송하면 전체를 전송해야 한다. 유선과 무선에서 충돌이 발생한다. collision 이 발생하는 것은 동일하나 낭비되는 것이 무선이 더 크다. 


따라서 무선에서는 충돌이 발생되지 않도록 조심해야한다. 그래서 충돌에 대한 피해가 크기 때문에 충돌을 조심해야하며 CSMA/CA 프로토콜만 보았을 때 충돌을 피하려고 하는 어떤 모습이 보이지 않는다. 여기서 충돌을 좀 줄여보자 라는 의미에서 개선된 내용이 있다.


CSMA/CA 에 RTS-CTS 라는 컨트롤 프레임을 추가시켜 collision 을 줄인다. RTS 는 데이터를 보내고자 할 때 주변에게 데이터를 전송한다고 주변에게 알리는 것이다. CTS 는 알았어 너 그럼 나한테 데이터 보내라고 허락하는 Clear to Sender 라는 컨트롤 프레임이다. CSMA/CA 의 문제는 데이터를 바로 전송하는데 충돌나면 데이터가 전부 날라간다. 충돌에 대한 위험성이 있음에도 불구하고 많은 양의 데이터를 보내는데 생기는 문제가 발생한다. 실제 내가 보내고자 하는 큰 데이터가 있어도 조그만 데이터를 보내서 확인하는 것이 이 컨트롤 프레임의 아이디어이다.



RTS-CTS 를 통해서 collision을 줄이는 것이다.


CTS 를 보낼 때 RTS 를 보내면 섞이게 되며, 노이즈가 생긴다. AP 가 CTS를 전송할 때 B가 RTS를 보낸다. 그럼 조그만 RTS 의 데이터로 인해 CTS 의 데이터가 다시 날라가고 결국 전체 데이터를 전송하지 못하는 문제가 발생한다. 하나의 채널을 예약하기 위해 해당 AP를 접근하는 모든 호스트들은 경쟁하는 상태이다. 왜냐하면 ACK가 오지 않았기에 해당 데이터가 제대로 전송되지 않았음을 이야기하기 때문이다.


WIFI 는 사람이 적으면 굉장히 효율적이지만, 사람이 많으면 채널의 band width 를 전부다 사용하지 못하고 충돌이 발생 backoff 충돌 방생 backoff 가 반복되는 것이다. ACK 를 받아야 제대로 갔음을 말하는데 ACK를 받지 않았으면 재전송을 실시한다. ACK를 받지 않는 작업이 지속된다면 결국에는 WIFI 가 표준에서 재전송을 7번까지 제정해두었다. 여기서 일곱번의 시도속에 ACK 가 오지 않았으면 다음 프레임으로 넘어간다. 포기된 프레임은 TCP에서 해당 패킷, 프레임 순으로 다시 내려온다.


wifi에서 사용하는 프레임의 모습 (데이터 프레임)

데이터 부분에 IP패킷이 들어가고 나머지에 헤더 필드들이 들어간다. 필드들 위에 들어간 숫자들은 Byte 단위이다. 헤더필드중에서 가장 중요한 것은 Address 필드이며 Address 필드는 총 4개이다. 현재까지 보았던 주소에 해당하는 필드들은 source & destination 2개였지만 여기선 4개이다. address 1, address 2, address 3 은 일상에서 쓰이기 때문에 기억해두는 것이 좋다.



address 1은 무선 네트워크에서 Wifi 데이터 프레임을 받는 인터페이스의 MAC Address 

address 2는 무선 네트워크에서 프레임을 전송하는 인터페이스의 MAC Address 

address 3은 데이터 부분에 페이로드를 처리하는 라우터의 MAC Address 


AP (Access Point)

호스트와 AP는 무선으로 연결되어 있지만 AP와 라우터는 유선으로 연결되어 있다. 무선은 CSMA/CA 연결되어 있지만 유선쪽은 CSMA/CD로 연결되어 있다. wifi frame을 전송하고, 이후에 이더넷 프레임이 전송한다.


정리 )

  • Wifi 의 개략적인 내용 설명

  • passive scanning 이란

  • CSMA/CA (Collision Avoidance) 설명

  • CSMA/CA 에서 ACK 는 무슨 역할을 수행하는가

  • RTS-CTS 란 무엇인가

  • Wifi 에서 사용하는 프레임 설명


Posted by doubler
,