스위치와 라우터에서의 데이터 전달과 처리

스위치와 라우터에서의 데이터 전달과 처리

33. 스위치와 라우터에서의 데이터 전달과 처리

네트워크에서 데이터가 출발지에서 목적지까지 전달되는 과정에서 스위치와 라우터는 중요한 역할을 합니다. 스위치는 같은 네트워크 내에서 MAC 주소를 기반으로 데이터를 전달하고, 라우터는 서로 다른 네트워크 간에 IP 주소를 기반으로 데이터를 라우팅합니다.

33-1. 네트워크 장비와 OSI 계층

스위치와 라우터의 OSI 계층 대응

┌──────────────────────────────────────────────────────────┐
│              네트워크 장비와 OSI 계층                      │
├──────────────┬───────────────┬───────────────────────────┤
│ OSI 계층      │ 스위치        │ 라우터                    │
├──────────────┼───────────────┼───────────────────────────┤
│ 7. 응용       │               │                           │
│ 6. 표현       │               │                           │
│ 5. 세션       │               │                           │
│ 4. 전송       │               │                           │
├──────────────┼───────────────┼───────────────────────────┤
│ 3. 네트워크   │               │ ✓ 라우팅, IP 주소 처리     │
├──────────────┼───────────────┼───────────────────────────┤
│ 2. 데이터링크 │ ✓ MAC 주소    │ ✓ MAC 주소 변경            │
│              │   처리        │                           │
├──────────────┼───────────────┼───────────────────────────┤
│ 1. 물리       │ ✓ 전기 신호   │ ✓ 전기 신호 변환           │
│              │   변환        │                           │
└──────────────┴───────────────┴───────────────────────────┘

스위치 (L2 Switch):

  • 동작 계층: 물리 계층 + 데이터링크 계층
  • 주요 기능: MAC 주소 기반 프레임 전달
  • 사용 범위: 같은 네트워크(LAN) 내부
  • MAC 주소 테이블 관리

라우터 (Router):

  • 동작 계층: 물리 계층 + 데이터링크 계층 + 네트워크 계층
  • 주요 기능: IP 주소 기반 패킷 라우팅
  • 사용 범위: 서로 다른 네트워크 간 연결
  • 라우팅 테이블 관리

33-2. 전체 데이터 전달 과정 개요

네트워크 구성도

[컴퓨터 A]              [라우터 A]              [라우터 B]              [웹 서버]
192.168.1.10            172.16.0.1              192.168.10.1            192.168.10.100
    │                       │                       │                       │
    │  LAN 1                │  WAN                  │  LAN 2                │
    │  192.168.1.0/24       │  172.16.0.0/16        │  192.168.10.0/24      │
    │                       │                       │                       │
┌───┴────┐            ┌─────┴──────┐          ┌─────┴──────┐          ┌────┴────┐
│스위치 A │            │  라우터 A  │          │  라우터 B  │          │스위치 B │
└────────┘            │ LAN:       │          │ LAN:       │          └─────────┘
                      │ 192.168.1.1│          │ 192.168.10.1│
                      │ WAN:       │          │ WAN:       │
                      │ 172.16.0.1 │          │ 172.16.0.2 │
                      └────────────┘          └────────────┘

단계별 데이터 흐름

1단계: 컴퓨터 A → 스위치 A
   - 컴퓨터 A가 이더넷 프레임 생성
   - 목적지 MAC: 게이트웨이(라우터 A)의 MAC
   - 목적지 IP: 192.168.10.100 (웹 서버)
   - 전기 신호로 전송

2단계: 스위치 A → 라우터 A
   - 스위치 A가 MAC 주소 테이블 확인
   - 라우터 A가 연결된 포트로 전달
   - 물리/데이터링크 계층만 처리

3단계: 라우터 A에서 처리
   - 역캡슐화: 이더넷 헤더 제거
   - IP 헤더 확인: 목적지 IP 192.168.10.100
   - 라우팅 테이블 조회
   - NAT: 출발지 IP 변경 (192.168.1.10 → 172.16.0.1)
   - 재캡슐화: 새 이더넷 헤더 추가
   - 목적지 MAC: 라우터 B의 WAN 측 MAC

4단계: 라우터 A → 라우터 B (WAN)
   - WAN 구간 전송
   - 172.16.0.1 → 172.16.0.2

5단계: 라우터 B에서 처리
   - 역캡슐화: 이더넷 헤더 제거
   - IP 헤더 확인
   - 라우팅 테이블 조회
   - NAT: 출발지 IP 변경 (172.16.0.1 → 192.168.10.1)
   - 재캡슐화: 새 이더넷 헤더 추가
   - 목적지 MAC: 웹 서버의 MAC

6단계: 라우터 B → 스위치 B → 웹 서버
   - 스위치 B가 MAC 주소 기반 전달
   - 웹 서버가 프레임 수신

33-3. 스위치에서의 데이터 처리

스위치의 역할

