CCNA 200-301

CCNA 200–301 따라잡기 3장

이더넷 프레임과 MAC 주소, 그리고 스위치가 일하는 방법

2계층은 CCNA에서 가장 비중이 크다. 1계층은 “선을 잘 골랐는가”의 세계라면 2계층은 “이 동네 안에서 누가 누구에게 말하는가”의 세계다. 프레임이 어떻게 생겼는지, MAC 주소가 어떻게 부여되는지, 스위치는 그 주소를 보고 어떻게 판단하는지를 머릿속에 그릴 수 있어야 이후의 모든 장이 쉬워진다. 반대로 2계층을 어설프게 넘기면 VLAN, STP, EtherChannel, 트러블슈팅까지 전부 흔들린다.

3장의 목표는 이렇다. 이더넷 프레임의 각 필드가 무슨 역할을 하는지 말로 설명할 수 있고, MAC 주소의 구조와 종류를 구분할 수 있고, 스위치가 학습·전달·플러딩을 어떻게 결정하는지 흐름을 그릴 수 있다.

  1. 이더넷 프레임의 해부

이더넷 프레임은 우리가 평생 보게 될 가장 흔한 데이터링크 단위다. 정확히 알아두면 이후 wireshark든 show 명령이든 막힘이 없다. 표준은 IEEE 802.3이지만 실제로는 DIX 형식(이더넷 II)이 압도적으로 많이 쓰인다.

프레임의 필드를 앞에서부터 풀면 다음과 같다.

Preamble — 7바이트. 10101010 패턴이 반복된다. 수신 측이 클럭 동기화를 잡는 용도다. 실제 데이터는 아니다.

SFD(Start Frame Delimiter) — 1바이트. 10101011 패턴으로 끝난다. “여기부터 진짜 프레임이다”라는 신호다.

Destination MAC — 6바이트. 받는 쪽 MAC 주소.

Source MAC — 6바이트. 보내는 쪽 MAC 주소.

Type/Length — 2바이트. 값이 0x0600(1536) 이상이면 EtherType(상위 프로토콜 종류, 예: IPv4=0x0800, ARP=0x0806, IPv6=0x86DD), 그 이하면 길이로 해석된다. 현대 이더넷에서는 거의 항상 EtherType이다.

Data(payload) — 46~1500바이트. 최소가 46인 이유는 충돌 검출(CSMA/CD) 시대에 “충돌을 감지할 만큼은 길어야 한다”는 제약 때문이다. 그래서 페이로드가 46보다 짧으면 패딩이 붙는다.

FCS(Frame Check Sequence) — 4바이트. CRC-32 값. 수신 측이 같은 방식으로 다시 계산해서 비교한다. 불일치면 그 프레임은 폐기되고 CRC 오류 카운터가 1 증가한다. 1계층 케이블 문제를 진단할 때 보는 그 CRC가 바로 이 값이다.

여기서 외워둘 숫자 두 개가 있다. 최소 프레임 크기 64바이트(헤더+페이로드+FCS, Preamble·SFD 제외), 최대 1518바이트(VLAN 태그 없을 때). 64보다 작으면 runt, 1518보다 크면 giant라고 분류돼 카운터가 늘어난다. 2장에서 본 show interfaces 출력의 runts, giants가 바로 이 기준이다.

  1. MAC 주소를 정확히 읽는 법

MAC 주소는 48비트(6바이트) 길이의 식별자다. 보통 00:1A:2B:3C:4D:5E 같은 16진수로 표기한다. CCNA에서 단순히 “6바이트”라고만 알면 함정 문제에서 자주 미끄러진다. 구조를 한 번 파헤쳐 두는 게 좋다.

48비트는 크게 두 토막으로 나뉜다. 앞 24비트가 OUI(Organizationally Unique Identifier), 뒤 24비트가 NIC-specific이다.

OUI는 IEEE가 제조사에 발급한다. 00:1A:2B 같은 앞 세 바이트가 한 제조사를 가리킨다. wireshark에서 MAC을 보면 “Cisco_3C:4D:5E”처럼 제조사 이름이 자동으로 붙는 게 OUI 데이터베이스 덕분이다.

