MAC 주소의 구조

MAC 주소의 구조

MAC 주소의 구조

1. MAC 주소란?

정의

  • MAC (Media Access Control) 주소
  • 랜 카드(NIC)에 부여된 고유한 물리적 주소
  • 제조할 때 새겨지기 때문에 **물리 주소(Physical Address)**라고도 함
  • 전 세계에서 유일한 번호로 할당

MAC 주소의 특징

┌─────────────────────────────────────────────────────────────┐
│                    MAC 주소 특징                             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  • 48비트 (6바이트) 숫자로 구성                              │
│  • 전 세계적으로 유일한 값 (이론상)                           │
│  • 제조사에서 하드웨어에 기록 (ROM에 저장)                    │
│  • 데이터 링크 계층 (2계층)에서 사용                         │
│  • 같은 네트워크 내에서 장비 식별에 사용                      │
│                                                             │
└─────────────────────────────────────────────────────────────┘

2. MAC 주소 구조

48비트 구조

MAC 주소 구조:

  00 : 23 : AE : D9 : 7A : 9A
  └────────┬────────┘ └────────┬────────┘
       OUI (24비트)      일련번호 (24비트)
       제조사 식별코드      제조사가 부여

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│    00    :    23    :    AE    :    D9    :    7A    :    9A│
│  ┌─────┐   ┌─────┐   ┌─────┐   ┌─────┐   ┌─────┐   ┌─────┐│
│  │8비트│   │8비트│   │8비트│   │8비트│   │8비트│   │8비트││
│  └─────┘   └─────┘   └─────┘   └─────┘   └─────┘   └─────┘│
│                                                             │
│  ←──────── 24비트 ─────────→←──────── 24비트 ─────────→    │
│            OUI                     일련번호                 │
│     (Organizationally              (Network               │
│      Unique Identifier)            Interface Controller)  │
│                                                             │
└─────────────────────────────────────────────────────────────┘

총 48비트 = 6바이트 = 12자리 16진수

OUI (Organizationally Unique Identifier)

┌─────────────────────────────────────────────────────────────┐
│                         OUI                                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  • 앞쪽 24비트 (3바이트)                                     │
│  • 랜 카드를 만든 제조사 번호                                 │
│  • IEEE에서 제조사에 할당                                    │
│  • 약 1,677만 개의 조합 가능 (2^24)                          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

주요 제조사 OUI 목록

OUI제조사
00:00:0CCisco Systems
00:1A:2BAyecom Technology
00:50:56VMware
08:00:27Oracle VirtualBox
00:0C:29VMware
3C:5A:B4Google
DC:A6:32Raspberry Pi Foundation
00:1E:C9Dell
00:25:00Apple
48:2C:6AIntel
B8:27:EBRaspberry Pi (구형)

일련번호 (NIC)

┌─────────────────────────────────────────────────────────────┐
│                        일련번호                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  • 뒤쪽 24비트 (3바이트)                                     │
│  • 제조사가 랜 카드에 붙인 고유 번호                          │
│  • 제조사별로 중복 없이 관리                                  │
│  • 약 1,677만 개의 조합 가능 (2^24)                          │
│                                                             │
│  OUI당 1,677만 개 = 제조사당 최대 1,677만 개 랜카드 제조 가능 │
│  (OUI 추가 신청 가능)                                        │
│                                                             │
└─────────────────────────────────────────────────────────────┘

3. MAC 주소 표기 방식

다양한 표기법

같은 MAC 주소의 여러 표기 방식:

┌─────────────────────────────────────────────────────────────┐
│                      표기 방식                               │
├──────────────────────┬──────────────────────────────────────┤
│  콜론 구분 (Linux)    │  00:23:AE:D9:7A:9A                  │
├──────────────────────┼──────────────────────────────────────┤
│  하이픈 구분 (Windows)│  00-23-AE-D9-7A-9A                  │
├──────────────────────┼──────────────────────────────────────┤
│  점 구분 (Cisco)      │  0023.AED9.7A9A                     │
├──────────────────────┼──────────────────────────────────────┤
│  구분 없음           │  0023AED97A9A                        │
└──────────────────────┴──────────────────────────────────────┘

※ 대소문자 구분 없음 (00:23:ae = 00:23:AE)

2진수/16진수 변환