스위치는 **데이터링크 계층(Layer 2)**에서 동작하며, MAC 주소를 기반으로 프레임을 전달합니다.

┌─────────────────────────────────────────────────────────┐
│               스위치 내부 처리 과정                      │
└─────────────────────────────────────────────────────────┘

포트 1 ───→ [물리 계층]
              ↓ 전기 신호 수신
           [데이터링크 계층]
              ↓
         ┌────────────────┐
         │ 1. MAC 주소     │
         │    학습         │
         │    (출발지 MAC) │
         └────────────────┘
              ↓
         ┌────────────────┐
         │ 2. MAC 주소     │
         │    테이블 조회  │
         │    (목적지 MAC) │
         └────────────────┘
              ↓
         ┌────────────────┐
         │ 3. 포워딩       │
         │    결정         │
         └────────────────┘
              ↓
         [물리 계층]
              ↓ 전기 신호 송신
포트 3 ←──────

MAC 주소 테이블 (MAC Address Table)

스위치는 MAC 주소와 포트의 대응 관계를 MAC 주소 테이블에 저장합니다:

┌──────┬───────────────────┬──────────┐
│ 포트 │ MAC 주소          │ 에이징   │
├──────┼───────────────────┼──────────┤
│  1   │ AA:BB:CC:DD:EE:FF │ 300초    │
│  2   │ 11:22:33:44:55:66 │ 300초    │
│  3   │ 77:88:99:AA:BB:CC │ 300초    │
│  4   │ 00:11:22:33:44:55 │ 300초    │
└──────┴───────────────────┴──────────┘

에이징 (Aging):
- 일정 시간(기본 300초) 동안 사용되지 않으면 삭제
- 네트워크 변경 시 자동으로 업데이트

스위치의 전달 방식

1. 유니캐스트 (Unicast):
   목적지 MAC이 테이블에 있음
   ┌─────────┐
   │ 스위치  │
   ├─────────┤
   │1 ← A    │ 포트 1에서 프레임 수신
   │2        │ 목적지 MAC: B의 MAC
   │3 → B    │ 테이블 조회 → 포트 3으로 전달
   │4        │
   └─────────┘

2. 플러딩 (Flooding):
   목적지 MAC이 테이블에 없음
   ┌─────────┐
   │ 스위치  │
   ├─────────┤
   │1 ← A    │ 포트 1에서 프레임 수신
   │2 → ?    │ 목적지 MAC을 모름
   │3 → ?    │ 모든 포트로 전달 (플러딩)
   │4 → ?    │ (출발지 포트 제외)
   └─────────┘

3. 브로드캐스트:
   목적지 MAC: FF:FF:FF:FF:FF:FF
   ┌─────────┐
   │ 스위치  │
   ├─────────┤
   │1 ← A    │ 포트 1에서 브로드캐스트 수신
   │2 → All  │ 모든 포트로 전달
   │3 → All  │ (출발지 포트 제외)
   │4 → All  │
   └─────────┘

MAC 주소 학습 과정

초기 상태:
MAC 주소 테이블: (비어있음)

1. 포트 1에서 프레임 수신
   출발지 MAC: AA:BB:CC:DD:EE:FF
   목적지 MAC: 11:22:33:44:55:66

   → 학습: 포트 1 = AA:BB:CC:DD:EE:FF

2. 목적지 MAC이 테이블에 없음
   → 플러딩: 포트 2, 3, 4로 전달

3. 포트 3에서 응답 프레임 수신
   출발지 MAC: 11:22:33:44:55:66
   목적지 MAC: AA:BB:CC:DD:EE:FF

   → 학습: 포트 3 = 11:22:33:44:55:66

4. 목적지 MAC이 테이블에 있음
   → 유니캐스트: 포트 1로만 전달

최종 MAC 주소 테이블:
┌──────┬───────────────────┐
│ 포트 │ MAC 주소          │
├──────┼───────────────────┤
│  1   │ AA:BB:CC:DD:EE:FF │
│  3   │ 11:22:33:44:55:66 │
└──────┴───────────────────┘

스위치 명령어

# Cisco 스위치 명령어

# MAC 주소 테이블 확인
Switch# show mac address-table

# 출력 예시
Mac Address Table
-------------------------------------------
Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
   1    aabb.ccdd.eeff    DYNAMIC     Fa0/1
   1    1122.3344.5566    DYNAMIC     Fa0/3
   1    7788.99aa.bbcc    DYNAMIC     Fa0/4

# 특정 인터페이스의 MAC 주소 확인
Switch# show mac address-table interface FastEthernet 0/1

# MAC 주소 테이블 삭제 (전체)
Switch# clear mac address-table dynamic

# 특정 MAC 주소 삭제
Switch# clear mac address-table dynamic address aabb.ccdd.eeff

# 에이징 타임 설정
Switch(config)# mac address-table aging-time 600

33-4. 라우터에서의 데이터 처리

라우터의 역할

