1. 라이브러리
  2. 라우팅과 네트워크
  3. 로컬 네트워크

업데이트됨 1개월 전

네트워크에 도착한 모든 패킷은 마지막 과제에 직면합니다: 목적지 기기를 실제로 찾아내는 것입니다. IP 주소는 여기까지 안내했습니다—올바른 네트워크, 올바른 건물까지. 하지만 이제 특정 기기에 연결된 특정 스위치의 특정 포트에 도달해야 합니다. 그것이 바로 MAC 주소가 하는 일입니다. MAC 주소는 배달의 마지막 단계입니다.

IP 주소는 도로 주소와 같습니다—어디에 배달할지 알려줍니다. MAC 주소는 수신인의 얼굴과 같습니다—목적지에 도달했을 때 올바른 사람을 찾았다는 것을 알 수 있게 해줍니다.

형식

MAC 주소는 48비트 숫자로, 일반적으로 16진수 두 자리씩 여섯 쌍으로 표기합니다:

00:1A:2B:3C:4D:5E

하이픈(00-1A-2B-3C-4D-5E)이나 구분자 없이 표기하는 경우도 있습니다. 형식은 달라도 의미는 같습니다: 네트워크 하드웨어 장치의 고유 식별자입니다.

48비트는 약 281조 개의 주소를 제공합니다. 1970년대에 이더넷이 발명되었을 때는 사실상 무한한 것처럼 보였습니다. 오늘날에도 여전히 충분하지만, IEEE는 향후 사용을 위해 64비트 주소(EUI-64)를 정의해두었습니다.

구조가 담고 있는 의미

MAC 주소는 무작위가 아닙니다. 구조가 있습니다:

앞 세 옥텟(24비트): OUI(Organizationally Unique Identifier, 조직 고유 식별자)로, IEEE가 제조사에 부여합니다. 인텔은 자신의 OUI를 가지고 있습니다. 애플은 다른 OUI를 가지고 있습니다. 어떤 MAC 주소 접두사든 조회하면 해당 하드웨어를 만든 회사를 알 수 있습니다.

뒤 세 옥텟(24비트): 제조사가 개별 기기에 부여합니다. 생산 라인에서 출고되는 모든 네트워크 인터페이스는 고유한 조합을 부여받습니다.

따라서 00:1A:2B:3C:4D:5E를 보면, 앞 절반은 제조사를 알려주고 뒤 절반은 특정 기기를 식별합니다. 회사 이름이 내장된 일련번호라고 생각하면 됩니다.

하드웨어에 새겨진 주소 (꼭 그렇지만은 않지만)

MAC 주소는 공장에서 네트워크 인터페이스 하드웨어에 기록되기 때문에 "고정 주소(burned-in address)"라고 불립니다. 이 용어는 영속성을 암시합니다—이 주소는 이 하드웨어를 영원히 따라다닐 것이라고요.

하지만 반드시 그런 것은 아닙니다. 대부분의 운영체제는 네트워크에 제공하는 MAC 주소를 변경할 수 있게 해줍니다. 이를 "스푸핑(spoofing)"이라고 하며, 30초면 됩니다. 하드웨어에 원래 새겨진 주소는 여전히 존재하지만, 네트워크는 여러분이 알려주는 것을 그대로 봅니다.

이것은 MAC 주소가 실제로 무엇을 제공하는지 이해하는 데 중요합니다: 신원(identity), 보안이 아닙니다. 하드웨어를 식별하지만, 인증하지는 않습니다.

실제 작동 방식

MAC 주소는 레이어 2—데이터 링크 계층에서 작동합니다. 같은 로컬 네트워크에 있는 기기 간 통신을 가능하게 합니다:

  1. 컴퓨터가 로컬 네트워크의 다른 기기로 데이터를 보내려 합니다
  2. 목적지 MAC 주소, 출발지 MAC 주소, 실제 데이터를 담은 이더넷 프레임을 구성합니다
  3. 스위치가 프레임을 수신하고 MAC 주소 테이블을 확인한 다음, 해당 목적지 MAC 주소가 있는 포트로만 프레임을 전달합니다
  4. 목적지 기기가 프레임을 수신하고 처리합니다

스위치는 트래픽을 관찰하면서 MAC 주소를 학습합니다. 포트 5에서 출발지 MAC이 AA:BB:CC:DD:EE:FF인 프레임이 도착하면, 스위치는 기억합니다: "저 MAC 주소는 포트 5를 통해 도달할 수 있다." 시간이 지나면서 완전한 지도를 구축합니다.

