cloudwithbass

[Network] MAC, ARP, VLAN에 대해 알아보자 본문

Network

[Network] MAC, ARP, VLAN에 대해 알아보자

cwb111 2025. 2. 9. 20:15

목차

     
    최근에 네트워크를 이해하는 것이 중요함을 느끼고 있습니다.
    low level network라고 하면 내용이 방대하지만, 기초부터 차근차근 알아가보려 합니다.
    그 시작은 이번 포스팅에서 다룰 MAC, ARP, VLAN입니다.
     
     



    MAC은 OSI 2계층에서 사용되고, IP는 OSI 3계층에서 사용한다는 말을 들어봤을 것입니다.
    이 말은 즉 IP는 네트워크 대역을 찾는 데 사용되며, MAC 주소는 그 네트워크 대역 내의 정확한 위치를 식별하는 데 사용된다는 의미입니다.
     
    우선 이런 느낌으로 이해하면 됩니다.
    이 그림에 대한 내용은 이 포스팅에서 점차 설명하겠습니다.

     
     

    1. Mac address

    • MAC address는 Layer 2에서 통신하기 위한 네트워크 인터페이스의 고유 식별자입니다.
      • 주로 NIC에 할당되며, 가상 네트워크의 경우 소프트웨어에 할당되기도 합니다.
      • MAC address는 XX:XX:XX:XX:XX:XX 꼴의 16진수로 표현됩니다.
      • (참고: IP 또한 NIC에 할당됩니다.)
    • L2 스위치는 동일한 네트워크(LAN) 내에서 MAC 주소를 기반으로 프레임을 전달합니다.
      • 위 그림의 경우, 10.0.1.0/24와 10.0.2.0/24가 LAN에 해당합니다. 
    • 따라서, L2에서 정확한 위치로 데이터를 전송하기 위해 MAC 주소가 필요합니다.
      • OSI 7 Layer 모델에서는 통신 시 데이터 캡슐화와 역캡슐화 과정을 거칩니다.
      • 따라서 대부분의 네트워크 환경에서 L2 통신이 필요합니다.

     


     

    위 내용을 통해 데이터 통신을 위해 MAC 주소가 필요하다는 사실을 확인했습니다.
    그러면 목적지의 MAC 주소는 어떻게 알아낼 수 있을까요?

     

    2. ARP

    • MAC 주소를 알아내기 위해서 ARP 프로토콜을 사용합니다
    • ARP 프로토콜을 사용하면 IP를 기반으로 MAC 주소를 알아낼 수 있습니다.
    • ARP는, LAN 내의 모든 호스트에게 브로드캐스트 요청을 보냅니다.
      • 목적지 IP를 이미 알고 있으므로, 이 IP를 가진 호스트만이 MAC 주소를 응답합니다.

     
    예를 들어 아래 그림을 다시 보겠습니다.
    10.0.1.0/24의 PC 1이 10.0.2.0/24의 PC2로 데이터를 전송하는 상황입니다.

    1. PC 1은, 목적지 IP가 자신의 네트워크 대역과 다름을 인지합니다.
      (참고로, DNS 질의 등을 통해 PC2의 IP를 알아냅니다.)
    2. 따라서 PC 1은 자신의 LAN인 10.0.1.0/24에 브로드캐스트로 Router의 MAC 주소를 반환 받습니다. (ARP)
    3. Router는 이제 10.0.2.0/24 대역에 브로드캐스트 요청을 통해 PC2의 Mac 주소를 반환 받습니다. (ARP)
    4. 이제 Router는 목적지의 IP와 Mac을 알았습니다. 이 내용이 담긴 데이터를 해당 대역의 케이블로 데이터를 내보냅니다.
    5. 이 케이블은 Switch로 이어지며, Switch는 MAC을 기반으로 PC2에 데이터를 포워딩합니다.

    굳이 Switch를 거치는 이유는 라우터의 부하 분산과 포트 확장의 목적 때문입니다.
     
    여기서 궁금증이 생깁니다.

    • 게이트웨이(라우터)는 서로 다른 네트워크들의 인터페이스이기 때문에 아주 많은 네트워크 장치가 연결되어 있을 것입니다.
    • 그렇다면 이 게이트웨이에서 브로드캐스트 요청을 실행 시 당연히 과부하가 오겠죠. 이 문제를 어떻게 해결할까요?
    • ARP Cache 등의 많은 대비책들이 있지만, 그중 하나는 VLAN입니다.

     


    3. VLAN (Virtual LAN)

    이름에서 유추할 수 있듯, VLAN은 가상의 LAN을 형성하는 기술입니다.
    위키 백과에서는 VLAN을 이렇게 설명합니다.

    컴퓨터 네트워크에서 여러 개의 구별되는 브로드캐스트 도메인을 만들기 위해 단일 2계층 네트워크를 분할할 수 있는데, ...

     

    • 여기서 브로드캐스트 도메인이란 브로드캐스트가 닿는 범위를 말합니다.
    • 즉, VLAN을 사용해 브로드캐스트를 요청할 수 있는 범위를 제한할 수 있습니다.
    • 따라서 게이트웨이(라우터 or L3 스위치)의 과부하 문제가 해결됩니다.
    • 라우터에 PC만 연결되는 것은 아니지만.. 아래 그림과 같은 느낌입니다.
      평소라면 라우터가 브로드캐스트 요청 시 6개의 요청을 보내야 하지만, 아래 그림과 같이 구성할 경우, 각 VLAN 별로 2개의 요청만 보내도 됩니다.

     




     

    VLAN의 원리

    저는 이 VLAN을 보고 두 가지 궁금증이 생겼습니다.
     

    1. VLAN을 어떻게 구현할까요?

    저는 실제로 서버 스위치를 본 적도, 다뤄본 적도 없어서 확실치 않지만
    Cisco의 문서들을 참고하면 다음과 같은 순서로 구현할 수 있다고 설명합니다. 

    1. CLI 액세스 공식 문서 문서에 따라 케이블을 이용하여 스위치와 pc를 연결 후 PUTTY로 CLI 접근
    2. VLAN 포트 구성 문서  문서에 따라 VLAN 구성

     

    2. 물리 장비는 VLAN을 어떻게 구분하는 걸까요?

    저보다 훨씬 설명을 잘해주신 블로그를 참조했습니다.
     
    이 질문을 해결하기 위해서 Trunk Port를 이해해야 합니다.
     

    Trunk 포트

    여러 VLAN들의 트래픽을 하나의 포트를 통해 이동시킬 수 있는 포트입니다.
    (참고: 만약 하나의 VLAN만을 사용하는 경우 Access Port라고 합니다.)
    아래 사진처럼 Trunk 포트 적용 이전에는 VLAN의 개수만큼 포트가 추가로 필요했지만, Trunk 포트 사용 시 하나의 포트만으로도 여러 VLAN의 트래픽을 전송할 수 있습니다.

    Trunk Port 사용 전/후

     
    만약 Trunk Port를 사용할 경우, 하나의 포트만으로 여러 VLAN을 구분해야 합니다.
    또한 OSI Layer 2에선 IP를 확인할 수 없으므로, 프레임 수준에서 VLAN을 구분해야 합니다.
    이 때 IEEE 802.1Q 표준을 사용합니다.
     
    IEEE 802.1Q는 하나의 이더넷 네트워크에서 가상 랜(VLAN)을 지원하는 네트워크 표준입니다.

    출처 https://ko.wikipedia.org/wiki/IEEE_802.1Q

     
    사진을 보면 이더넷 프레임(상단)에 802.1Q Header라는 헤더를 삽입합니다(하단).
    이 중 12비트의 VID 필드를 통해 VLAN을 구분할 수 있습니다.
    Access Port의 경우 대부분 802.1Q Header를 사용하지 않지만, 항상 그런 것은 아닙니다.
     


    많은 자료를 찾아가며 정리한 내용이지만 혹시 잘못된 내용이 있을 경우 댓글로 지적 부탁드립니다.
    감사합니다!

    'Network' 카테고리의 다른 글

    [Network] 스위치와 라우터  (6) 2024.10.20
    [Network] HTTP 통신  (8) 2024.10.19
    [Network] TCP/IP 소켓 통신과 Docker Socket  (4) 2024.10.18