라우터는 **네트워크 계층(Layer 3)**까지 동작하며, IP 주소를 기반으로 패킷을 라우팅합니다.

┌─────────────────────────────────────────────────────────┐
│               라우터 내부 처리 과정                      │
└─────────────────────────────────────────────────────────┘

WAN 포트 ───→ [물리 계층]
                ↓ 전기 신호 수신
              [데이터링크 계층]
                ↓ 이더넷 프레임 수신
              ┌──────────────────┐
              │ 1. 목적지 MAC     │
              │    주소 확인      │
              │    (내 MAC과 비교)│
              └──────────────────┘
                ↓ 맞으면 계속
              ┌──────────────────┐
              │ 2. 역캡슐화       │
              │    (이더넷 헤더   │
              │     제거)         │
              └──────────────────┘
                ↓
              [네트워크 계층]
                ↓ IP 패킷 처리
              ┌──────────────────┐
              │ 3. 목적지 IP      │
              │    주소 확인      │
              └──────────────────┘
                ↓
              ┌──────────────────┐
              │ 4. 라우팅 테이블  │
              │    조회           │
              └──────────────────┘
                ↓
              ┌──────────────────┐
              │ 5. TTL 감소       │
              │    (1 감소)       │
              └──────────────────┘
                ↓
              ┌──────────────────┐
              │ 6. NAT 처리       │
              │    (필요시)       │
              └──────────────────┘
                ↓
              [데이터링크 계층]
                ↓
              ┌──────────────────┐
              │ 7. 재캡슐화       │
              │    (새 이더넷     │
              │     헤더 추가)    │
              └──────────────────┘
                ↓
              [물리 계층]
                ↓ 전기 신호 송신
LAN 포트 ←──────

라우팅 테이블 (Routing Table)

라우터는 라우팅 테이블을 참조하여 패킷을 어디로 보낼지 결정합니다:

┌─────────────────┬─────────────┬──────────┬─────────┬──────┐
│ 목적지 네트워크  │ 넷마스크    │게이트웨이│인터페이스│메트릭│
├─────────────────┼─────────────┼──────────┼─────────┼──────┤
│ 192.168.1.0     │ 255.255.255.0│ *        │ eth0    │  0   │
│ 192.168.10.0    │ 255.255.255.0│172.16.0.2│ eth1    │  1   │
│ 172.16.0.0      │ 255.255.0.0  │ *        │ eth1    │  0   │
│ 0.0.0.0         │ 0.0.0.0      │172.16.0.254│eth1   │  10  │
└─────────────────┴─────────────┴──────────┴─────────┴──────┘
                                                    ↑
                                              기본 경로 (Default Route)

설명:
- 목적지 네트워크: 목적지 IP의 네트워크 주소
- 넷마스크: 네트워크 범위 지정
- 게이트웨이:
  - *: 직접 연결됨 (다음 홉 없음)
  - IP: 다음 홉 라우터의 IP
- 인터페이스: 패킷을 보낼 네트워크 인터페이스
- 메트릭: 경로의 비용 (낮을수록 우선)

라우팅 테이블 조회 과정

예시: 목적지 IP = 192.168.10.100

1단계: 라우팅 테이블 순회
┌─────────────────┬─────────────┬──────────┐
│ 192.168.1.0     │ /24         │ eth0     │ ← 192.168.10.100과 매칭 안 됨
│ 192.168.10.0    │ /24         │ eth1     │ ← 192.168.10.100과 매칭! ✓
│ 172.16.0.0      │ /16         │ eth1     │
│ 0.0.0.0         │ /0          │ eth1     │
└─────────────────┴─────────────┴──────────┘

2단계: 매칭 확인
192.168.10.100 & 255.255.255.0 = 192.168.10.0 ✓

3단계: 포워딩 결정
게이트웨이: 172.16.0.2
인터페이스: eth1

4단계: 다음 홉으로 전송
패킷을 172.16.0.2로 전달

라우팅 테이블 명령어

# Linux 라우팅 테이블 확인
ip route show
# 또는
route -n

# 출력 예시
default via 192.168.0.1 dev eth0
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.10
172.16.0.0/16 via 192.168.0.1 dev eth0

# 특정 목적지로의 경로 확인
ip route get 192.168.10.100

# 출력 예시
192.168.10.100 via 172.16.0.2 dev eth1 src 172.16.0.1

# 정적 라우트 추가
sudo ip route add 192.168.10.0/24 via 172.16.0.2 dev eth1

# 정적 라우트 삭제
sudo ip route del 192.168.10.0/24

# 기본 경로 추가
sudo ip route add default via 192.168.0.1

# Windows 라우팅 테이블 확인
route print

# Windows 정적 라우트 추가
route add 192.168.10.0 mask 255.255.255.0 172.16.0.2

# Cisco 라우터 명령어
Router# show ip route

# 출력 예시
Gateway of last resort is 172.16.0.254 to network 0.0.0.0

