네트워크 인터페이스에 붙은 48비트 하드웨어 주소. 같은 링크(같은 네트워크) 안에서만 쓰인다.
AA:BB:CC:11:22:33
└─ 6바이트 · 앞 3바이트는 제조사 식별자(OUI)
IP와 무엇이 다른가
-
IP 주소 — 어느 '동네' 인가 — 논리 주소. 네트워크를 넘어 라우팅된다
-
MAC 주소 — 그 동네 안의 '어느 장치' 인가 — 물리 주소. 링크를 못 넘는다
-
택배로 비유하면
- IP = 도로명 주소 (전국 어디든 배송)
- MAC = 그 건물 안의 호수 (건물 안에서만 의미)
라우터를 지날 때마다 MAC 주소는 새로 바뀌고 IP는 그대로다. 이 한 문장이 두 주소의 관계를 요약한다.
ARP — IP는 아는데 MAC을 모를 때
- ① 브로드캐스트로 묻는다
- "192.168.0.5 쓰는 사람 누구? MAC 알려 줘" (목적지 MAC = FF:FF:FF:FF:FF:FF)
- ② 해당 장치만 유니캐스트로 답한다
- "나야. AA:BB:CC:11:22:33"
- ③ 결과를 ARP 캐시에 잠시 저장한다
arp -a # ARP 캐시 확인
ip neigh show # 리눅스
스위치는 어떻게 길을 외우나
-
프레임이 들어올 때마다 '출발지 MAC 과 들어온 포트' 를 표에 적는다 (MAC 학습)
-
목적지 MAC 이 표에 있으면 — → 그 포트로만 보낸다
-
표에 없으면 — → 모든 포트로 뿌린다 (flooding) 후 응답을 보고 학습
허브에서 스위치로 바뀐 이유
-
허브 — 받은 걸 모든 포트로 그대로 뿌린다
- 모두가 같은 충돌 도메인. 동시에 보내면 충돌한다
- 장치가 늘수록 급격히 느려진다
-
스위치 — 포트마다 충돌 도메인이 분리된다
- 동시에 여러 쌍이 통신할 수 있다
- 전이중(full-duplex) 이 가능해져 충돌 자체가 사라졌다
보안 함정
ARP 는 인증이 없다 — 아무나 "내가 그 IP 주인" 이라고 답할 수 있다
→ ARP 스푸핑으로 트래픽을 가로챌 수 있다 (중간자 공격)
→ 같은 네트워크 안에서만 가능하지만, 공용 Wi-Fi 에서는 현실적 위협이다
→ 상위 계층 암호화(TLS)가 실질적 방어선이다
면접 함정
- ❌ "MAC 주소는 전 세계에서 유일하다" → 원칙은 그렇지만 소프트웨어로 바꿀 수 있다.
- ❌ "MAC 주소로 인터넷 통신을 한다" → 같은 링크 안에서만 쓰이고 라우터를 넘지 못한다.
특수한 MAC 주소
- FF:FF:FF:FF:FF:FF — 브로드캐스트 — 같은 링크의 모두에게
- 01:00:5E:xx:xx:xx — IPv4 멀티캐스트에 대응하는 범위
- 로컬 관리 비트 — 두 번째 비트가 1이면 소프트웨어로 지정한 주소다
- (스마트폰의 Wi-Fi 랜덤 MAC 이 이걸 쓴다 — 추적 방지)
MAC 테이블이 넘치면
스위치의 MAC 학습 테이블은 크기가 유한하다
공격자가 위조된 출발지 MAC 으로 프레임을 대량 보내면
- 테이블이 가득 찬다
- 정상 항목이 밀려난다
- 스위치가 모르는 목적지를 전부 flooding 한다
- 결과적으로 허브처럼 동작해 도청이 가능해진다 (MAC flooding)
포트별 MAC 개수 제한(port security)으로 막는다
VLAN — 하나의 스위치를 여러 개처럼
같은 스위치에 꽂혀 있어도 VLAN 이 다르면 브로드캐스트가 안 넘어간다
- 물리 배선을 바꾸지 않고 논리적으로 망을 분리한다
- 프레임에 4바이트 태그(802.1Q)를 붙여 구분한다