16진수 → 2진수 변환:

  0    0    :    2    3    :    A    E
  ↓    ↓         ↓    ↓         ↓    ↓
 0000 0000     0010 0011     1010 1110

각 16진수 한 자리 = 4비트 (니블)

예시:
┌──────┬─────────────┐
│16진수│   2진수     │
├──────┼─────────────┤
│  0   │   0000      │
│  1   │   0001      │
│  ...               │
│  9   │   1001      │
│  A   │   1010      │
│  B   │   1011      │
│  C   │   1100      │
│  D   │   1101      │
│  E   │   1110      │
│  F   │   1111      │
└──────┴─────────────┘

4. MAC 주소 종류

첫 번째 바이트의 비트 구조

첫 번째 바이트 (8비트):

  ┌───┬───┬───┬───┬───┬───┬───┬───┐
  │ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 │  비트 번호
  └───┴───┴───┴───┴───┴───┴───┴───┘
                              ↑   ↑
                              │   └── I/G 비트 (Individual/Group)
                              │       0 = 유니캐스트
                              │       1 = 멀티캐스트/브로드캐스트
                              │
                              └────── U/L 비트 (Universal/Local)
                                      0 = 전역 (제조사 할당)
                                      1 = 로컬 (관리자 설정)

MAC 주소 유형

┌─────────────────────────────────────────────────────────────┐
│                    MAC 주소 유형                             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  유니캐스트 (Unicast)                                        │
│  ─────────────────────                                      │
│  • I/G 비트 = 0                                             │
│  • 단일 장비를 지정                                          │
│  • 예: 00:23:AE:D9:7A:9A                                    │
│                                                             │
│  멀티캐스트 (Multicast)                                      │
│  ─────────────────────                                      │
│  • I/G 비트 = 1                                             │
│  • 특정 그룹을 지정                                          │
│  • 예: 01:00:5E:xx:xx:xx (IPv4 멀티캐스트)                   │
│       33:33:xx:xx:xx:xx (IPv6 멀티캐스트)                   │
│                                                             │
│  브로드캐스트 (Broadcast)                                    │
│  ─────────────────────                                      │
│  • 모든 비트가 1                                             │
│  • 같은 네트워크의 모든 장비                                  │
│  • FF:FF:FF:FF:FF:FF                                        │
│                                                             │
└─────────────────────────────────────────────────────────────┘

통신 방식 비교

유니캐스트:
──────────────────────────────────────────
                    ┌────┐
    [송신자] ───────→│수신│
                    └────┘
    1:1 통신


멀티캐스트:
──────────────────────────────────────────
                    ┌────┐
                ┌──→│그룹│
    [송신자] ───┼──→│멤버│
                └──→│    │
                    └────┘
    1:그룹 통신


브로드캐스트:
──────────────────────────────────────────
                    ┌────┐
                ┌──→│전체│
    [송신자] ───┼──→│장비│
                ├──→│    │
                └──→│    │
                    └────┘
    1:전체 통신

5. 이더넷 헤더와 트레일러

이더넷 프레임 구조

이더넷 프레임 상세 구조:

┌────────────────────────────────────────────────────────────────┐
│                       이더넷 프레임                              │
├────────┬────────────┬────────────┬──────┬────────────┬─────────┤
│프리앰블│  목적지    │   출발지   │ 유형 │   데이터   │  FCS    │
│ +SFD  │  MAC 주소  │  MAC 주소  │      │ (페이로드) │(트레일러)│
├────────┼────────────┼────────────┼──────┼────────────┼─────────┤
│8바이트 │  6바이트   │  6바이트   │2바이트│46~1500바이트│ 4바이트 │
└────────┴────────────┴────────────┴──────┴────────────┴─────────┘
         └────────────────────────────────┘
                   이더넷 헤더 (14바이트)

이더넷 헤더 상세