C    192.168.1.0/24 is directly connected, GigabitEthernet0/0
L    192.168.1.1/32 is directly connected, GigabitEthernet0/0
S    192.168.10.0/24 [1/0] via 172.16.0.2
C    172.16.0.0/16 is directly connected, GigabitEthernet0/1
S*   0.0.0.0/0 [10/0] via 172.16.0.254

# 정적 라우트 추가
Router(config)# ip route 192.168.10.0 255.255.255.0 172.16.0.2

33-5. 라우터 A에서의 상세 처리 과정

수신 단계 (컴퓨터 A → 라우터 A)

1. 물리 계층: 전기 신호 수신
━━━━┓    ┏━━━━┓    ┏━━━━┓    ┏━━━━
    ┗━━━━┛    ┗━━━━┛    ┗━━━━┛
         ↓
디지털 데이터로 변환

2. 데이터링크 계층: 이더넷 프레임 확인
┌──────────────────────────────────────────┐
│ 이더넷 헤더                               │
├──────────────────────────────────────────┤
│ 목적지 MAC: 00:11:22:33:44:55            │ ← 라우터 A의 LAN 측 MAC
│ 출발지 MAC: AA:BB:CC:DD:EE:FF            │ ← 컴퓨터 A의 MAC
│ 타입: 0x0800 (IPv4)                      │
└──────────────────────────────────────────┘

✓ 목적지 MAC 확인: 내 MAC과 일치 → 수신
✗ 목적지 MAC 불일치 → 폐기

3. 역캡슐화: 이더넷 헤더 제거
┌──────────────────────────────────────────┐
│ IP 헤더                                  │
├──────────────────────────────────────────┤
│ 출발지 IP: 192.168.1.10                  │ ← 컴퓨터 A
│ 목적지 IP: 192.168.10.100                │ ← 웹 서버
│ TTL: 64                                  │
│ 프로토콜: 6 (TCP)                         │
└──────────────────────────────────────────┘

라우팅 단계

4. 네트워크 계층: 라우팅 결정

목적지 IP: 192.168.10.100

라우팅 테이블 조회:
┌─────────────────┬─────────────┬──────────┬─────────┐
│ 목적지          │ 넷마스크    │게이트웨이│인터페이스│
├─────────────────┼─────────────┼──────────┼─────────┤
│ 192.168.1.0     │ /24         │ *        │ eth0    │ ← 내부 LAN
│ 172.16.0.0      │ /16         │ *        │ eth1    │ ← WAN
│ 192.168.10.0    │ /24         │172.16.0.2│ eth1    │ ← 매칭! ✓
│ 0.0.0.0         │ /0          │172.16.0.254│eth1   │
└─────────────────┴─────────────┴──────────┴─────────┘

결정:
- 다음 홉: 172.16.0.2 (라우터 B)
- 인터페이스: eth1 (WAN 측)

5. TTL 감소
TTL: 64 → 63

6. NAT (Network Address Translation)
출발지 IP 변경:
192.168.1.10 → 172.16.0.1 (라우터 A의 WAN IP)

NAT 테이블 기록:
┌─────────────┬──────┬─────────────┬──────┐
│ 내부 IP     │ 포트 │ 외부 IP     │ 포트 │
├─────────────┼──────┼─────────────┼──────┤
│192.168.1.10 │54321 │172.16.0.1   │54321 │
└─────────────┴──────┴─────────────┴──────┘

송신 단계 (라우터 A → 라우터 B)

7. ARP 조회 (다음 홉의 MAC 주소 확인)
다음 홉: 172.16.0.2

ARP 테이블 조회:
┌─────────────┬───────────────────┐
│ IP 주소     │ MAC 주소          │
├─────────────┼───────────────────┤
│172.16.0.2   │ 66:77:88:99:AA:BB │ ← 라우터 B의 WAN MAC
└─────────────┴───────────────────┘

없으면 ARP 요청 전송:
"172.16.0.2의 MAC 주소가 뭐야?"

8. 데이터링크 계층: 재캡슐화 (새 이더넷 헤더)
┌──────────────────────────────────────────┐
│ 이더넷 헤더 (변경됨!)                     │
├──────────────────────────────────────────┤
│ 목적지 MAC: 66:77:88:99:AA:BB            │ ← 라우터 B의 WAN MAC
│ 출발지 MAC: 00:11:22:33:44:55            │ ← 라우터 A의 WAN MAC
│ 타입: 0x0800 (IPv4)                      │
└──────────────────────────────────────────┘
┌──────────────────────────────────────────┐
│ IP 헤더 (일부 변경됨!)                    │
├──────────────────────────────────────────┤
│ 출발지 IP: 172.16.0.1                    │ ← NAT으로 변경됨
│ 목적지 IP: 192.168.10.100                │ ← 유지
│ TTL: 63                                  │ ← 1 감소
│ 프로토콜: 6 (TCP)                         │
└──────────────────────────────────────────┘

9. 물리 계층: 전기 신호로 변환 및 전송
디지털 데이터
    ↓