NIC-specific은 제조사가 그 OUI 안에서 알아서 부여한다. 이론상 같은 제조사 안에서 중복되지 않아야 한다.

여기까지가 “주소를 어디가 만들었는가”의 이야기다. 다음은 “이 주소가 어떤 종류인가”의 이야기로, OUI의 가장 첫 바이트 안에 비밀이 숨어 있다.

I/G(Individual/Group) 비트 — OUI 첫 바이트의 가장 낮은 비트. 0이면 유니캐스트, 1이면 그룹(멀티캐스트 또는 브로드캐스트). 그래서 멀티캐스트 MAC은 항상 첫 바이트가 홀수다. 01:00:5E…(IPv4 멀티캐스트), 33:33…(IPv6 멀티캐스트), FF:FF:FF:FF:FF:FF(브로드캐스트)를 보면 첫 바이트의 마지막 비트가 모두 1이다.

U/L(Universal/Local) 비트 — OUI 첫 바이트에서 I/G 바로 옆 비트. 0이면 전 세계에서 유일한(IEEE 발급) 주소, 1이면 로컬에서 임의 설정한 주소다. 가상화 환경에서 VM이 받는 MAC, 무선에서 랜덤화된 MAC이 U/L=1인 경우가 많다.

대표 주소를 외워두면 시험에서 바로 풀린다.

유니캐스트 — 일반적인 MAC. 첫 바이트가 짝수.
브로드캐스트 — FF:FF:FF:FF:FF:FF. 한 브로드캐스트 도메인 안의 모두에게 전달.
IPv4 멀티캐스트 — 01:00:5E:xx:xx:xx 범위.
IPv6 멀티캐스트 — 33:33:xx:xx:xx:xx 범위.
STP BPDU — 01:80:C2:00:00:00. 시험에 가끔 나온다.

  1. 스위치가 하는 세 가지 일

스위치를 한 문장으로 요약하면 “MAC 주소를 보고 프레임을 어디로 보낼지 결정하는 장비”다. 그 결정의 결과는 정확히 세 가지 중 하나다. 학습(Learning), 전달(Forwarding), 플러딩(Flooding). CCNA는 이 세 단어를 흐름으로 외우는지 본다.

학습 — 프레임이 들어올 때, 출발지 MAC 주소와 들어온 포트를 MAC 주소 테이블에 적는다. 출발지를 보고 학습하는 것이다. 도착지가 아니다. 시험에서 “스위치는 출발지 MAC을 보고 학습한다, 목적지 MAC을 보고 전달한다”라는 한 줄이 정답으로 자주 등장한다.

전달 — 목적지 MAC이 MAC 테이블에 있으면, 그 포트로만 프레임을 내보낸다. 다른 포트에는 보내지 않는다. 이게 허브와 결정적으로 다른 점이다.

플러딩 — 목적지 MAC이 테이블에 없거나(unknown unicast) 브로드캐스트(FF:FF:FF:FF:FF:FF)거나 알 수 없는 멀티캐스트면, 들어온 포트만 제외하고 모든 포트로 내보낸다. “들어온 포트는 제외”가 중요하다. 그래야 같은 프레임이 무한 반복되지 않는다.

이 세 가지가 합쳐져 스위치 한 대의 동작 전부를 설명한다. 추가로 알아야 할 동작은 “스위치는 자기에게 향한 프레임이 아니더라도 통과시킨다”와 “MAC 테이블 항목은 기본 300초(5분)의 aging timer가 지나면 사라진다” 정도다.

  1. 처음 부팅한 스위치에서 일어나는 일

이론을 흐름으로 바꿔 보자. 방금 박스에서 꺼낸 스위치에 PC 두 대(A, B)와 서버 한 대©가 각각 다른 포트에 연결돼 있다고 가정한다. MAC 테이블은 비어 있다.

PC A가 PC B에게 처음 통신을 시도한다. ARP 등으로 B의 MAC을 알아야 하는데, 처음이라 모른다. 그래서 A는 “B의 IP는 누구의 MAC인가”라는 ARP 요청을 브로드캐스트(목적지 MAC=FF:FF:FF:FF:FF:FF)로 보낸다.

