스위치와 ARP
스위치의 MAC 학습과 포워딩 과정을 이해하고 ARP로 다음 홉 IP에 대응하는 MAC 주소를 찾고 진단합니다.
이더넷 프레임이 MAC 주소를 기반으로 전달된다는 것을 알았습니다.
그런데 실제 LAN에는 수십, 수백 대의 장치가 연결되어 있습니다.
프레임이 목적지까지 정확하게 도달하려면, 누군가가 이 MAC 주소는 어느 포트에 있다는 정보를 관리해야 합니다.
그 역할을 하는 장치가 스위치(Switch)이고, IP 주소로부터 MAC 주소를 알아내는 메커니즘이 ARP(Address Resolution Protocol)입니다.
스위치와 ARP는 서로 다른 문제를 풉니다.
스위치는 이미 들어온 이더넷 프레임을 어느 포트로 내보낼지 결정하고, ARP는 프레임을 만들기 전에 다음 홉 IP에 대응하는 MAC 주소를 알아냅니다.
허브 vs 스위치
| 장치 | 계층·전달 방식·통신 특성 |
|---|---|
| 허브 | L1에서 수신 신호를 입력 포트를 제외한 나머지 포트로 반복합니다. MAC 주소를 학습하지 않으며 대역폭과 충돌 도메인을 공유하는 반이중 구성이 일반적입니다. |
| 스위치 | L2에서 MAC 주소를 학습합니다. 알려진 유니캐스트는 목적지 포트로 전달하고, 모르는 유니캐스트와 브로드캐스트는 같은 VLAN의 전달 가능한 포트로 플러딩합니다. 포트별 링크를 사용하며 전이중 링크에는 충돌이 없습니다. |
MAC 주소 테이블과 학습 과정
스위치의 MAC 주소 테이블(CAM 테이블)은 어떤 MAC 주소가 어떤 포트에 연결되어 있는가를 기록합니다.
실제 장비에서는 VLAN까지 함께 묶어 VLAN + MAC 주소 → 포트 형태로 관리하는 경우가 많습니다.
학습은 자동으로 이루어집니다.
스위치는 프레임의 출발지 MAC 주소를 보고 학습합니다.
목적지 MAC 주소는 테이블 조회에 쓰이지만, 학습의 근거가 되는 값은 Source MAC입니다.
스위치의 주요 동작
- 학습: 수신 프레임의 유효한 출발지 MAC, VLAN, 입력 포트를 기록합니다.
- 포워딩: 알려진 유니캐스트 목적지의 포트로 전달합니다.
- 플러딩: 모르는 유니캐스트 목적지 또는 브로드캐스트를 입력 포트 외 같은 VLAN의 전달 가능한 포트로 보냅니다.
- 필터링: 목적지가 입력 포트와 같은 세그먼트에 있으면 그 프레임을 다른 포트로 전달하지 않습니다.
- 에이징: 타이머가 만료된 동적 학습 항목을 삭제합니다.
에이징 시간은 장비와 설정에 따라 달라지며, 300초는 흔히 볼 수 있는 예시입니다.
ARP의 동작 원리
컴퓨터 A가 같은 IPv4 서브넷과 L2 브로드캐스트 도메인(VLAN)에 있는 B에게 보내는 일반적인 예를 봅니다. Proxy ARP나 중복 IP가 없고 A의 캐시에 B의 매핑도 없는 상황입니다.
A는 B의 IP 주소는 알고 있지만, B의 MAC 주소는 모릅니다.
캐시가 없을 때의 ARP 요청과 응답
그림의 요청은 B뿐 아니라 같은 VLAN의 다른 호스트에도 전달됩니다. 응답은 이 일반적인 요청/응답 예에서 B가 A에게 유니캐스트로 보내는 경로입니다. Proxy ARP나 주소 충돌·Announcement까지 모든 ARP를 이 형태로 한정하지 않습니다.
매핑이 유효한 동안에는 캐시에서 바로 조회하므로 ARP 요청을 반복하지 않습니다.
목적지 IP가 다른 네트워크에 있으면 ARP로 최종 목적지의 MAC을 찾지 않습니다.
먼저 라우팅 테이블에서 선택된 경로의 다음 홉을 정하고, ARP로 그 다음 홉의 MAC 주소를 알아냅니다. 더 구체적인 경로가 없는 경우 기본 경로의 게이트웨이를 선택합니다.
ARP 테이블 확인 실습
아래는 명령과 출력의 예시입니다. ip neigh는 Linux 기준이며 인터페이스·주소·상태는 환경마다 다릅니다. arping은 실제 패킷을 보내고 마지막 sudo ip neigh flush all은 캐시를 변경하므로, 읽기 확인과 구분해 제어할 수 있는 실습 환경에서만 수행합니다.
# ARP 테이블 확인
arp -a
# Linux에서 상세 확인
ip neigh show
# 출력 예시:
# 192.168.1.1 dev eth0 lladdr 00:11:22:33:44:55 REACHABLE
# 192.168.1.20 dev eth0 lladdr 00:1a:2b:3c:4d:5e STALE
# Linux Neighbor Unreachability Detection 상태 의미:
# REACHABLE - 최근 통신으로 확인됨
# STALE - 확인 후 시간 경과, 재확인 필요
# DELAY - 재확인 대기 중
# PROBE - 재확인 요청 전송됨
# FAILED - 응답 없음
# 특정 IP의 MAC 주소 확인 (ARP 요청 발생)
arping -c 3 192.168.1.1
# ARP 캐시 강제 삭제
sudo ip neigh flush allGratuitous ARP
Gratuitous ARP는 넓게는 누가 물어보지 않았는데도 자신의 IPv4 주소와 MAC 주소 관계를 알리는 ARP 동작을 가리킵니다.
RFC 5227에서는 충돌 확인용 ARP Probe와 사용 시작을 알리는 ARP Announcement를 구분합니다.
-
IP 충돌 감지: 사용하려는 IP를 대상으로 ARP Probe를 보내고, 충돌 응답이나 충돌 패킷을 받으면 같은 IP를 쓰는 장치가 있다는 의미입니다.
-
ARP 캐시 갱신: 서버의 NIC를 교체했거나 가상 IP의 소유자가 바뀌었을 때, 같은 IP에 대한 MAC 주소가 변경된 것을 같은 링크의 장치들에게 알립니다.
VRRP에서도 Active Router(이전 문서의 Master)가 바뀔 때 Gratuitous ARP를 보냅니다. 이때는 가상 IP가 가리키는 가상 MAC을 유지할 수 있으며, 스위치가 그 MAC의 새 위치를 학습하는 것이 핵심입니다. 물리 라우터의 MAC으로 항상 바뀐다는 뜻은 아닙니다. RFC 9568 §6.4·§7.3
스위치의 고급 기능
STP (Spanning Tree Protocol)
네트워크 이중화를 위해 스위치 간 여러 경로를 만들면 루프가 발생할 수 있습니다.
프레임이 무한 순환하면 브로드캐스트 폭풍이 일어나고 네트워크가 마비됩니다.
- Forwarding
- Alternate · Discarding
- Link down
STP 계열 프로토콜은 BPDU를 교환해 루프가 생길 수 있는 경로를 찾고, 일부 포트를 논리적으로 차단(Blocking)하거나 RSTP/MSTP 표현으로 폐기(Discarding) 상태에 두어 트리 구조를 만듭니다.
활성 경로에 장애가 발생하면 프로토콜이 다시 수렴하여 대체 경로를 전달 상태로 바꿀 수 있습니다. 즉시 무손실 전환을 뜻하지는 않습니다.
| 계열 | 동작과 수렴 조건 |
|---|---|
| STP | 전통적인 타이머 기반 전환에서는 30~50초가 예시로 사용됩니다. 토폴로지와 설정에 따라 달라집니다. |
| RSTP | 신속 전환 조건이 맞으면 1~2초 수준의 예도 있지만, 링크 종류·이웃 호환성 등에 따라 더 걸릴 수 있습니다. |
| MSTP | 여러 VLAN을 트리 인스턴스로 묶고 빠른 전환 기능을 사용합니다. 모든 구성에서 고정된 수렴 시간을 보장하지 않습니다. |
STP(802.1D), RSTP(802.1w), MSTP(802.1s)는 자주 쓰는 역사적 표기이며, 관련 기능은 이후 IEEE 802.1 표준 계열에 통합되어 관리됩니다.
Link Aggregation (LAG)
여러 물리 링크를 하나의 논리 링크로 묶어 대역폭과 이중화를 동시에 확보합니다.
LACP는 과거 802.3ad로 많이 불렸지만, 현재는 IEEE 802.1AX Link Aggregation 표준으로 관리됩니다.
다만 LAG는 보통 해시 기반으로 흐름을 물리 링크에 분산합니다.
예를 들어 1Gbps 링크 3개를 묶어도 하나의 TCP 흐름이 항상 3Gbps를 쓰지는 않습니다. 여러 흐름을 분산할 때 총 처리량이 커질 수 있고, 한 링크가 끊기면 남은 링크로 통신하되 가용 용량이 줄어듭니다.
다음 절에서는 네트워크를 논리적으로 분리하는 VLAN과, 데이터 링크 계층에서 발생할 수 있는 보안 위협을 살펴보겠습니다.