전기 신호로 변환
    ↓
WAN 인터페이스(eth1)로 전송

33-6. 라우터 B에서의 상세 처리 과정

수신 단계 (라우터 A → 라우터 B)

1. 물리 계층: 전기 신호 수신 (WAN 측)

2. 데이터링크 계층: 이더넷 프레임 확인
┌──────────────────────────────────────────┐
│ 이더넷 헤더                               │
├──────────────────────────────────────────┤
│ 목적지 MAC: 66:77:88:99:AA:BB            │ ← 라우터 B의 WAN MAC
│ 출발지 MAC: 00:11:22:33:44:55            │ ← 라우터 A의 WAN MAC
│ 타입: 0x0800 (IPv4)                      │
└──────────────────────────────────────────┘

✓ 목적지 MAC 확인: 내 MAC과 일치 → 수신

3. 역캡슐화: 이더넷 헤더 제거
┌──────────────────────────────────────────┐
│ IP 헤더                                  │
├──────────────────────────────────────────┤
│ 출발지 IP: 172.16.0.1                    │ ← 라우터 A
│ 목적지 IP: 192.168.10.100                │ ← 웹 서버
│ TTL: 63                                  │
│ 프로토콜: 6 (TCP)                         │
└──────────────────────────────────────────┘

라우팅 단계

4. 네트워크 계층: 라우팅 결정

목적지 IP: 192.168.10.100

라우팅 테이블 조회:
┌─────────────────┬─────────────┬──────────┬─────────┐
│ 목적지          │ 넷마스크    │게이트웨이│인터페이스│
├─────────────────┼─────────────┼──────────┼─────────┤
│ 192.168.10.0    │ /24         │ *        │ eth0    │ ← 매칭! ✓
│ 172.16.0.0      │ /16         │ *        │ eth1    │ ← WAN
│ 0.0.0.0         │ /0          │172.16.0.254│eth1   │
└─────────────────┴─────────────┴──────────┴─────────┘

결정:
- 게이트웨이: * (직접 연결됨)
- 인터페이스: eth0 (LAN 측)

5. TTL 감소
TTL: 63 → 62

6. NAT 역변환 (Destination NAT 또는 Port Forwarding)
필요한 경우 목적지 IP 변경
(이 예시에서는 웹 서버가 실제 192.168.10.100이므로 변경 없음)

송신 단계 (라우터 B → 웹 서버)

7. ARP 조회
목적지: 192.168.10.100

ARP 테이블 조회:
┌─────────────────┬───────────────────┐
│ IP 주소         │ MAC 주소          │
├─────────────────┼───────────────────┤
│192.168.10.100   │ CC:DD:EE:FF:00:11 │ ← 웹 서버의 MAC
└─────────────────┴───────────────────┘

8. 데이터링크 계층: 재캡슐화 (새 이더넷 헤더)
┌──────────────────────────────────────────┐
│ 이더넷 헤더 (변경됨!)                     │
├──────────────────────────────────────────┤
│ 목적지 MAC: CC:DD:EE:FF:00:11            │ ← 웹 서버의 MAC
│ 출발지 MAC: 99:AA:BB:CC:DD:EE            │ ← 라우터 B의 LAN MAC
│ 타입: 0x0800 (IPv4)                      │
└──────────────────────────────────────────┘
┌──────────────────────────────────────────┐
│ IP 헤더                                  │
├──────────────────────────────────────────┤
│ 출발지 IP: 172.16.0.1                    │ ← 유지
│ 목적지 IP: 192.168.10.100                │ ← 유지
│ TTL: 62                                  │ ← 1 감소
│ 프로토콜: 6 (TCP)                         │
└──────────────────────────────────────────┘

9. 물리 계층: 전기 신호로 변환
    ↓
스위치 B로 전송
    ↓
스위치 B가 웹 서버로 전달

33-7. 전체 패킷 변화 과정 요약

MAC 주소와 IP 주소의 변화

구간 1: 컴퓨터 A → 스위치 A → 라우터 A (LAN 1)
┌──────────────────────────────────────────────────────┐
│ 이더넷 헤더                                          │
├──────────────────────────────────────────────────────┤
│ 출발지 MAC: AA:BB:CC:DD:EE:FF (컴퓨터 A)             │
│ 목적지 MAC: 00:11:22:33:44:55 (라우터 A LAN)         │
├──────────────────────────────────────────────────────┤
│ IP 헤더                                              │
├──────────────────────────────────────────────────────┤
│ 출발지 IP: 192.168.1.10 (컴퓨터 A)                   │
│ 목적지 IP: 192.168.10.100 (웹 서버)                  │
└──────────────────────────────────────────────────────┘