┌─────────────────────────────────────────────────────────────┐
│                      이더넷 헤더 (14바이트)                   │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌────────────────────────────────────────────────────────┐│
│  │  목적지 MAC 주소 (6바이트)                              ││
│  │  • 프레임을 받을 장비의 MAC 주소                        ││
│  │  • 예: AA:BB:CC:DD:EE:FF                               ││
│  └────────────────────────────────────────────────────────┘│
│                                                             │
│  ┌────────────────────────────────────────────────────────┐│
│  │  출발지 MAC 주소 (6바이트)                              ││
│  │  • 프레임을 보내는 장비의 MAC 주소                      ││
│  │  • 예: 11:22:33:44:55:66                               ││
│  └────────────────────────────────────────────────────────┘│
│                                                             │
│  ┌────────────────────────────────────────────────────────┐│
│  │  유형/이더타입 (2바이트)                                ││
│  │  • 상위 계층 프로토콜 식별                              ││
│  │  • 예: 0x0800 (IPv4), 0x0806 (ARP)                     ││
│  └────────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

이더넷 유형 (EtherType)

유형 번호 (16진수)프로토콜
0x0800IPv4
0x0806ARP (Address Resolution Protocol)
0x814CSNMP over Ethernet
0x86DDIPv6
0x8100VLAN Tagged Frame (802.1Q)
0x8847MPLS (유니캐스트)
0x8848MPLS (멀티캐스트)
0x88CCLLDP (Link Layer Discovery Protocol)

트레일러 (FCS)

┌─────────────────────────────────────────────────────────────┐
│              FCS (Frame Check Sequence) - 4바이트            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  목적: 데이터 전송 중 오류 발생 여부 확인                     │
│                                                             │
│  방식: CRC-32 (Cyclic Redundancy Check)                     │
│                                                             │
│  동작:                                                      │
│  ┌─────────────────────────────────────────────────────┐   │
│  │  송신측                                             │   │
│  │  1. 프레임 데이터로 CRC 계산                         │   │
│  │  2. 계산된 값을 FCS 필드에 추가                      │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │  수신측                                             │   │
│  │  1. 받은 프레임으로 CRC 재계산                       │   │
│  │  2. FCS 값과 비교                                   │   │
│  │  3. 일치 → 정상 수신                                │   │
│  │     불일치 → 프레임 폐기 (오류 발생)                 │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

6. 프레임 캡슐화와 역캡슐화

캡슐화 과정 (송신)

캡슐화 (Encapsulation) 과정:

[응용 계층]
    │
    │ 데이터
    ▼
┌─────────────────────────────────────────────────────────────┐
│  전송 계층                                                   │
│  ┌──────────────────────────────────────────────────────┐  │
│  │ TCP/UDP 헤더 │            데이터                     │  │
│  └──────────────────────────────────────────────────────┘  │
│                         세그먼트                            │
└─────────────────────────────────────────────────────────────┘
    │
    ▼
┌─────────────────────────────────────────────────────────────┐
│  네트워크 계층                                               │
│  ┌──────────────────────────────────────────────────────┐  │
│  │ IP 헤더 │ TCP/UDP 헤더 │          데이터             │  │
│  └──────────────────────────────────────────────────────┘  │
│                          패킷                               │
└─────────────────────────────────────────────────────────────┘
    │
    ▼
┌─────────────────────────────────────────────────────────────┐
│  데이터 링크 계층                                            │
│  ┌──────────────────────────────────────────────────────┐  │
│  │이더넷│ IP 헤더 │ TCP/UDP │    데이터    │ FCS │      │  │
│  │헤더  │        │  헤더   │              │     │      │  │
│  └──────────────────────────────────────────────────────┘  │
│                         ★ 프레임 ★                         │
└─────────────────────────────────────────────────────────────┘
    │
    ▼
┌─────────────────────────────────────────────────────────────┐
│  물리 계층                                                   │
│                                                             │
│  프레임 → 비트열 → 전기 신호                                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘
    │
    ▼
   케이블 (전기 신호 전송)

역캡슐화 과정 (수신)

역캡슐화 (Decapsulation) 과정:

   케이블 (전기 신호 수신)
    │
    ▼
┌─────────────────────────────────────────────────────────────┐
│  물리 계층                                                   │
│                                                             │
│  전기 신호 → 비트열 → 프레임                                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘
    │
    ▼
┌─────────────────────────────────────────────────────────────┐
│  데이터 링크 계층                                            │
│                                                             │
│  1. 목적지 MAC 주소 확인                                     │
│     • 자신의 MAC? → 수신                                    │
│     • 브로드캐스트? → 수신                                   │
│     • 다른 MAC? → 폐기                                      │
│                                                             │
│  2. FCS 검증 (CRC 확인)                                     │
│     • 일치 → 정상                                           │
│     • 불일치 → 폐기                                         │
│                                                             │
│  3. 이더넷 헤더 + FCS 제거                                   │
│                                                             │
└─────────────────────────────────────────────────────────────┘
    │
    ▼
