링크 계층 : 무선 영역

    이 글은 한양대 이석복 교수님의 강의를 복습하며 작성한 글입니다. 

     

    무선 영역의 MAC 프로토콜

    • 유선 Link 계층은 한 케이블이라는 Medium을 공유하면서 Collision이 발생한다. 무선 Link 계층도 공기라는 같은 Medium을 이용해서 값이 전파되기 때문에 Collision이 발생한다. 

     

    무선 네트워크의 종류

    • Wireless 네트워크 (무선 네트워크)
      • 무선 네트워크는 선이 없는 네트워크를 의미한다. 무선 네트워크는 이동을 의미하지는 않기 때문에 선 없이 네트워크 환경에 연결된 것으로 이해할 수 있다. 
      • 한 강의실에서 노트북을 계속 사용하는 것을 의미한다. 
    • Mobility 네트워크 (이동 네트워크)
      • 이동 네트워크는 AP 혹은 서브넷이 바뀌는 것을 의미한다. 가장 단적인 예로 스마트폰이 있다. 이동 시, AP 혹은 네트워크가 계속 바뀌게 된다. 
    • 무선 영역은 브로드 캐스팅으로 데이터를 전송한다.

     

    무선 네트워크의 구성요소

    • AP, Base Station : 무선 링크 계층의 디바이스
    • 노트북, 스마트폰 : 호스트. 이 호스트들은 AP / Base Station으로 연결됨. 
    • 무선 인터넷은 호스트에서 어떻게 게이트웨이 라우터로 전달될지, 한 Hop 이동을 의미한다. 

     

    무선 네트워크의 특성

    • 무선 네트워크는 접속 거리를 유지하면서, 점점 데이터 전송률을 올리고 있음. 

     

    무선 네트워크 분류

    • Single Hop / Multi Hop + 인프라가 있는지 없는지로 분류가 된다.
    • WIFI는 Single Hop + 인프라가 존재한다. 여기서 이야기하는 인프라는 AP / BaseStation을 의미한다. 

     

     

    무선 링크의 특성

    • 신호 세기의 감소
      • 유선 링크 계층은 케이블을 통해 신호가 보호되기 때문에 신호 세기가 거의 일정하다. 무선 링크 계층은 보호를 받지 않기 때문에 여러 노이즈들에 의해 신호 크기가 지수적으로 감소한다. (호수에 돌 던졌을 때 파장)
    • 다양한 방향으로 전파
      • 와이파이는 공기를 타고 다양한 방향으로 전파한다. 
    • 위 성질들 때문에 무선 네트워크는 난이도가 어렵다. 

     

    무선 링크 계층 문제 → 신호 크기의 감소

    • 무선 계층은 신호 크기가 지수적으로 감소한다는 특성을 가진다. 그리고 이 특성은 두 가지 문제를 야기한다.
    • Hidden Terminal
      • A,C가 존재할 때, 서로 전송 반경이 닿지 않는 곳에서 서로에게 메세지를 동시에 전달한다고 가정한다.
      • 이 때, 메세지는 각각에게 전달되지 않지만 중간 어디쯤에서 만나게 된다. 즉, 충돌이 일어난다. 
      • 전송 반경이 닿지 않는 곳에서 동시에 서로 말해서 충돌을 인지하지 못하는 문제
    • 신호 감쇄
      • 신호는 지수적으로 감쇄하기 때문에 A, C가 서로에게 동시에 말한다면 A는 C가 말한 것을 듣지 못한다. 왜냐하면 C의 신호가 A에게 왔을 때는 지수적으로 감쇄해서 들리지 않는 수준이다. 거기에 A의 신호가 너무 크기 때문에 A는 C와 충돌한 것을 인식하지 못한다. 
    • 위 문제로 인해 유선 Link 계층에서 사용하던 CSMA/CD를 사용할 수 없음.

     

     

     

    WIFI

    • 와이파이는 무선 링크 계층이지만, 유선 링크 특성에 가깝게 특성을 구현해보자는 의미의 기술임. 
    • 와이파이 구조
      • 와이파이 내부에는 AP가 존재함. AP는 이더넷 케이블이 꽂혀서 스위치 / 라우터 등에 연결되어있음.

     

    와이파이는 어떻게 AP의 존재를 알릴까?

    • Passive 스캐닝
      • AP는 매 초마다 자기 자신의 정보를 주기적으로 BroadCasting 한다. 이 때, AP는 링크 계층의 장비이기 때문에 AP 자신의 MAC 주소를 모든 사람들에게 알리는 역할을 한다. 
      • 호스트는 AP가 자동으로 알려주는 정보를 받아서 AP의 정보를 계속 인지한다. 

     

     

    • WIFI는 서로 충돌을 감지 하지 못한다.
      • 와이파이는 신호 감쇄 + Hidden Terminal 문제로 각 메세지의 충돌이 일어났는지를 알 수 없다. 이런 이유로 무선 링크 계층에서 CSMA/CD를 사용할 수 없다. 스스로 데이터 전송이 정상적으로 전달되었는지 알 수 없기 때문에 데이터를 받는 쪽에서 ACK를 해줘야한다. 이 때, ACK는 TCP ACK와 다르다. 
      • TCP ACK는 End To End를 의미하고, 무선 ACK는 한 Hop의 ACK를 의미함. 
      • 유선 링크 계층에서는 나에게 다른 메세지가 전달되기 때문에 메세지의 충돌이 일어난 것을 알 수 있었다. 나에게 다른 메세지가 전달되지 않으면 정상적으로 메세지가 전달된 것이기 때문에 메세지 수신 쪽에서 ACK가 필요없었다. 

     

     

    무선 링크 계층의 프로토콜 → CSMA/CA

    • CSMA/CA (Collision Avoidance)
    • CSMA/CA는 다음과 같이 동작한다.
      1. 보낼 데이터가 있는 경우, 현재 말하고 있는 사람이 있는지 확인한다. 없는 경우 DIFS 시간동안 기다린 후, 이 때도 채널이 조용하면 데이터를 보낸다. 
      2. 채널이 바쁜 경우 DIFS + Random Back Off만큼 기다린 경우 채널이 조용할 경우에 메세지를 보낸다. DIFS만큼 기다리는 것은 Random Back Off를 기다린 사람이 여러 명 있을 수 있으니, 그 사람들 중 하나가 먼저 말하는 경우를 고려해서다.
      3. 데이터를 받은 쪽은 SIFS만큼 기다린 후 ACK한다. 이 때, SIFS는 DIFS보다 짧다. 이유는 ACK가 더 중요하기 때문이다.
      4. Sender는 ACK를 받으면 데이터 정상 전송을 확인하고, 다음 데이터를 보낼 수 있게 된다. 반면 ACK를 받지 못하면 재전송 준비를 한다. 

     

    CSMA/CA + RTS-CTS

    • CSMA/CA는 한 가지 문제점이 있는데, 충돌이 발생했을 때 비용이 크게 발생한다는 점이다. 왜냐하면 CSMA/CA는 일단 충돌이 일어나더라도 데이터를 다 쏟아붓는다. 그리고 다시 한번 데이터를 재전송해야한다. 반면 CSMA/CD는 충돌 발생 확인 시, 바로 말하는 것을 멈춘다. 따라서 피해의 규모가 다르다. 
    • CSMA/CA 자체로 정상적으로 ACK를 받을 때까지 재전송하기 때문에 언젠가는 전송이 되지만, CSMA/CA의 재전송 리스크는 헷지가 필요함.
    • RTS - CTS 사용
      • 무선 호스트들은 각각 RTS를 보내고, CTS를 받으면 그 때 데이터를 보낸다. 
      • 충돌 시 잃어버리는 데이터가 많기 때문에 먼저 작은 더미 데이터를 보내서 약간의 약속을 한 후에 데이터를 안전하게 보내는 것이다. 
      • RTS는 얼마만큼의 시간 동안, 어느 정도의 데이터를 보내겠다는 정보가 있으며, CTS는 이 값을 다시 한번 모든 호스트들에게 브로드 캐스팅으로 알려준다.
    • 위 예시
      1. A,B는 CSMA를 해서 채널이 조용한 것을 알고 각각 A → AP / B → AP로 RTS를 브로드 캐스팅 했다.
      2. 이 때, A / B의 RTS는 충돌이 발생하기 때문에 AP에 쓰레기 값이 전달되서 버려지게 된다. 
      3. AP는 쓰레기 값에 응답하지 않아 A/B는 CTS를 받지 못한다. 따라서 RANDOM BACK OFF 한 다음에 다시 RTS를 보낸다.
      4. A가 먼저 RTS를 보냈고, AP는 정상적으로 값을 받아 CTS(A)를 브로드 캐스팅한다. RTS / CTS에는 얼마 간의 정보를 얼마 동안 사용할지가 정해져 있어서 브로드 캐스팅을 받는 호스트들이 정보를 알고 있다. 따라서 B는 얼마간 RTS를 보내지 않는다. 

     

    RST - CST 심화 과정

    1. A → AP로 RST, AP가 CST를 브로드 캐스팅한다.
    2. 이 때 B → AP로 RST하는 경우, AP의 CST + B의 RST가 섞여서 CST 신호가 왜곡된다. 따라서 B는 CST를 듣지 못한다.
    3. 반면 A는 운좋게 CST를 듣고, AP에게 값을 전송한다.
    4. CST를 듣지 못한 B는 다시 한번 RST를 발송한다. 이 때 B의 RST와 A의 데이터가 섞이게 되면서, AP에게는 A의 데이터와 B의 RST가 모두 전송되지 않게 된다.
    5. 따라서 AP는 A에게 ACK하지 않는다. A는 메세지가 전송되지 않은 것을 인식하고, 다시 RST 경쟁에 참여한다. 

     

    RST - CST 심화과정2 

    • 무선 랜은 RST 경쟁 상태에 재돌입한다. 그런데 무한정 프레임을 재전송할 수 없기 때문에 WIFI에서는 동일한 프레임의 발송을 7회로 제한한다.
    • 7회동안 발송되지 못한 프레임은 다시 재발송 하지 않고, 그 다음 프레임을 발송한다. 발송되지 못한 프레임은 TCP 타이머가 아웃되면서 TCP 단부터 다시 데이터가 내려와서 재발송된다. 

     

    와이파이 프레임 구성

    • AP는 링크 계층의 장비다. 따라서 네트워크 계층의 IP 같은 용어를 알 수 없다. 따라서 AP는 MAC 주소를 변경시키는 역할만한다. 
    • AP는 한쪽은 와이파이 프로토콜을 사용하고, 한쪽은 이더넷 프로토콜을 사용한다. 
    • AP는 유선 링크 계층의 Switch와 동일한 역할을 한다. 무선 호스트 관점에서는 AP의 존재를 알지만, 라우터는 AP의 존재를 모른다. 
    • 와이파이 프레임의 주소 헤더는 3개임.
      • 주소1 : 이 프레임을 받는 무선 네트워크 MAC
      • 주소2 : 이 프레임을 보내는 무선 네트워크 MAC
      • 주소3 : AP와 근접한 라우터 MAC
    • AP는 와이파이 프레임을 이더넷 프레임으로 바꿔서 라우터에 프레임을 전송한다. 
      • 출발 주소 : 호스트 MAC
      • 도착 주소 : 라우터 MAC

     

    왜 와이파이 주소는 3개여야 할까?

    • CASE1 : 주소가 HOST / AP인 경우.
      • AP는 호스트가 보낸 신호를 받는다. AP는 링크 계층 디바이스기 때문에 IP 패킷을 꺼내도 이해할 수 없다. 따라서 라우터로 가는 방법을 알 수 없다.
    • CASE2 : 주소가 HOST / MAC인 경우
      • 라우터에 무선 프레임을 넣게 되면, 라우터 입장에서는 전혀 모르는 값이 들어온다. 따라서 데이터 전송이 정상적으로 이루어지지 않는다. 
    • 따라서 와이파이 프레임은 3개의 주소를 헤더에 포함한다.

     

     

    라우터에서 무선 호스트로 값이 돌아오는 경우

    • 라우터는 프레임을 만들고 AP로 전송해준다. 이 때 프레임의 출발 주소는 라우터 MAC 주소, 도착 주소는 HOST의 MAC 주소다. 왜냐하면 라우터에게는 AP라는 존재는 없기 때문이다. 
    • 라우터에서 보낸 프레임은 AP에게 온다. AP는 이더넷 프레임을 와이파이 프레임으로 변경한 후 브로드 캐스팅한다. 이 때, 받는 사람은 HOST MAC / 보낸 사람은 AP MAC / 게이트웨이 라우터는 라우터 MAC이 된다. 

     

    무선 네트워크에서 DHCP + ARP + 라우팅 살펴보기

    AP MAC 주소는 AP가 스스로 브로드 캐스팅을 하기 때문에 AP 근처의 모든 호스트는 AP의 MAC 주소를 알 수 있다. 그렇지만 라우터의 MAC 주소는 알 수가 없다. 라우터의 MAC 주소는 어떻게 알 수 있을까? 다음과 같은 형식으로 라우터의 MAC 주소를 알아올 수 있다. 

     

    1. 사용자는 노트북을 연결하면, AP의 주소는 자동으로 알게 된다. 그렇지만 아직 내 IP 주소를 알지 못한다.
    2. 내 IP 주소를 알기 위해서는 게이트웨이 라우터로부터 DHCP 서비스를 받아야한다. 
    3. 나는 DCHP 서버에게 DHCP Request를 보낸다. 이 때, 와이파이 프레임을 만든다. 출발지는 HOST MAC, 도착지는 AP MAC, 게이트웨이 라우터는 브로드 캐스팅으로 보낸다. 왜냐하면 게이트웨이 라우터의 위치를 모르기 때문이다. IP 패킷은 출발지는 비워두고(아직 모름), 도착지는 255.255.255.255로 브로드 캐스팅한다. 
    4. AP는 와이파이 프레임을 받고 이더넷 프레임으로 바꿔줘야한다. 링크 계층 디바이스이기 때문에 IP 패킷은 건드리지 않는다. 이더넷 프레임의 출발 주소는 호스트 MAC, 도착 주소는 브로드 캐스트로 한다. 이후, 이더넷 채널로 브로드캐스팅 한다. 
    5. 채널의 각 노드는 브로드 캐스팅 프레임을 받는다. TCP + IP를 까본 후, PORT 정보를 확인한다. 그리고 본인인 경우에 DHCP 응답을 한다. 이 때, DHCP PORT를 열어둔 서버만 응답한다. 
    6. DHCP 응답을 할 때는 브로드 캐스팅을 한다. 따라서 이더넷 프레임은 출발은 게이트웨이 라우터 MAC, 도착은 브로드 캐스팅이 된다. 패킷 프레임의 출발 주소는 게이트웨이 라우터 IP이고, 도착 주소는 브로드 캐스팅 한다. 이 때 호스트 IP 값이 정해져있지 않기 때문이다. 
    7. DHCP 과정을 통해 IP를 알게 된다.(엄밀히 말하면 MAC 주소도 저장됨). ARP Table을 참조해서 게이트웨이 라우터의 주소를 확인해야한다.
    8. 초기에는 ARP Table이 없기 때문에 ARP 쿼리를 보낸다. 와이파이 프레임을 만드는데 출발은 HOST, 도착은 AP, 게이트웨이 라우터는 브로드 캐스트를 한다. 이 때, IP 패킷은 출발은 HOST 도착은 게이트웨이 라우터로 한다.
    9. 게이트웨이 라우터는 이 값을 받고 응답을 해준다. 이 때, 값을 알고 있기 때문에 유니캐스트로 돌아온다. 이더넷 프레임에서 출발은 게이트웨이 라우터 MAC, 도착은 HOST MAC이 된다. 패킷은 게이트웨이 라우터 IP, 도착은 HOST IP가 된다. 
    10. 와이파이 프레임에서 받을 주소는 HOST MAC, 보내는 주소는 AP MAC, 라우터 주소는 게이트웨이 라우터 MAC이 된다. 
    11. 참고로 DHCP 클라이언트와 서버는 각각 동일한 포트를 열고 있다. 따라서 DHCP 응답에 대한 구분을 하기 위해서, DCHP 클라이언트는 처음에 보낼 때 Transaction ID를 Application 계층에 심어서 보낸다고 한다. DHCP 응답을 구분할 때는 클라이언트가 받은 패킷을 까서 Application 계층에서 Tx ID를 보고 구분한다고 한다. 

     

    DHCP의 사이드 베네핏

    DHCP를 하는 경우, 게이트웨이 라우터는 DHCP OFFER를 할 때 이미 MAC 주소가 전달이 된다. 실제 와이파이 프레임의 세번째 주소에 같이 적혀서 호스트에게 전달되기 때문에 호스트는 ARP를 하지 않고도 게이트웨이 라우터의 MAC 주소를 자연스럽게 알게 된다. 

     

     

    이동 네트워크

    이동을 하면 내가 연결된 AP는 바뀐다. 연결된 AP가 바뀐다는 것은 연결이 끊어진다는 것을 의미하는 것일까? 

    1. 연결은 TCP 커넥션을 의미한다. TCP 커넥션은 출발 / 도착지의 IP + PORT로 유일하게 결정된다. 이중에 하나의 값이라도 바뀌는 경우 TCP 커넥션이 끊어지는 것을 의미한다. AP는 변하지만, 실제로 AP는 무선 네트워크에서 스위치와 같은 역할을 한다. 실제 IP는 게이트웨이 라우터가 DHCP 서비스를 통해서 전달해주기 때문이다. 따라서 AP가 변한다고 해서 HOST의 IP / PORT가 변경되지는 않는다.
    2. 그렇지만 AP가 변했기 때문에 게이트웨이 라우터에서 응답이 오는 경로는 변경이 필요하다. AP나 스위치는 스위치 테이블을 가지고 있고, 이 스위치 테이블에서 MAC 주소에 해당되는 PORT를 알려주면서 값이 전달된다. 어떻게 하면 이 노트북이 A라는 AP를 쓰다가 B라는 AP라는 것을 쓰고 있다고 알려줄 수 있을까?
    3. 호스트는 자신의 AP를 바꾸게 되는 경우, 게이트웨이 라우터에게 더미 메세지를 쏴준다. 이 더미 메세지는 출발지는 호스트 MAC, 도착지는 AP2, 그리고 게이트웨이 라우터 MAC이 들어가게 된다. 그리고 AP2는 이걸 이더넷 프레임으로 바꿔서 스위치를 통해서 올려주는데, 스위치는 이 때 셀프러닝을 하면서 호스트가 AP1 → AP2로 자리 이동을 한 것을 인지한다. 

    'CS > 네트워크' 카테고리의 다른 글

    Response 객체 쿠키  (0) 2022.05.29
    멀티미디어 네트워크  (0) 2022.05.15
    HTTP API 설계 예시  (0) 2021.12.07
    HTTP 메서드 활용  (0) 2021.12.06
    HTTP 상태 코드 정리  (0) 2021.12.04

    댓글

    Designed by JB FACTORY