구간 2: 라우터 A → 라우터 B (WAN)
┌──────────────────────────────────────────────────────┐
│ 이더넷 헤더 (변경!)                                  │
├──────────────────────────────────────────────────────┤
│ 출발지 MAC: 00:11:22:33:44:55 (라우터 A WAN)         │
│ 목적지 MAC: 66:77:88:99:AA:BB (라우터 B WAN)         │
├──────────────────────────────────────────────────────┤
│ IP 헤더 (출발지 변경!)                               │
├──────────────────────────────────────────────────────┤
│ 출발지 IP: 172.16.0.1 (라우터 A, NAT 변경)           │
│ 목적지 IP: 192.168.10.100 (웹 서버)                  │
└──────────────────────────────────────────────────────┘

구간 3: 라우터 B → 스위치 B → 웹 서버 (LAN 2)
┌──────────────────────────────────────────────────────┐
│ 이더넷 헤더 (변경!)                                  │
├──────────────────────────────────────────────────────┤
│ 출발지 MAC: 99:AA:BB:CC:DD:EE (라우터 B LAN)         │
│ 목적지 MAC: CC:DD:EE:FF:00:11 (웹 서버)              │
├──────────────────────────────────────────────────────┤
│ IP 헤더                                              │
├──────────────────────────────────────────────────────┤
│ 출발지 IP: 172.16.0.1 (라우터 A)                     │
│ 목적지 IP: 192.168.10.100 (웹 서버)                  │
└──────────────────────────────────────────────────────┘

핵심 포인트:

  • MAC 주소: 각 홉(hop)마다 변경됨 (출발지 = 현재 장비, 목적지 = 다음 홉)
  • IP 주소: 종단 간(end-to-end) 유지 (NAT가 없다면)
  • NAT 사용 시: 출발지 IP가 변경될 수 있음

33-8. NAT (Network Address Translation)

NAT의 필요성

문제: IPv4 주소 부족
- IPv4 주소: 약 43억 개
- 전 세계 인터넷 기기: 수백억 개

해결: NAT
- 사설 IP 주소를 공인 IP 주소로 변환
- 하나의 공인 IP로 여러 기기가 인터넷 접속

NAT 동작 원리

내부 네트워크 (사설 IP)
┌────────────────────────────────┐
│ 컴퓨터 A: 192.168.1.10         │
│ 컴퓨터 B: 192.168.1.20         │
│ 컴퓨터 C: 192.168.1.30         │
└────────────────────────────────┘
         │
         │
    ┌────┴─────┐
    │ NAT 라우터│
    │ 내부: 192.168.1.1          │
    │ 외부: 203.0.113.10 (공인)  │
    └────┬─────┘
         │
         │
    인터넷

NAT 테이블

송신 시 (내부 → 외부):
┌──────────────┬──────┬──────────────┬──────┐
│ 내부 IP      │ 포트 │ 외부 IP      │ 포트 │
├──────────────┼──────┼──────────────┼──────┤
│192.168.1.10  │54321 │203.0.113.10  │54321 │
│192.168.1.20  │54322 │203.0.113.10  │54322 │
│192.168.1.30  │54323 │203.0.113.10  │54323 │
└──────────────┴──────┴──────────────┴──────┘

패킷 변환:
출발지: 192.168.1.10:54321 → 203.0.113.10:54321
목적지: 93.184.216.34:80   → 93.184.216.34:80 (변경 없음)

수신 시 (외부 → 내부):
목적지: 203.0.113.10:54321 → 192.168.1.10:54321
출발지: 93.184.216.34:80   → 93.184.216.34:80 (변경 없음)

NAT 종류

1. Static NAT (정적 NAT):
   - 1:1 매핑
   - 내부 IP 1개 ↔ 외부 IP 1개
   - 서버 운영 시 사용

   예시:
   192.168.1.100 (내부 웹 서버) ↔ 203.0.113.100 (공인 IP)

2. Dynamic NAT (동적 NAT):
   - N:M 매핑
   - 내부 IP 여러 개 ↔ 외부 IP 풀
   - 공인 IP 풀에서 동적 할당

   예시:
   내부: 192.168.1.10, .20, .30
   외부 풀: 203.0.113.10, .11, .12
   (사용 가능한 외부 IP 중 하나 할당)

3. PAT (Port Address Translation) / NAT Overload:
   - N:1 매핑 (가장 일반적)
   - 포트 번호로 구분
   - 가정/소규모 사무실에서 주로 사용

   예시:
   192.168.1.10:54321 → 203.0.113.10:54321
   192.168.1.20:54322 → 203.0.113.10:54322
   192.168.1.30:54323 → 203.0.113.10:54323

NAT 설정 (Linux iptables)

# NAT 활성화 (IP 포워딩)
sudo sysctl -w net.ipv4.ip_forward=1

# 영구 설정
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf

# MASQUERADE (PAT) 설정
sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

# 포트 포워딩 (외부 → 내부 웹 서버)
sudo iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80

# NAT 테이블 확인
sudo iptables -t nat -L -v

# NAT 연결 추적 확인
cat /proc/net/nf_conntrack

33-9. 스위치와 라우터의 차이점

비교표