┌─────────────────────────────────────────────────────────────┐
│  네트워크 계층                                               │
│                                                             │
│  IP 헤더 분석 후 제거 → 상위 계층으로 전달                    │
│                                                             │
└─────────────────────────────────────────────────────────────┘
    │
    ▼
   ... (전송 계층 → 응용 계층)

7. MAC 주소를 이용한 통신

허브 환경에서의 통신

허브 환경에서 MAC 주소 기반 통신:

[PC-A]                [PC-B]                [PC-C]
MAC: AA:...:01        MAC: AA:...:02        MAC: AA:...:03
    │                     │                     │
    └─────────────────────┼─────────────────────┘
                          │
                    ┌─────┴─────┐
                    │    HUB    │
                    └───────────┘

PC-A가 PC-C에게 데이터 전송:

1단계: 프레임 생성 (PC-A)
────────────────────────────────────────
┌────────────────┬────────────────┬──────────────┐
│ 목적지 MAC     │ 출발지 MAC     │ 데이터       │
│ AA:...:03      │ AA:...:01      │ Hello!       │
└────────────────┴────────────────┴──────────────┘

2단계: 허브가 모든 포트로 전송 (플러딩)
────────────────────────────────────────
         [HUB] ──→ PC-A (송신자, 제외)
            │───→ PC-B (목적지 아님)
            └───→ PC-C (목적지!)

3단계: MAC 주소 확인 (각 PC)
────────────────────────────────────────
PC-B: 목적지 MAC ≠ 내 MAC → 폐기
PC-C: 목적지 MAC = 내 MAC → 수신!

스위치 환경에서의 통신

스위치 환경에서 MAC 주소 기반 통신:

[PC-A]                [PC-B]                [PC-C]
MAC: AA:...:01        MAC: AA:...:02        MAC: AA:...:03
포트 1                포트 2                포트 3
    │                     │                     │
    └─────────────────────┼─────────────────────┘
                          │
                   ┌──────┴──────┐
                   │   SWITCH    │
                   │             │
                   │ MAC 테이블: │
                   │ AA:...:01→1 │
                   │ AA:...:02→2 │
                   │ AA:...:03→3 │
                   └─────────────┘

PC-A가 PC-C에게 데이터 전송:

1단계: 스위치가 MAC 테이블 확인
────────────────────────────────────────
"AA:...:03 → 포트 3번"

2단계: 해당 포트로만 전송
────────────────────────────────────────
         [SWITCH] ──→ PC-C (포트 3번만!)

※ PC-B는 데이터를 받지 않음 (효율적!)

8. MAC 주소 확인 방법

운영체제별 확인 명령어

Windows:
────────────────────────────────────────
> ipconfig /all

이더넷 어댑터 이더넷:
   물리적 주소. . . . . . . . . : 00-23-AE-D9-7A-9A
                                  └─ MAC 주소 (하이픈 구분)

또는:
> getmac


Linux / macOS:
────────────────────────────────────────
$ ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>
      ether 00:23:ae:d9:7a:9a  ← MAC 주소 (콜론 구분)

또는:
$ ip link show

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>
    link/ether 00:23:ae:d9:7a:9a brd ff:ff:ff:ff:ff:ff

네트워크 장비에서 확인

스위치 MAC 테이블 확인 (Cisco):

Switch# show mac address-table

          Mac Address Table
-------------------------------------------
Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
   1    0023.aed9.7a9a    DYNAMIC     Gi0/1
   1    0023.aed9.7a9b    DYNAMIC     Gi0/2
   1    0023.aed9.7a9c    DYNAMIC     Gi0/3

9. ARP (Address Resolution Protocol)

ARP란?

┌─────────────────────────────────────────────────────────────┐
│                          ARP                                 │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  목적: IP 주소 → MAC 주소 변환                               │
│                                                             │
│  이유:                                                      │
│  • 상위 계층은 IP 주소 사용                                  │
│  • 데이터 링크 계층은 MAC 주소 필요                          │
│  • IP 주소만 알고 MAC 주소를 모를 때 사용                    │
│                                                             │
│  이더타입: 0x0806                                           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

