이더넷과 MAC 주소
이더넷 프레임과 MAC 주소의 구조를 익히고 같은 링크에서 유니캐스트·브로드캐스트·멀티캐스트가 전달되는 방식을 이해합니다.
물리 계층이 비트를 신호로 변환해서 전송한다는 것을 이해했습니다.
하지만 비트의 나열만으로는 통신이 성립하지 않습니다.
이 비트들이 어디서부터 어디까지가 하나의 데이터인지, 이 데이터를 누구에게 보내는 것인지를 알아야 합니다.
이 역할을 담당하는 것이 데이터 링크 계층이고, 그 핵심 기술이 바로 이더넷(Ethernet)입니다.
이더넷의 중심 질문은 단순합니다.
같은 링크 안에서 이 프레임을 어느 인터페이스로 보낼 것인가?스위치는 프레임의 Source MAC을 보고 포트를 학습하고, Destination MAC을 보고 어느 포트로 내보낼지 결정합니다.
이더넷의 역사와 발전
초기 이더넷은 하나의 동축 케이블(버스)을 공유하는 구조였습니다.
여러 장치가 같은 매체를 공유하므로, 동시에 전송하면 충돌이 발생합니다.
이를 해결하기 위해 CSMA/CD(Carrier Sense Multiple Access with Collision Detection)라는 매체 접근 제어 방식을 사용했습니다.
현대의 스위치 기반 이더넷에서는 각 포트가 독립적인 링크가 되고 전이중(Full Duplex) 통신이 일반적이므로, 전이중 링크에서는 공유 매체의 충돌 감지 방식인 CSMA/CD를 사용하지 않습니다.
이더넷 프레임 구조
이더넷은 데이터를 프레임(Frame)이라는 단위로 묶어 전달합니다.
| 필드 | 크기와 의미 |
|---|---|
| Preamble · SFD | 7 B 동기화 패턴 + 1 B 프레임 시작 표시 |
| 목적지 MAC | 6 B · 현재 링크에서 받을 인터페이스 또는 그룹 |
| 출발지 MAC | 6 B · 현재 링크에서 보낸 인터페이스 |
| 802.1Q 태그 | 있으면 4 B · VLAN 구분 |
| Type / Length | 2 B · Ethernet II의 EtherType 또는 802.3의 길이 |
| Payload | 태그 없는 기본 프레임 46~1500 B; 단일 C-태그 프레임의 최소 데이터·패딩은 42 B |
| FCS | 4 B · CRC-32 오류 검출 |
Ethernet II 프레임에서는 Type 필드가 0x0800이면 IPv4, 0x86DD이면 IPv6, 0x0806이면 ARP를 뜻합니다.
IEEE 802.3 계열에서는 같은 위치가 Length로 해석될 수 있고, 뒤에 LLC/SNAP 정보가 이어질 수 있습니다.
Preamble과 SFD는 프레임 전송을 위해 앞에 붙는 물리 계층 성격의 필드이며, 보통 말하는 64바이트 최소 이더넷 프레임 크기에는 Destination MAC부터 FCS까지가 포함됩니다.
태그 없는 기본 프레임은 데이터가 46바이트 미만이면 패딩(padding)을 추가합니다. 단일 802.1Q C-태그가 있는 프레임도 최소 전체 길이는 64바이트이며, 최대 길이는 기본 1518바이트에서 1522바이트로 늘어납니다.
이 최소 크기는 과거 CSMA/CD 충돌 감지 제약에서 비롯되었고, 현대 전이중 환경에서도 표준 프레임 형식의 일부로 유지됩니다.
일반적인 최대 페이로드 크기 1500바이트를 MTU(Maximum Transmission Unit)라고 합니다.
점보 프레임
데이터센터에서는 MTU를 9000바이트 안팎으로 확대한 점보 프레임(Jumbo Frame)을 사용하기도 합니다.
다만 점보 프레임 크기는 표준 이더넷 MTU처럼 하나로 고정된 값이 아니라 장비와 설정에 따라 달라집니다.
| MTU 예시 | 오버헤드와 적용 조건 |
|---|---|
| 1500 B | 태그 없는 MAC 헤더 14 B + FCS 4 B 비율은 18/1518 ≈ 1.2%; 기본 MTU의 호환성 |
| 9000 B | 같은 계산은 18/9018 ≈ 0.2%; 프레임 수·CPU 처리 부담을 줄일 수 있으나 경로 전체 MTU 일치 필요 |
위 비율은 Preamble·SFD·프레임 간 간격과 상위 계층 헤더를 제외한 비교입니다.
MAC 주소의 구조와 역할
MAC(Media Access Control) 주소는 데이터 링크 계층에서 인터페이스를 식별하는 48비트 주소입니다.
전통적으로 NIC 제조 단계에서 할당된 주소를 많이 떠올리지만, 가상 NIC, 컨테이너, 테스트 환경, 개인정보 보호용 랜덤 MAC처럼 소프트웨어가 설정하는 locally administered 주소도 흔합니다.
| 특수 MAC | 범위와 의미 |
|---|---|
| FF:FF:FF:FF:FF:FF | 같은 브로드캐스트 도메인에 보내는 브로드캐스트 |
| 01:00:5E:00:00:00 ~ 01:00:5E:7F:FF:FF | IPv4 멀티캐스트 주소의 하위 23비트를 매핑 |
| 33:33:xx:xx:xx:xx | IPv6 멀티캐스트 주소의 하위 32비트를 매핑 |
| 00:00:00:00:00:00 | 장비·도구에서 초기화나 자리표시 값으로 나타날 수 있음 |
MAC 주소의 첫 옥텟에는 중요한 플래그가 있습니다.
가장 낮은 비트(I/G)가 0이면 개별 주소, 1이면 그룹 주소입니다.
그다음 비트(U/L)가 0이면 IEEE가 관리하는 globally administered 주소, 1이면 locally administered 주소입니다.
그래서 02:42:ac:11:00:02처럼 첫 옥텟이 02인 주소는 Docker 같은 환경에서 자주 보이는 로컬 관리 주소입니다.
# 자신의 MAC 주소 확인
ip link show | grep ether
# OUI 확인 (제조사 조회)
# 방법: globally administered MAC의 앞 24비트를 IEEE OUI 데이터베이스에서 검색
# MAC 주소 변경 (테스트용)
# sudo ip link set eth0 address 02:42:ac:11:00:02MAC 주소는 같은 네트워크(LAN) 내에서 다음 홉의 인터페이스를 식별합니다.
IP 주소가 네트워크 사이의 경로를 찾기 위한 논리적 주소라면, MAC 주소는 현재 링크에서 실제 프레임을 받을 인터페이스 주소입니다.
NAT나 터널을 제외한 일반 IP 라우팅에서는 IP 출발지·목적지가 유지되고, 라우터가 다음 링크의 프레임을 새로 만듭니다.
IP 주소와 MAC 주소의 역할 분담
다음 그림의 R-왼쪽과 R-오른쪽은 라우터의 서로 다른 인터페이스입니다.
일반 IP 라우팅 예시입니다. NAT나 터널은 제외하며 IP 출발지 A와 목적지 B는 유지됩니다. R-왼쪽과 R-오른쪽은 라우터의 서로 다른 인터페이스입니다.
유니캐스트, 브로드캐스트, 멀티캐스트
| 방식 | 목적지와 사용 예 |
|---|---|
| 유니캐스트 | 개별 MAC으로 특정 인터페이스에 전달 · 일반 HTTP 통신 |
| 브로드캐스트 | FF:FF:FF:FF:FF:FF로 같은 VLAN에 전달 · ARP 요청, DHCP의 일부 교환 |
| 멀티캐스트 | I/G 비트가 1인 그룹 주소로 전달 · IPTV·화상회의 등; 실제 포트 전달 범위는 스누핑 설정에도 영향 |
다음 분류 함수는 유효한 6옥텟 MAC 문자열을 입력한다고 가정하며, 입력 형식 검증은 생략했습니다.
"""MAC 주소에서 프레임 전달 방식 판별"""
def classify_mac(mac_str):
"""MAC 주소의 전달 방식을 판별"""
mac_bytes = bytes.fromhex(mac_str.replace(":", ""))
if mac_bytes == b"\xff\xff\xff\xff\xff\xff":
return "브로드캐스트"
elif mac_bytes[0] & 0x01: # 첫 바이트 LSB = 1
return "멀티캐스트"
else:
return "유니캐스트"
test_macs = [
"00:1A:2B:3C:4D:5E",
"FF:FF:FF:FF:FF:FF",
"01:00:5E:7F:00:01",
"33:33:00:00:00:01",
]
for mac in test_macs:
print(f"{mac} → {classify_mac(mac)}")브로드캐스트는 네트워크의 모든 장치가 해당 프레임을 처리해야 하므로 트래픽이 증가합니다.
네트워크 규모가 커질수록 브로드캐스트 트래픽이 성능에 미치는 영향도 커지는데, 이것이 뒤에서 다룰 VLAN의 등장 배경입니다.
CSMA/CD와 전이중 통신
초기 공유 매체 이더넷에서의 CSMA/CD 동작 과정입니다.
-
CS (Carrier Sense): 전송 전에 매체가 사용 중인지 감지
-
MA (Multiple Access): 여러 장치가 같은 매체에 접근 가능
-
CD (Collision Detection): 충돌 감지 시 전송 중단, 잼 신호 전송, 랜덤 시간 후 재시도
현대 스위치 기반 네트워크에서는 각 포트가 독립적인 전이중 링크이므로 CSMA/CD가 비활성화됩니다.
전이중(Full Duplex) 모드에서는 송신과 수신이 동시에 가능하여, 1Gbps 이더넷은 각 방향으로 1Gbps를 동시에 사용할 수 있습니다.
다음 절에서는 같은 네트워크 안에서 프레임이 정확히 어떻게 올바른 장치에 도달하는지, 스위치와 ARP의 동작을 살펴보겠습니다.