┌──────────────┬──────────────────┬──────────────────────┐
│ 특성         │ 스위치           │ 라우터               │
├──────────────┼──────────────────┼──────────────────────┤
│ OSI 계층     │ Layer 2          │ Layer 3              │
│              │ (데이터링크)     │ (네트워크)           │
├──────────────┼──────────────────┼──────────────────────┤
│ 주소 기반    │ MAC 주소         │ IP 주소              │
├──────────────┼──────────────────┼──────────────────────┤
│ 테이블       │ MAC 주소 테이블  │ 라우팅 테이블        │
├──────────────┼──────────────────┼──────────────────────┤
│ PDU          │ 프레임 (Frame)   │ 패킷 (Packet)        │
├──────────────┼──────────────────┼──────────────────────┤
│ 사용 범위    │ 같은 네트워크    │ 다른 네트워크 간     │
│              │ (LAN)            │ (WAN)                │
├──────────────┼──────────────────┼──────────────────────┤
│ 브로드캐스트 │ 전달함           │ 차단함               │
│ 도메인       │ (브로드캐스트    │ (브로드캐스트        │
│              │  도메인 분리 X)  │  도메인 분리 O)      │
├──────────────┼──────────────────┼──────────────────────┤
│ 주요 기능    │ 프레임 전달      │ 라우팅, NAT,         │
│              │                  │ 방화벽, VPN          │
├──────────────┼──────────────────┼──────────────────────┤
│ 처리 속도    │ 빠름             │ 느림 (더 많은 처리)  │
├──────────────┼──────────────────┼──────────────────────┤
│ 가격         │ 저렴             │ 비쌈                 │
├──────────────┼──────────────────┼──────────────────────┤
│ 용도         │ 네트워크 확장    │ 네트워크 연결,       │
│              │                  │ 인터넷 연결          │
└──────────────┴──────────────────┴──────────────────────┘

L3 스위치 (Layer 3 Switch)

스위치와 라우터의 기능을 결합한 장비:

┌─────────────────────────────────────────┐
│         L3 스위치 특징                  │
├─────────────────────────────────────────┤
│ • Layer 2 스위칭 + Layer 3 라우팅       │
│ • VLAN 간 라우팅                        │
│ • 하드웨어 기반 고속 라우팅             │
│ • 주로 내부 네트워크에서 사용           │
│ • 라우터보다 빠르고 저렴                │
└─────────────────────────────────────────┘

사용 시나리오:
┌──────────────┐
│ VLAN 10      │ ┐
│ 192.168.10.0 │ │
└──────────────┘ │
                 ├─ L3 스위치가 VLAN 간 라우팅
┌──────────────┐ │
│ VLAN 20      │ │
│ 192.168.20.0 │ │
└──────────────┘ ┘

33-10. 실습: 패킷 경로 추적

traceroute/tracert로 경로 확인

# Linux/Mac
traceroute www.google.com

# Windows
tracert www.google.com

# 예시 출력
traceroute to www.google.com (142.250.207.36), 30 hops max
 1  gateway (192.168.1.1)  1.234 ms  ← 라우터 A (내 게이트웨이)
 2  10.0.0.1 (10.0.0.1)  5.432 ms   ← ISP 라우터
 3  203.0.113.1 (203.0.113.1)  10.123 ms
 4  198.51.100.1 (198.51.100.1)  15.234 ms
 5  * * *                          ← 응답 없음 (방화벽)
 6  142.250.207.36 (142.250.207.36)  20.456 ms  ← 목적지

traceroute 동작 원리:

1. TTL=1인 패킷 전송
   → 첫 번째 라우터가 "TTL Exceeded" ICMP 응답
   → 첫 번째 홉 확인

2. TTL=2인 패킷 전송
   → 두 번째 라우터가 "TTL Exceeded" ICMP 응답
   → 두 번째 홉 확인

3. TTL을 1씩 증가시키며 반복
   → 목적지에 도달할 때까지

MTR (My Traceroute)

traceroute와 ping을 결합한 도구:

# Linux
sudo apt install mtr
mtr www.google.com

# 출력 예시
HOST: mypc                  Loss%   Snt   Last   Avg  Best  Wrst
  1.|-- gateway              0.0%    10    1.2   1.3   1.1   1.5
  2.|-- 10.0.0.1             0.0%    10    5.4   5.6   5.2   6.1
  3.|-- 203.0.113.1          0.0%    10   10.1  10.3   9.8  11.2
  4.|-- 198.51.100.1        10.0%    10   15.2  15.8  15.0  17.3
  5.|-- 142.250.207.36       0.0%    10   20.4  20.6  20.1  21.8

tcpdump로 라우터 처리 확인

# 라우터에서 패킷 캡처
sudo tcpdump -i any -n host 192.168.10.100

# 출력 예시
# 입력 패킷 (eth0, LAN 측)
10:30:00.123 IP 192.168.1.10.54321 > 192.168.10.100.80: Flags [S], seq 1
    입력 인터페이스: eth0
    출발지: 192.168.1.10 (컴퓨터 A)
    목적지: 192.168.10.100 (웹 서버)

