icon

안동민 개발노트

3장 : 물리 계층과 데이터 링크 계층

스위치와 ARP


이더넷 프레임이 MAC 주소를 기반으로 전달된다는 것을 알았습니다. 그런데 실제 LAN에는 수십, 수백 대의 장치가 연결되어 있습니다. 프레임이 목적지까지 정확하게 도달하려면, 누군가가 이 MAC 주소는 어느 포트에 있다는 정보를 관리해야 합니다.

그 역할을 하는 장치가 스위치(Switch)이고, IP 주소로부터 MAC 주소를 알아내는 메커니즘이 ARP(Address Resolution Protocol)입니다.


허브 vs 스위치

허브 (Hub) — L1 장치, 신호 복제
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
        PC-A가 프레임 전송

     ┌───────┼───────┐
     │   [  HUB  ]   │
     │   │   │   │   │
     ↓   ↓   ↓   ↓   ↓
    PC-B PC-C PC-D PC-E PC-F
    (수신)(수신)(수신)(수신)(수신)
     → 모든 포트에 복제 → 대역폭 공유, 충돌 발생

스위치 (Switch) — L2 장치, MAC 학습 후 선택적 전달
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
        PC-A가 PC-D에게 프레임 전송

     ┌───────┼───────┐
     │  [ SWITCH ]   │
     │   │   │   │   │

    PC-B PC-C PC-D PC-E PC-F
              (수신)
     → MAC 테이블 참조, 해당 포트만 전달
비교허브스위치
동작 계층L1 (물리)L2 (데이터 링크)
전달 방식모든 포트에 복제목적지 포트만
충돌 도메인전체가 하나포트별 독립
대역폭공유포트별 전용
MAC 주소 인식불가학습/관리
전이중 통신불가가능

MAC 주소 테이블과 학습 과정

스위치의 MAC 주소 테이블(CAM 테이블)은 어떤 MAC 주소가 어떤 포트에 연결되어 있는가를 기록합니다. 학습은 자동으로 이루어집니다.

MAC 주소 테이블 학습 과정
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1단계: PC-A(MAC: AA)가 포트1에서 프레임 전송
       출발지 MAC: AA, 목적지 MAC: CC

       MAC 테이블
       ┌────────┬──────┬──────────┐
       │  MAC   │ Port │ Timer    │
       ├────────┼──────┼──────────┤
       │   AA   │  1   │   300s   │ ← 학습!
       └────────┴──────┴──────────┘

       CC를 모름 → 포트1 제외 전체에 플러딩

2단계: PC-C(MAC: CC)가 포트3에서 응답
       출발지 MAC: CC, 목적지 MAC: AA

       MAC 테이블
       ┌────────┬──────┬──────────┐
       │  MAC   │ Port │ Timer    │
       ├────────┼──────┼──────────┤
       │   AA   │  1   │   300s   │
       │   CC   │  3   │   300s   │ ← 학습!
       └────────┴──────┴──────────┘

       AA는 포트1 → 포트1로만 포워딩

3단계: 이후 AA ↔ CC 통신은 포트1 ↔ 포트3 직접 전달

스위치의 3가지 동작

동작조건설명
학습 (Learning)프레임 수신 시출발지 MAC + 입력 포트를 테이블에 기록
포워딩 (Forwarding)목적지 MAC이 테이블에 존재해당 포트로만 전달
플러딩 (Flooding)목적지 MAC이 테이블에 없음입력 포트 제외 모든 포트로 전달
필터링 (Filtering)출발·목적 포트 동일전달하지 않음 (같은 세그먼트)
에이징 (Aging)타이머 만료 (기본 300초)항목 자동 삭제

ARP의 동작 원리

컴퓨터 A가 같은 네트워크에 있는 컴퓨터 B에게 데이터를 보내려 합니다. A는 B의 IP 주소는 알고 있지만, B의 MAC 주소는 모릅니다.

ARP 동작 과정
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

