핵심 인사이트 (3줄 요약)
- 본질: L2 스위치가 텅 빈 깡통 상태에서 훌륭한 교통경찰로 진화하는 과정은 프레임을 처리하는 5대 동작 알고리즘인 **Learning(학습), Forwarding(전달), Filtering(여과), Flooding(플러딩), Aging(노화)**의 유기적인 결합 덕분이다.
- 학습(Learning)의 마법: 스위치는 사람이 포트 번호를 입력해주지 않아도, 프레임이 들어올 때 그 프레임의 **'출발지 MAC 주소(Source MAC)'**를 몰래 훔쳐보며 "아, 1번 포트에 홍길동 PC가 있구나" 하고 자동으로 지도를 그린다.
- 미지의 유니캐스트 플러딩(Unknown Unicast Flooding): 스위치가 목적지 MAC 주소를 자기 지도(MAC 테이블)에서 찾지 못하면, 일단 데이터를 버리지 않고 수신된 포트를 제외한 모든 포트로 무조건 복사해서 뿌려(Flooding) 일단 목적지에 닿게 만드는 보험 메커니즘을 작동시킨다.
Ⅰ. 개요 및 필요성 (Context & Necessity)
-
개념: 스위치가 데이터를 올바르게 보내기 위해 수행하는 일련의 자율적 논리 프로세스다. 스위치 전원을 막 켜면 MAC 주소 테이블은 텅 비어있다. 스위치는 네트워크 트래픽을 관찰하며 스스로 학습하고, 적절히 버리거나 전달한다.
-
필요성: 만약 스위치가 IP 라우터처럼 관리자가 일일이 "1번 포트에 무슨 PC, 2번 포트에 무슨 PC"를 수동으로 입력(Static Routing)해줘야 한다면, 사무실에서 직원이 자리를 옮기거나 노트북을 껐다 켤 때마다 네트워크 관리자는 퇴근을 못 할 것이다. 이더넷 스위치의 위대함은 전원만 꽂으면 스스로 네트워크 지형을 학습하는 "Plug and Play" 기능에 있다.
-
💡 비유: 스위치는 기억력이 좋은 **"호텔 로비의 신입 벨보이"**와 같습니다. 처음엔 투숙객이 몇 호에 있는지 아무도 모릅니다. 그런데 302호에서 손님이 내려와 "나 302호 홍길동인데, 501호 이몽룡한테 편지 좀 전해줘"라고 하면, 로비보이는 머릿속에 **"홍길동 = 302호"라고 학습(Learning)**합니다. 하지만 이몽룡이 몇 호인지는 아직 모르니 호텔 전 객실에 방송을 때립니다 (Flooding). 나중에 이몽룡이 "나 501호 이몽룡이야"라고 답장을 보내면, 그때 "이몽룡 = 501호"를 학습하고, 다음번 편지부터는 501호로 조용히 가져다줍니다 (Forwarding).
📢 섹션 요약 비유: 스위치의 동작 원리는 낯선 동네에 발령받은 우체부가 **"편지를 주고받는 사람들을 눈치껏 지켜보며 동네 지도를 완성해 나가는 완벽한 독학(Self-study) 알고리즘"**입니다.
Ⅱ. 스위치의 5대 동작 메커니즘 (Deep Dive)
1. Learning (학습) - "출발지를 기억하라"
스위치 포트에 프레임이 들어오면, 스위치는 가장 먼저 프레임 헤더의 출발지(Source) MAC 주소를 까본다.
- "1번 포트에서
MAC A가 보낸 편지가 들어왔네? 그럼 1번 포트 끝에는MAC A라는 PC가 매달려 있구나!" - 이를 즉시 MAC 주소 테이블에
[MAC A - Port 1]이라고 기록한다.
2. Flooding (플러딩) - "모르면 전부 뿌려라"
스위치가 이제 목적지 MAC 주소를 보고 어디로 보낼지 결정해야 한다. 목적지가 MAC B인데, 아직 테이블에 MAC B가 어디 있는지 정보가 없다.
- 스위치는 "모르는 유니캐스트(Unknown Unicast)" 또는 아예 전체 방송용인 "브로드캐스트(FF:FF...)" 프레임을 받으면, 편지가 들어온 포트를 제외한 나머지 모든 포트로 편지를 복사해서 쏟아낸다. 이것이 플러딩이다.
3. Forwarding (전달) - "아는 길은 조용히"
만약 스위치가 테이블을 뒤졌는데 목적지 MAC B가 3번 포트에 있다는 것을 이미 학습(Learning)한 상태라면?
- 플러딩하지 않고, 오직 3번 포트로만 프레임을 조용히 전달한다. 이것이 스위치의 진면목인 포워딩이다.
4. Filtering (여과) - "쓸데없는 전송은 차단한다"
테이블에 [MAC A - Port 1], [MAC B - Port 1]이라고 적혀있다고 가정하자. (1번 포트에 작은 허브가 달려있는 상황)
- A가 B에게 편지를 보냈다. 스위치가 1번 포트에서 편지를 받아보니, 목적지 B도 1번 포트에 있다.
- "어? 어차피 1번 포트(허브) 안에서 너희들끼리 주고받았겠네? 내가 굳이 다른 포트로 이걸 넘겨줄 필요가 없지!" 하고 스위치는 이 프레임을 즉시 **폐기(버림)**한다. 이것이 필터링이다. 덕분에 다른 포트의 대역폭 낭비를 막는다.
5. Aging (노화) - "오래된 기억은 잊어라"
- 한 번 학습된 정보가 평생 남으면, 노트북을 뽑아서 다른 자리로 갔을 때 스위치는 계속 옛날 포트로 데이터를 보낼 것이다.
- 그래서 스위치는 테이블에 적힌 정보가 기본값 300초(Aging Time) 동안 사용되지 않으면(데이터가 안 들어오면) 테이블에서 쿨하게 삭제해 버리고, 다음번에 다시 Learning을 수행한다.
┌─────────────────────────────────────────────────────────────┐
│ 스위치의 Learning과 Flooding 과정 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. PC A가 PC B로 핑(Ping) 전송 │
│ [ PC A ] ────▶(Port 1) [ 스위치 ] (Port 3)──── [ PC B ] │
│ (MAC A) 테이블 비어있음 (MAC B) │
│ │
│ 2. Learning (학습) │
│ 스위치: "출발지가 MAC A네? Port 1에 MAC A 등록!" │
│ CAM Table: [ MAC A : Port 1 ] │
│ │
│ 3. Flooding (플러딩) │
│ 스위치: "목적지 MAC B는 어딨는지 모르겠네? 1번 빼고 다 뿌려!" │
│ 스위치 ──▶ Port 2, Port 3, Port 4... 전송 │
│ │
│ 4. PC B의 응답 및 재학습 │
│ PC B가 응답 프레임 보냄 ──▶ 스위치 (Port 3로 들어옴) │
│ 스위치: "출발지가 MAC B네? Port 3에 MAC B 등록!" │
│ CAM Table: [ MAC A : Port 1 ] │
│ [ MAC B : Port 3 ] │
│ │
│ 5. Forwarding (포워딩) │
│ 스위치: "이제 목적지 MAC A 위치(Port 1) 아니까 조용히 전송!" │
│ │
└─────────────────────────────────────────────────────────────┘
📢 섹션 요약 비유: 스위치는 처음엔 **"스피커로 온 동네방네 방송(Flooding)"**을 하며 사람들을 찾지만, 한 번 명함(출발지 MAC)을 건네받고 나면 **"수첩(테이블)에 적어두고(Learning) 다음부터는 조용히 귓속말(Forwarding)"**만 하는 센스 있는 통신 교환수입니다.