스위치는 이 프레임을 받자마자 두 가지를 동시에 한다. 첫째, 출발지 MAC=A의 주소를 “들어온 포트 1번”과 함께 테이블에 기록한다(학습). 둘째, 목적지가 브로드캐스트니까 들어온 포트만 빼고 모든 포트로 내보낸다(플러딩).

PC B와 서버 C 모두 이 ARP 요청을 받는다. C는 자기 IP가 아니니 폐기한다. B는 자기 IP니까 응답을 보낸다. B의 응답은 목적지 MAC=A의 주소, 출발지 MAC=B의 주소다.

스위치는 이 응답을 받고 다시 두 가지를 한다. B의 MAC을 들어온 포트(2번)와 함께 테이블에 기록한다(학습). 그리고 목적지가 이미 테이블에 있는 A니까 1번 포트로만 전달한다(전달).

이제 테이블에는 A→1, B→2 두 줄이 있다. 다음에 A↔B 통신은 더 이상 플러딩이 아니라 깔끔한 전달이다. C는 여전히 자기와 무관한 트래픽을 받지 않는다. 이것이 스위치가 허브보다 우수한 핵심 이유다.

CCNA 시험에는 이 흐름의 중간 단계를 슬며시 바꿔 묻는 문제가 많다. “MAC 테이블이 비어 있을 때 PC A가 PC B에게 유니캐스트 프레임을 보내면 어떤 일이 일어나는가” 같은 질문이 대표적이다. 정답은 “A의 MAC을 학습하고, B의 MAC은 모르니 모든 포트로 플러딩한다”다.

Get David Lee’s stories in your inbox

Join Medium for free to get updates from this writer.

Subscribe

Subscribe

Remember me for faster sign in

  1. Unknown unicast, broadcast, multicast 처리

세 가지를 묶어서 BUM 트래픽(Broadcast, Unknown unicast, Multicast)이라고 부르기도 한다. 스위치는 이 셋을 거의 같은 방식으로 처리한다. 그래서 묶어서 외우는 게 효율적이다.

Broadcast(목적지 MAC=FF:FF:FF:FF:FF:FF) — 들어온 포트만 빼고 모두에게 전달. 브로드캐스트 도메인 전체가 영향을 받는다. 이래서 큰 L2 세그먼트가 위험하다.

Unknown unicast — 유니캐스트지만 MAC 테이블에 없는 주소. 학습이 끝날 때까지 모두에게 플러딩된다. 평소에는 한두 프레임으로 끝나지만, MAC 테이블이 오버플로우(예: macof 공격, MAC flooding)나면 평상시에도 unknown unicast가 폭주한다.

Multicast — 기본 동작은 브로드캐스트와 같이 플러딩이다. 단, IGMP snooping이 켜진 스위치는 어떤 포트가 어떤 멀티캐스트 그룹을 받고 싶어 하는지를 학습해서 해당 포트에만 보낸다. CCNA에서는 “기본은 플러딩, IGMP snooping이 켜져 있으면 선별 전달”이라는 두 줄이 핵심이다.

세 트래픽 모두 충돌 도메인은 포트 단위로 분리되지만, 브로드캐스트 도메인은 VLAN 단위(또는 한 스위치 전체)로 묶인다는 점이 중요하다. 이 구분은 VLAN을 다루는 다음 단계로 자연스럽게 이어진다.

  1. 충돌 도메인과 브로드캐스트 도메인

스위치를 이해할 때 같이 외워야 하는 두 개념이다. 시험에 그림으로 자주 나온다.

충돌 도메인 — 동시에 송신하면 충돌이 일어날 수 있는 영역. 허브는 한 장비 전체가 하나의 충돌 도메인이다. 스위치는 포트 하나가 곧 하나의 충돌 도메인이다. 그래서 현대 이더넷에서는 사실상 충돌이 일어나지 않는다(full-duplex 전제).

브로드캐스트 도메인 — 브로드캐스트 프레임이 전달되는 영역. 스위치 한 대 전체(혹은 한 VLAN 전체)가 하나의 브로드캐스트 도메인이다. 라우터는 브로드캐스트를 통과시키지 않는다. 그래서 라우터 인터페이스 단위로 브로드캐스트 도메인이 나뉜다.