PC-A (192.168.1.10)       SWITCH       PC-B (192.168.1.20)
MAC: AA:AA:AA              ┃           MAC: BB:BB:BB
   │                       ┃               │
   │ 1. ARP Request        ┃               │
   │ "192.168.1.20의       ┃               │
   │  MAC이 뭐야?"         ┃               │
   ├──────────────────────→┃               │
   │    DST: FF:FF:FF:FF   ┃──→ 플러딩 ──→ │
   │    (브로드캐스트)     ┃               │
   │                       ┃               │
   │                       ┃  2. ARP Reply │
   │                       ┃  "내 MAC은    │
   │                       ┃   BB:BB:BB"   │
   │←──────────────────────┃←──────────────┤
   │    DST: AA:AA:AA      ┃  (유니캐스트) │
   │    (유니캐스트)       ┃               │
   │                       ┃               │
   │ 3. ARP 캐시에 저장    ┃               │
   │ 192.168.1.20 →        ┃               │
   │   BB:BB:BB            ┃               │

ARP 요청(ARP Request)은 브로드캐스트(FF:FF:FF:FF:FF:FF)로 같은 네트워크의 모든 장치에게 전달됩니다. 해당 IP를 가진 장치만 ARP 응답(ARP Reply)을 유니캐스트로 보냅니다.

응답을 받은 A는 ARP 캐시(ARP Cache)에 매핑 정보를 저장합니다. 이후에는 캐시에서 바로 조회하므로 ARP 요청을 반복하지 않습니다.


ARP 테이블 확인 실습

arp_commands.sh
# 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

# ARP 상태 의미:
# REACHABLE - 최근 통신으로 확인됨
# STALE     - 확인 후 시간 경과, 재확인 필요
# DELAY     - 재확인 대기 중
# PROBE     - 재확인 요청 전송됨
# FAILED    - 응답 없음

# 특정 IP의 MAC 주소 확인 (ARP 요청 발생)
arping -c 3 192.168.1.1

# ARP 캐시 강제 삭제
sudo ip neigh flush all

Gratuitous ARP

Gratuitous ARP는 자신의 IP 주소를 대상으로 보내는 ARP 요청입니다. 두 가지 목적이 있습니다.

  • IP 충돌 감지: 자신의 IP로 ARP 요청을 보내 응답이 오면, 다른 장치가 같은 IP를 사용 중이라는 의미입니다.

  • ARP 캐시 갱신: 서버의 NIC를 교체했을 때, 같은 IP에 대한 MAC 주소가 변경된 것을 네트워크의 다른 장치들에게 알립니다.

VRRP(가상 라우터 이중화)에서 마스터 전환 시에도 Gratuitous ARP가 사용됩니다. 새 마스터가 이 가상 IP의 MAC 주소가 나로 바뀌었다고 알리는 것입니다.


스위치의 고급 기능

STP (Spanning Tree Protocol)

네트워크 이중화를 위해 스위치 간 여러 경로를 만들면 루프가 발생할 수 있습니다. 프레임이 무한 순환하면 브로드캐스트 폭풍이 일어나고 네트워크가 마비됩니다.

루프 발생 구조          STP 적용 후
                     
SW-A ──── SW-B         SW-A ──── SW-B
 │  ╲   ╱  │           │         │
 │   ╲ ╱   │           │         │
 │    ╳    │      →    │    ╳ (차단)
 │   ╱ ╲   │           │         │
 │  ╱   ╲  │           │         │
SW-C ──── SW-D         SW-C ──── SW-D

STP는 루프를 감지하고 논리적으로 하나의 경로를 차단(Blocking)하여 트리 구조를 만듭니다. 활성 경로에 장애가 발생하면 차단된 경로를 자동으로 활성화합니다.

STP 버전수렴 시간특징
STP (802.1D)30~50초원본 표준
RSTP (802.1w)1~2초빠른 수렴
MSTP (802.1s)1~2초VLAN별 트리

여러 물리 링크를 하나의 논리 링크로 묶어 대역폭과 이중화를 동시에 확보합니다. LACP(802.3ad)가 표준 프로토콜입니다.

서버 ═══╡ eth0 ╞═══╗
       ╡ eth1 ╞═══╬═══ 스위치
       ╡ eth2 ╞═══╝

3 x 1Gbps = 논리적 3Gbps, 하나 끊겨도 2Gbps 유지

다음 절에서는 네트워크를 논리적으로 분리하는 VLAN과, 데이터 링크 계층에서 발생할 수 있는 보안 위협을 살펴보겠습니다.

목차