# 출력 패킷 (eth1, WAN 측)
10:30:00.124 IP 172.16.0.1.54321 > 192.168.10.100.80: Flags [S], seq 1
    출력 인터페이스: eth1
    출발지: 172.16.0.1 (NAT 변경!)
    목적지: 192.168.10.100 (유지)

33-11. 문제 해결

라우팅 문제 진단

# 1. 로컬 네트워크 연결 확인
ping 192.168.1.1  # 게이트웨이

# 2. DNS 확인
ping 8.8.8.8      # Google DNS (IP로 직접)
ping google.com   # 도메인 이름으로

# IP는 되는데 도메인은 안 되면 → DNS 문제

# 3. 경로 확인
traceroute google.com

# 4. 라우팅 테이블 확인
ip route show

# 5. ARP 테이블 확인
arp -a

# 6. 방화벽 확인
sudo iptables -L -v

일반적인 문제와 해결

문제 1: 게이트웨이에 ping이 안 됨
원인:
- 물리적 연결 문제 (케이블, 스위치)
- IP 설정 오류
- 서브넷 마스크 오류

해결:
- 케이블 확인
- IP 설정 확인: ip addr show
- 게이트웨이 설정 확인: ip route show

문제 2: 게이트웨이는 되는데 인터넷이 안 됨
원인:
- 라우터의 인터넷 연결 문제
- NAT 설정 문제
- DNS 문제

해결:
- 라우터에서 인터넷 연결 확인
- NAT 설정 확인
- DNS 서버 변경: /etc/resolv.conf

문제 3: 특정 사이트만 안 됨
원인:
- 방화벽 차단
- 라우팅 문제
- 목적지 서버 문제

해결:
- traceroute로 경로 확인
- 방화벽 규칙 확인
- 다른 네트워크에서 테스트

문제 4: 느린 네트워크
원인:
- 대역폭 부족
- 패킷 손실
- 라우팅 루프

해결:
- mtr로 패킷 손실 확인
- 대역폭 측정
- 라우팅 테이블 확인 (루프 검사)

정리

스위치의 역할

OSI 계층:
  - 물리 계층 (Layer 1)
  - 데이터링크 계층 (Layer 2)

주소:
  - MAC 주소 기반

테이블:
  - MAC 주소 테이블 관리
  - 출발지 MAC 학습
  - 목적지 MAC으로 포워딩

동작:
  - 유니캐스트: 특정 포트로 전달
  - 플러딩: 알 수 없는 MAC은 전체 포트로
  - 브로드캐스트: 모든 포트로 전달

사용:
  - 같은 네트워크(LAN) 내 연결
  - 네트워크 확장

라우터의 역할

OSI 계층:
  - 물리 계층 (Layer 1)
  - 데이터링크 계층 (Layer 2)
  - 네트워크 계층 (Layer 3)

주소:
  - IP 주소 기반
  - MAC 주소도 처리

테이블:
  - 라우팅 테이블 관리
  - 목적지 네트워크와 다음 홉

동작:
  - 역캡슐화: 이더넷 헤더 제거
  - 라우팅 테이블 조회
  - TTL 감소
  - NAT 처리
  - 재캡슐화: 새 이더넷 헤더

사용:
  - 다른 네트워크 간 연결
  - 인터넷 연결
  - NAT, 방화벽, VPN

데이터 전달 흐름

컴퓨터 A
   ↓ 이더넷 프레임 생성
   ↓ 목적지 MAC: 게이트웨이
   ↓
스위치 A
   ↓ MAC 주소 테이블 조회
   ↓ 게이트웨이 포트로 전달
   ↓
라우터 A
   ↓ 역캡슐화 (이더넷 헤더 제거)
   ↓ 라우팅 테이블 조회
   ↓ TTL 감소
   ↓ NAT (출발지 IP 변경)
   ↓ 재캡슐화 (새 이더넷 헤더)
   ↓
WAN
   ↓
라우터 B
   ↓ 역캡슐화
   ↓ 라우팅 테이블 조회
   ↓ TTL 감소
   ↓ 재캡슐화
   ↓
스위치 B
   ↓ MAC 주소 테이블 조회
   ↓ 웹 서버 포트로 전달
   ↓
웹 서버

핵심 개념

MAC 주소:
- 각 홉(hop)마다 변경
- 출발지 MAC: 현재 장비
- 목적지 MAC: 다음 홉

IP 주소:
- 종단 간(end-to-end) 유지
- NAT 사용 시 출발지 IP 변경 가능
- 목적지 IP는 항상 최종 목적지

TTL:
- 라우터를 거칠 때마다 1 감소
- 0이 되면 패킷 폐기
- 무한 루프 방지

NAT:
- 사설 IP ↔ 공인 IP 변환
- 포트 번호로 여러 연결 구분
- IPv4 주소 부족 해결

관련 문서: