스위치 기반 LAN 동작 원리
A가 B에게 메시지를 보내려 한다
![[switch-based-vlan-20260110133559121.webp]]
네트워크에서 A가 B에게 데이터를 보내려 한다. 그런데 A는 B가 어디 있는지 모른다. 같은 건물에 있는지, 어느 방에 있는지, 어떤 컴퓨터인지. A가 아는 건 B의 MAC 주소뿐이다.
과거에는 모든 호스트가 같은 케이블을 공유했다. 마치 모든 사람이 한 방에서 대화하는 것과 같았다. A가 B에게 말하면 방 안의 모든 사람이 듣게 된다. 두 사람이 동시에 말하면 충돌이 발생한다. 비효율적이고 혼잡하다.
여기서 스위치가 등장한다. 스위치는 마치 우체국의 분류 담당자와 같다. 편지가 도착하면 받는 사람 주소를 확인하고, 해당 창구로만 전달한다. 다른 창구는 이 편지의 존재조차 모른다.
스위치는 링크 계층에서 동작한다. 들어온 프레임을 일단 메모리에 저장한 뒤, 목적지 MAC 주소를 확인해 해당 포트로만 전달한다. 브로드캐스트가 아니라 정확히 필요한 곳으로만 보내는 것이다. 충돌을 방지하고 네트워크 전체의 부하를 줄인다.
스위치의 핵심 특성은 투명성과 자동 설정이다. 호스트는 자신이 스위치를 통해 통신한다는 사실을 알 필요가 없다. 사용자가 별도로 MAC 주소를 설정하거나 라우팅 테이블을 구성하지 않아도 된다. 스위치가 스스로 네트워크 트래픽을 관찰하면서 학습한다.
여러 호스트가 동시에 통신하면?
![[switch-based-vlan-20260110133644145.webp]]
상황을 확장해보자. 6개의 포트를 가진 스위치가 있고, 각 포트에는 호스트가 전용 링크로 연결되어 있다. A ↔ A', B ↔ B', C ↔ C'. 모든 호스트가 스위치와 1:1로 연결된 구조다.
이때 A가 A'에게, B가 B'에게 동시에 데이터를 보내면 어떻게 될까?
놀랍게도 아무 문제가 없다. 각 호스트는 스위치와 전용 케이블로 연결되어 있고, 스위치는 각 연결에 대해 독립적으로 프레임을 송수신한다. A → A' 통신은 포트 1과 2를 사용하고, B → B' 통신은 포트 3과 4를 사용한다. 서로 전혀 간섭하지 않는다.
각 링크는 자체 충돌 도메인이다. 충돌이 발생하지 않으며 양방향 동시 통신도 가능하다. 과거의 공유 매체 기반 네트워크와 비교해 스위치 환경이 갖는 가장 큰 장점이다.
![[switch-based-vlan-20260110133652139.webp]]
그런데 모든 동시 통신이 가능한 건 아니다. A → A'와 C → A' 통신은 동시에 불가능하다. 둘 다 A'라는 같은 수신 포트를 향하기 때문이다.
스위치는 한 순간에 하나의 출력 포트로 하나의 프레임만 보낼 수 있다. 두 개의 입력이 같은 출력을 대상으로 하면 경합이 발생한다. 이 경우 스위치는 두 프레임 중 하나를 먼저 보내고, 다른 하나는 버퍼에 대기시킨다.
스위치는 B가 어디 있는지 어떻게 알까?
![[switch-based-vlan-20260110133807582.webp]]
여기서 핵심 질문이 등장한다. 스위치가 A'가 포트 4에 연결되어 있다는 사실을 어떻게 아는 걸까?
스위치는 내부에 MAC 테이블을 유지한다. 마치 주소록과 같다. 누가 어느 포트에 있는지 기록해둔다.
(49-BD-D2-C7-56-2A, 포트 5, 12:01:08)
(88-B2-2F-54-1A-0F, 포트 4, 12:01:10)
그런데 스위치는 이 주소록을 어떻게 채울까? 누군가 일일이 입력해주는 걸까?
아니다. 스위치는 스스로 배운다. 이를 self-learning이라 한다.
![[switch-based-vlan-20260110133712211.webp]]
원리는 간단하다. 스위치는 수신하는 모든 프레임의 출발지 MAC 주소를 관찰한다. 포트 3에서 MAC 주소 A의 프레임이 들어오면, "A는 포트 3을 통해 접근 가능하다"고 기록한다. 다음에 누군가 A에게 프레임을 보내려 하면 스위치는 포트 3으로 전달하면 된다.
상황을 따라가보자. A가 A'에게 첫 프레임을 보낸다. 스위치의 MAC 테이블은 비어 있다.
프레임이 포트 1에 도착한다. 스위치는 출발지 MAC 주소가 A인 것을 확인하고 기록한다.
MAC 주소: A, 포트: 1, TTL: 60초
이제 스위치는 "A는 포트 1을 통해 접근 가능하다"는 사실을 알게 되었다.
A → A' 첫 통신의 전체 과정
![[switch-based-vlan-20260110133728168.webp]]
스위치가 프레임을 처리하는 과정을 처음부터 끝까지 따라가보자.
먼저 학습이다. 프레임이 들어오면 스위치는 출발지 MAC 주소와 들어온 포트 번호를 기록한다.
다음은 목적지 확인이다. 프레임의 목적지 MAC 주소를 기준으로 MAC 테이블을 검색한다.
마지막은 전달 또는 플러딩이다. 목적지 주소가 테이블에 있으면 해당 포트로만 전달한다. 없으면? 모르니까 일단 전체에 물어본다. 들어온 포트를 제외한 모든 포트로 프레임을 복제해 전송한다. 이를 플러딩이라 한다.
![[switch-based-vlan-20260110133833690.webp]]
A → A' 첫 프레임을 예로 들어보자.
A가 A'에게 프레임을 보낸다. 출발지는 A, 목적지는 A', 들어온 포트는 1이다.
스위치는 먼저 출발지를 학습한다. A → 포트 1을 테이블에 등록한다.
그런데 목적지 A'에 대한 정보는 아직 없다. 스위치는 A'가 어디 있는지 모른다. 플러딩을 수행해 포트 1을 제외한 모든 포트에 프레임을 전송한다.
이제 A'가 응답한다. 출발지는 A', 목적지는 A, 들어온 포트는 4다.
스위치는 A'의 정보를 학습한다. A' → 포트 4를 테이블에 등록한다.
이번엔 목적지 A에 대한 정보가 이미 존재한다. 플러딩 없이 포트 1로만 프레임을 전달한다.
시간이 지남에 따라 MAC 테이블이 채워지면 모든 프레임이 효율적으로 필요한 포트로만 전송된다.
이번엔 더 복잡하다. 스위치가 4개다
![[switch-based-vlan-20260110133843014.webp]]
상황을 확장해보자. A가 G에게 프레임을 보내려 한다. 그런데 중간에 S1 → S4 → S3 순서로 스위치를 거쳐야 한다.
S1 스위치는 G가 S3를 거쳐 S4로 연결된다는 사실을 어떻게 알 수 있을까?
self-learning은 여러 스위치 환경에서도 그대로 적용된다. 스위치는 직접 연결된 포트에서 들어오는 프레임의 출발지 MAC 주소를 학습한다. 이 규칙은 스위치가 하나든 여러 개든 동일하다.
G가 A에게 응답 프레임을 보내면, G의 프레임이 S4 → S3 → S1을 거쳐 이동한다.
그 과정에서 S4는 G → 해당 포트를 학습한다. S3도 G → 해당 포트를 학습한다. S1도 G → 해당 포트를 학습한다.
이제 S1은 나중에 A가 G에게 프레임을 보낼 때, "G는 이 포트를 통해 가면 된다"는 정보를 갖고 있으므로 해당 포트로만 전달할 수 있다.
스위치 간 연결이 복잡해도 self-learning만으로 전체 LAN 구조를 동적으로 학습한다. 스위치 기반 이더넷이 설정 없이 동작하는 plug-and-play 네트워크를 가능하게 하는 이유다.
![[switch-based-vlan-20260110133849735.webp]]
더 구체적인 예를 보자. 호스트 C가 호스트 I에게 프레임을 보내고, 이후 I가 C에게 응답하는 상황이다. 네트워크에는 S1, S2, S3, S4 네 개의 스위치가 있다.
처음에는 모든 스위치의 테이블이 비어있다.
C → I 프레임이 C → S1 → S4 → S3 순으로 전달된다. 각 스위치가 C를 학습한다.
- S1:
C → C의 포트 - S4:
C → S1이 연결된 포트 - S3:
C → S4가 연결된 포트
I의 위치는 아직 누구도 모르므로 S3은 플러딩한다. I에게 프레임이 도달한다.
I → C 응답이 온다. 프레임이 I → S3 → S4 → S1 → C 순으로 전달된다. 각 스위치가 I를 학습한다.
- S3:
I → I 포트 - S4:
I → S3 쪽 포트 - S1:
I → S4 쪽 포트
최종 스위치 테이블 상태는 다음과 같다.
| 스위치 | 학습된 MAC 주소 | 연결 포트 |
|---|---|---|
| S1 | C | C의 포트 |
| S1 | I | S4 쪽 포트 |
| S4 | C | S1 쪽 포트 |
| S4 | I | S3 쪽 포트 |
| S3 | C | S4 쪽 포트 |
| S3 | I | I의 포트 |
실제 회사에서는 어떻게 구성될까?
![[switch-based-vlan-20260110133855540.webp]]
지금까지 스위치가 어떻게 동작하는지 살펴봤다. 그렇다면 실제 조직의 네트워크는 어떻게 구성될까?
작은 회사를 상상해보자. 사용자 PC, 메일 서버, 웹 서버가 있다. 이들은 모두 스위치를 통해 연결되어 있고, 같은 IP 서브넷(예: 192.168.1.0/24)을 공유한다.
PC에서 웹 서버로 접속하면 어떻게 될까? 같은 서브넷 내이므로 라우터를 거치지 않는다. 스위치를 통해 바로 통신된다.
그런데 PC에서 구글에 접속하려면? 외부 네트워크다. 스위치만으로는 불가능하다.
여기서 라우터가 등장한다. 라우터는 내부 네트워크를 외부 인터넷과 연결해주는 장치다. 내부에서 외부로 나가는 패킷은 반드시 라우터를 거친다. 내부 장치들은 이 라우터의 IP 주소를 기본 게이트웨이로 설정한다.
스위치만으로 충분할까?
스위치와 라우터는 겉보기에 비슷해 보인다. 둘 다 store-and-forward 장비다. 수신한 데이터를 일단 저장한 후 분석하고, 적절한 포트로 전달한다. 둘 다 내부에 forwarding table을 유지하고 참조한다.
그러나 동작하는 계층이 다르다.
| 항목 | 스위치 (Switch) | 라우터 (Router) |
|---|---|---|
| 계층 | 링크 계층 (Layer 2) | 네트워크 계층 (Layer 3) |
| 처리 단위 | 프레임 (Frame) | 데이터그램 (IP Packet) |
| 참조 주소 | MAC 주소 | IP 주소 |
| 포워딩 테이블 구성 방식 | Self-learning (프레임 관찰, flooding) | 라우팅 알고리즘으로 계산 (ex. OSPF, BGP) |
| 목적 | 동일 네트워크 내 전송 | 서로 다른 네트워크 간 라우팅 |
스위치는 MAC 주소를 보고 같은 네트워크 내에서 프레임을 전달한다. 라우터는 IP 주소를 보고 서로 다른 네트워크 간에 패킷을 라우팅한다.
A가 B에게 메시지를 보내려 했던 처음 상황으로 돌아가보자. B가 같은 네트워크에 있다면 스위치만으로 충분하다. 하지만 B가 다른 네트워크, 예를 들어 인터넷 어딘가에 있다면? 라우터가 필요하다.