여기서 중요한 한계가 있습니다: MAC 주소는 로컬에서만 유효합니다. 패킷이 인터넷을 가로질러 라우터를 하나씩 거치면서 이동할 때, MAC 주소는 매 홉마다 바뀝니다. 각 라우터는 기존 이더넷 프레임을 벗겨내고, 자신의 출발지 MAC과 다음 홉의 목적지 MAC을 담은 새 프레임으로 패킷을 감쌉니다. IP 주소는 종단 간 동일하게 유지됩니다. MAC 주소는 각 네트워크 세그먼트 안에서만 의미를 가집니다.

유니캐스트, 멀티캐스트, 브로드캐스트

유니캐스트 주소는 개별 기기를 식별합니다. 접하게 되는 대부분의 MAC 주소는 유니캐스트입니다—한 명의 발신자, 한 명의 수신자.

멀티캐스트 주소는 그룹을 나타냅니다. 멀티캐스트 MAC으로 전송된 트래픽은 해당 그룹에 가입한 모든 기기에 도달합니다. 첫 번째 옥텟의 첫 번째 비트가 1로 설정되어 "이것은 멀티캐스트"임을 알립니다.

브로드캐스트는 특별한 주소 FF:FF:FF:FF:FF:FF로—모든 비트가 1입니다. 이 주소로 전송된 트래픽은 로컬 네트워크의 모든 기기에 전달됩니다. 로컬 네트워크 전체에 소리치는 것과 같습니다.

ARP: 두 세계를 잇는 다리

애플리케이션은 IP 주소를 압니다. 네트워크 하드웨어는 MAC 주소를 압니다. 둘 사이를 변환해줄 무언가가 필요합니다. 그것이 바로 ARP—Address Resolution Protocol(주소 확인 프로토콜)입니다.

컴퓨터가 로컬 네트워크에서 192.168.1.50에 도달해야 하는데 MAC 주소를 모를 때, ARP 요청을 브로드캐스트합니다: "192.168.1.50을 가진 기기가 누구입니까?"

해당 IP를 가진 기기가 응답합니다: "저입니다. 제 MAC 주소는 AA:BB:CC:DD:EE:FF입니다."

컴퓨터는 이 매핑을 캐시하고 올바른 목적지 MAC으로 프레임을 구성합니다. 더 넓은 인터넷으로 향하는 트래픽의 경우, ARP를 사용해 게이트웨이의 MAC 주소를 찾은 다음 모든 아웃바운드 프레임을 그곳으로 보내며, 이후 라우팅은 게이트웨이에 맡깁니다.

개인정보 보호와 보안

MAC 주소는 개인정보 보호 문제와 보안에 대한 착각을 동시에 만들어냅니다.

개인정보 보호 문제: MAC 주소는 고유하며 (보통) 변경되지 않습니다. 스마트폰의 Wi-Fi가 켜져 있으면, 알려진 네트워크를 찾는 프로브 요청을 브로드캐스트합니다—이 프로브에는 여러분의 MAC 주소가 포함됩니다. 소매업체, 공항 등은 이를 추적해 동선을 파악할 수 있습니다. 현대 기기들은 이제 **MAC 무작위화(MAC randomization)**를 사용해 프로브에 무작위 가짜 주소를 전송함으로써 추적을 방지합니다.

보안 착각: MAC 필터링은 안전해 보입니다—승인된 MAC 주소의 연결만 허용하는 것입니다. 하지만 MAC 주소는 몇 초 만에 스푸핑될 수 있으므로, 기껏해야 일반적인 침입자를 막는 정도에 불과합니다. 벽이 아니라 과속 방지턱입니다.

ARP 공격: ARP에는 인증이 없기 때문에, 공격자는 게이트웨이인 척 거짓 ARP 응답을 보낼 수 있습니다. 피해자는 실제 게이트웨이 대신 공격자의 MAC 주소로 트래픽을 보내게 됩니다. 이것이 ARP 스푸핑이며, 보안 네트워크에서 추가적인 보호 조치를 사용하는 이유입니다.

무선 네트워크의 특성

무선 네트워크에는 추가 용어가 있습니다:

BSSID(Basic Service Set Identifier)는 액세스 포인트의 MAC 주소입니다. 같은 네트워크 이름을 브로드캐스트하더라도 기기가 서로 다른 AP를 구별하는 기준입니다.

SSID는 사람이 읽을 수 있는 네트워크 이름("CoffeeShop_WiFi")입니다. BSSID는 그 이면에 있는 실제 하드웨어 식별자입니다.

현대 스마트폰은 스캔할 때뿐만 아니라 무선 네트워크에 실제로 연결되었을 때도 MAC 주소를 무작위화합니다. 기기는 각 네트워크에 다른 MAC을 제시하여, 여러 장소에서 여러분의 존재를 연결 짓기 어렵게 만듭니다.

가상 MAC

모든 MAC 주소가 물리적 하드웨어에 대응하는 것은 아닙니다:

가상 머신은 가상 네트워크 인터페이스를 위한 MAC 주소가 필요합니다. 하이퍼바이저는 "로컬 관리(locally administered)" 주소용으로 지정된 특별한 범위에서 이를 할당합니다.

본딩 인터페이스(여러 물리적 NIC가 하나처럼 동작하는 것)는 네트워크에 하나의 가상 MAC을 제시합니다.

컨테이너, 가상 라우터, 소프트웨어 정의 네트워킹(SDN)은 모두 소프트웨어에만 존재하는 MAC 주소를 생성합니다. 추상화는 여전히 유효합니다: 이더넷에 참여하는 모든 인터페이스는 물리적이든 아니든 MAC 주소가 필요합니다.

MAC 주소 확인 방법

Windows: ipconfig /all — "물리적 주소(Physical Address)" 항목 확인

macOS/Linux: ifconfig 또는 ip link — "ether" 또는 "link/ether" 항목 확인

스위치: 벤더마다 명령어가 다릅니다. Cisco는 show mac address-table을 사용합니다. 출력 결과는 MAC 주소를 물리적 포트에 매핑합니다.

ARP 테이블: arp -a는 시스템이 로컬 IP 주소에 대해 학습한 MAC 주소를 보여줍니다.

MAC 주소에 대해 자주 묻는 질문

두 기기가 같은 MAC 주소를 가질 수 있나요?

그래서는 안 되지만, 실제로 발생하기도 합니다. 주소 재생성 없이 가상 머신을 복제하거나, 제조사 오류, 또는 의도적인 스푸핑이 중복을 만들 수 있습니다. 같은 네트워크에서 두 기기가 같은 MAC을 주장하면 혼란이 발생합니다—패킷이 무작위로 둘 중 하나에 도달하고, 연결이 끊어지며, 아무것도 안정적으로 작동하지 않습니다.

MAC 주소가 스푸핑될 수 있다면, 왜 사용하나요?

보안을 위한 것이 아니라 전달을 위한 것입니다. 스위치는 어떤 포트가 어떤 기기로 이어지는지 알기 위한 식별자가 필요합니다. MAC 주소가 그 역할을 합니다. 스푸핑될 수 있다는 사실은 인증에 신뢰할 수 없다는 것을 의미하지만, 이더넷이 작동하는 데는 필수적입니다.

IP 주소와 MAC 주소 모두 필요한 이유는 무엇인가요?

서로 다른 계층에서 서로 다른 문제를 해결합니다. IP 주소는 계층적이고 라우팅 가능합니다—어떤 네트워크에 있는지 나타내어 패킷이 인터넷을 가로질러 이동할 수 있게 합니다. MAC 주소는 평탄하고 로컬합니다—올바른 네트워크에 도달하면 배달할 특정 하드웨어를 식별합니다. 하나는 동네까지 안내하고, 다른 하나는 문 앞까지 안내합니다.

패킷이 인터넷을 가로질러 이동할 때 MAC 주소는 어떻게 되나요?

매 홉마다 바뀝니다. 라우터 A는 패킷을 수신하고 이더넷 프레임(출발지로 여러분의 MAC이 있는)을 벗겨낸 다음, 라우팅 테이블에서 다음 홉을 조회하고, 라우터 A의 MAC을 출발지로 라우터 B의 MAC을 목적지로 하는 새 프레임으로 패킷을 감쌉니다. 패킷이 목적지 네트워크에 도달할 때까지 모든 라우터에서 이 과정이 반복되며, 최종 MAC 주소는 실제 수신자의 것이 됩니다.

이 페이지가 도움이 되었나요?

😔
🤨
😃