문제 풀이 팁. 그림에서 “충돌 도메인 개수는?”이 나오면 스위치 포트와 허브 단위로 센다. “브로드캐스트 도메인 개수는?”이 나오면 라우터 인터페이스와 VLAN 단위로 센다. 이 두 줄로 거의 모든 변형이 풀린다.

  1. show mac address-table 읽기

실무에서나 시험 시뮬레이션에서나 가장 자주 보는 명령이다. 출력은 다음과 비슷하게 생겼다.

Vlan Mac Address Type Ports
— — — — — — — — — — — — — — -
1 00:1A:2B:3C:4D:5E DYNAMIC Gi0/1
1 00:1A:2B:3C:4D:5F DYNAMIC Gi0/2
1 00:50:56:AA:BB:CC STATIC Gi0/3

Vlan — 그 MAC이 학습된 VLAN. 같은 MAC이 다른 VLAN에 따로 학습될 수 있다.

Mac Address — 학습된 MAC 주소.

Type — DYNAMIC은 평소 트래픽에서 자동 학습한 항목. 300초 aging timer가 적용된다. STATIC은 명령으로 박아 놓은 항목 또는 스위치 자기 MAC이다. aging이 없다.

Ports — 그 MAC이 어느 포트에 연결됐는지.

같은 MAC이 두 포트에 동시에 학습되면 그건 루프가 의심된다. STP가 없는 환경에서 같은 PC의 MAC이 Gi0/1과 Gi0/2를 왔다 갔다 한다면 누군가 두 포트를 케이블로 직접 연결했거나, 보안 침입(MAC 위조)가 진행 중이다.

  1. 이 단계에서 자주 헷갈리는 것들

스위치는 IP를 보지 않는다 — 2계층 장비라서 MAC만 본다. “스위치는 라우팅을 하나요”라는 질문에 단순 답은 “순수 스위치는 안 한다”다. L3 스위치는 별개로, 라우팅 기능이 추가된 형태다.

MAC 주소는 1계층이 아니다 — 케이블에 박혀 있는 것 같지만 사실 NIC 펌웨어에 적힌 2계층 주소다. 케이블을 바꿔도 MAC은 그대로다.

브로드캐스트 도메인 ≠ 충돌 도메인 — 시험에서 가장 자주 헷갈리는 짝이다. 충돌은 “동시에 보내면 깨진다”의 문제, 브로드캐스트는 “전체에게 들린다”의 문제다.

IP 없이도 통신은 된다 — 같은 L2 세그먼트 안이라면 MAC만으로 프레임이 오간다. 사실 ARP가 바로 그 단계의 통신이다. IP는 “다른 동네까지 가는 길찾기”용이다.

루프와 BUM 폭주 — 스위치 두 대를 두 가닥의 케이블로 묶으면 같은 브로드캐스트가 무한 회전한다. 이걸 막는 게 STP고, 4장 이후의 큰 주제다.

  1. 3장 정리

프레임 — Preamble·SFD·Dst MAC·Src MAC·Type/Length·Data·FCS. 최소 64, 최대 1518바이트.

MAC — 48비트. OUI(24) + NIC(24). I/G 비트로 유니/그룹 구분. 브로드캐스트는 전부 F.

스위치 동작 — 출발지로 학습, 목적지로 전달, 모르면 플러딩.

부팅 직후 흐름 — 첫 프레임은 모두 unknown unicast/브로드캐스트로 플러딩, 응답이 오면서 점차 깔끔한 전달로 수렴.

BUM — Broadcast, Unknown unicast, Multicast는 기본적으로 플러딩.

도메인 — 충돌 도메인은 포트 단위, 브로드캐스트 도메인은 VLAN/스위치/라우터 인터페이스 단위.

명령 — show mac address-table. DYNAMIC vs STATIC, aging 300초.

  1. 다음 장 예고

4장에서는 한 동네 안의 통신이 어떻게 “다른 동네”로 확장되는지 다룬다. IPv4 주소 구조, 서브넷 마스크, 서브넷팅 계산, 그리고 VLSM이다. 다른 어떤 장보다 손으로 계산해 보는 양이 많다. 종이와 펜을 준비해 두면 좋다.

댓글 0