ARP 동작 과정

ARP 동작 과정:

PC-A (192.168.1.1)가 PC-C (192.168.1.3)의 MAC 주소를 모를 때:

1단계: ARP 요청 (브로드캐스트)
────────────────────────────────────────
PC-A → 브로드캐스트 (FF:FF:FF:FF:FF:FF)

"192.168.1.3의 MAC 주소가 뭐야?"

┌─────────────────────────────────────────────────────────────┐
│  ARP 요청 프레임                                             │
├─────────────────────────────────────────────────────────────┤
│  목적지 MAC: FF:FF:FF:FF:FF:FF (브로드캐스트)               │
│  출발지 MAC: AA:...:01 (PC-A)                               │
│  타입: 0x0806 (ARP)                                         │
│  내용: 192.168.1.3의 MAC 주소를 알려주세요                   │
└─────────────────────────────────────────────────────────────┘

2단계: ARP 응답 (유니캐스트)
────────────────────────────────────────
PC-C → PC-A (유니캐스트)

"192.168.1.3의 MAC 주소는 AA:...:03이야!"

┌─────────────────────────────────────────────────────────────┐
│  ARP 응답 프레임                                             │
├─────────────────────────────────────────────────────────────┤
│  목적지 MAC: AA:...:01 (PC-A)                               │
│  출발지 MAC: AA:...:03 (PC-C)                               │
│  타입: 0x0806 (ARP)                                         │
│  내용: 192.168.1.3 = AA:...:03                              │
└─────────────────────────────────────────────────────────────┘

3단계: ARP 캐시에 저장
────────────────────────────────────────
PC-A는 192.168.1.3 = AA:...:03 을 ARP 테이블에 저장
(일정 시간 후 만료)

ARP 테이블 확인

Windows:
> arp -a

인터페이스: 192.168.1.1
  인터넷 주소          물리적 주소           유형
  192.168.1.3         00-23-ae-d9-7a-9c     동적
  192.168.1.254       00-11-22-33-44-55     동적
  255.255.255.255     ff-ff-ff-ff-ff-ff     정적

Linux / macOS:
$ arp -a
? (192.168.1.3) at 00:23:ae:d9:7a:9c [ether] on eth0
? (192.168.1.254) at 00:11:22:33:44:55 [ether] on eth0

핵심 정리

개념설명
MAC 주소랜 카드의 고유한 물리적 주소 (48비트)
OUI앞쪽 24비트, 제조사 식별 코드
일련번호뒤쪽 24비트, 제조사가 부여한 고유 번호
이더넷 헤더목적지 MAC + 출발지 MAC + 유형 (14바이트)
FCS (트레일러)오류 검출용 CRC 값 (4바이트)
프레임이더넷 헤더 + 데이터 + FCS
ARPIP 주소를 MAC 주소로 변환하는 프로토콜

프레임 구조 요약

┌────────────────────────────────────────────────────────────────┐
│                       이더넷 프레임                              │
├──────────────────────────────────┬─────────────┬───────────────┤
│          이더넷 헤더 (14바이트)    │   데이터    │   FCS (4바이트)│
├────────────┬────────────┬────────┼─────────────┼───────────────┤
│목적지 MAC  │출발지 MAC  │ 유형   │ 46~1500바이트│   CRC-32      │
│  (6바이트) │  (6바이트) │(2바이트)│             │               │
└────────────┴────────────┴────────┴─────────────┴───────────────┘

용어 정리

  • MAC 주소 (Media Access Control Address): 랜 카드에 부여된 48비트 물리적 주소
  • OUI (Organizationally Unique Identifier): IEEE에서 제조사에 할당한 24비트 식별 코드
  • 이더넷 헤더: 목적지 MAC, 출발지 MAC, 유형으로 구성된 14바이트 헤더
  • FCS (Frame Check Sequence): 프레임 오류 검출을 위한 CRC-32 값
  • 프레임 (Frame): 데이터 링크 계층의 데이터 단위 (헤더 + 데이터 + 트레일러)
  • ARP (Address Resolution Protocol): IP 주소를 MAC 주소로 변환하는 프로토콜