네트워크 계층의 역할

네트워크 계층의 역할

네트워크 계층의 역할

1. 네트워크 간의 연결 구조

데이터 링크 계층의 한계

데이터 링크 계층 (2계층)의 통신 범위:

┌─────────────────────────────────────────────────────────────┐
│                      네트워크 A                              │
│                                                             │
│   [PC1]────[스위치]────[PC2]                               │
│      │         │          │                                 │
│    통신 가능 ← MAC 주소로 구분 → 통신 가능                    │
│                                                             │
│   ※ 같은 네트워크 내에서만 통신 가능                         │
│   ※ 이더넷 규칙(MAC 주소)으로 통신                          │
│                                                             │
└─────────────────────────────────────────────────────────────┘
                         ╳
                   통신 불가!
                         ╳
┌─────────────────────────────────────────────────────────────┐
│                      네트워크 B                              │
│                                                             │
│   [PC3]────[스위치]────[PC4]                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

문제점:
• 데이터 링크 계층은 같은 네트워크(LAN) 내에서만 통신 가능
• 다른 네트워크(인터넷, 다른 LAN)로는 데이터 전송 불가
• MAC 주소만으로는 네트워크를 식별할 수 없음

네트워크 계층의 필요성

┌─────────────────────────────────────────────────────────────┐
│                    네트워크 계층의 역할                       │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. 다른 네트워크 간의 통신을 가능하게 함                     │
│                                                             │
│  2. 네트워크 식별을 위한 IP 주소 사용                        │
│                                                             │
│  3. 목적지까지의 최적 경로 결정 (라우팅)                     │
│                                                             │
│  4. 패킷 분할 및 재조립                                     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

라우터의 역할

라우터를 통한 네트워크 간 통신:

┌─────────────────┐                      ┌─────────────────┐
│   네트워크 A    │                      │   네트워크 B    │
│  192.168.1.0/24 │                      │  192.168.2.0/24 │
│                 │                      │                 │
│ [PC1]    [PC2]  │                      │ [PC3]    [PC4]  │
│ .10       .20   │                      │ .10       .20   │
│    └──┬──┘      │                      │    └──┬──┘      │
│       │         │                      │       │         │
│   [스위치]      │                      │   [스위치]      │
│       │         │                      │       │         │
└───────┼─────────┘                      └───────┼─────────┘
        │                                        │
        │         ┌───────────────┐              │
        └─────────│    라우터     │──────────────┘
                  │               │
                  │  .1      .1   │
                  │ (A측)   (B측) │
                  └───────────────┘

라우터의 기능:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 서로 다른 네트워크를 연결
2. 목적지 네트워크로 데이터를 전달
3. 최적의 경로 선택 (라우팅)
4. 브로드캐스트 도메인 분리

실제 네트워크 예시

인터넷 통신 예시:

내 PC (192.168.1.10)에서 구글 서버 (142.250.196.110)로 접속

┌──────────┐     ┌──────────┐     ┌──────────┐
│  내 PC   │────→│ 공유기   │────→│ ISP      │
│192.168.  │     │(라우터)  │     │ 라우터   │
│  1.10    │     └──────────┘     └────┬─────┘
└──────────┘                           │
                                       ↓
                              ┌──────────────┐
                              │   인터넷     │
                              │  (여러 개의  │
                              │   라우터)    │
                              └──────┬───────┘
                                     ↓
                              ┌──────────────┐
                              │ 구글 서버    │
                              │142.250.196.  │
                              │    110       │
                              └──────────────┘

과정:
1. 내 PC → 공유기 (기본 게이트웨이)
2. 공유기 → ISP 라우터
3. ISP 라우터 → 여러 중간 라우터들
4. 중간 라우터들 → 구글 서버

※ 각 라우터가 목적지 방향으로 패킷을 전달

2. IP 주소의 이해

MAC 주소 vs IP 주소

┌─────────────────────────────────────────────────────────────┐
│              MAC 주소 vs IP 주소 비교                        │
├──────────────┬──────────────────┬───────────────────────────┤
│     항목     │    MAC 주소      │       IP 주소             │
├──────────────┼──────────────────┼───────────────────────────┤
│     계층     │  2계층 (데이터   │   3계층 (네트워크 계층)   │
│              │  링크 계층)      │                           │
├──────────────┼──────────────────┼───────────────────────────┤
│    길이      │  48비트 (6바이트)│   32비트 (4바이트) - IPv4 │
│              │                  │   128비트 (16바이트)- IPv6│
├──────────────┼──────────────────┼───────────────────────────┤
│    형식      │  16진수          │   10진수 (점으로 구분)    │
│              │  AA:BB:CC:DD:    │   192.168.1.10            │
│              │  EE:FF           │                           │
├──────────────┼──────────────────┼───────────────────────────┤
│    할당      │  제조사가        │   네트워크 관리자가       │
│              │  하드웨어에 부여 │   할당 (변경 가능)        │
├──────────────┼──────────────────┼───────────────────────────┤
│    범위      │  동일 네트워크   │   전 세계 네트워크        │
│              │  (LAN) 내        │                           │
├──────────────┼──────────────────┼───────────────────────────┤
│    비유      │  주민등록번호    │   주소 (집 주소)          │
│              │  (변경 불가)     │   (이사하면 변경)         │
└──────────────┴──────────────────┴───────────────────────────┘

IP 주소의 구조

IPv4 주소 구조:

        192    .    168    .     1     .    10
         │           │          │          │
    ┌────┴────┐ ┌────┴────┐ ┌───┴───┐ ┌────┴────┐
    │11000000│ │10101000│ │00000001│ │00001010│
    └─────────┘ └─────────┘ └────────┘ └─────────┘
         8비트      8비트      8비트      8비트

    총 32비트 = 4바이트


IP 주소의 두 부분:

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│         네트워크 부분          │      호스트 부분           │
│   (Network Portion)           │   (Host Portion)           │
│                               │                             │
│   어떤 네트워크인지 식별       │   네트워크 내 어떤          │
│   (동네 주소)                 │   컴퓨터인지 식별           │
│                               │   (상세 주소)               │
│                               │                             │
└─────────────────────────────────────────────────────────────┘

예시: 192.168.1.10 (서브넷 마스크: 255.255.255.0)

┌───────────────────────────────┬─────────────────────────────┐
│      네트워크 부분            │        호스트 부분          │
│      192.168.1                │           .10               │
│                               │                             │
│    "이 네트워크에 속함"       │    "이 컴퓨터를 가리킴"     │
└───────────────────────────────┴─────────────────────────────┘

IP 주소 클래스

IP 주소 클래스 (전통적 분류):

┌─────────────────────────────────────────────────────────────┐
│  클래스 A                                                    │
├─────────────────────────────────────────────────────────────┤
│  첫 번째 옥텟: 1 ~ 126                                       │
│  기본 서브넷: 255.0.0.0                                      │
│  네트워크 수: 126개                                          │
│  호스트 수: 약 1,600만 개                                    │
│  용도: 대규모 조직                                           │
│                                                             │
│  예: 10.0.0.0 ~ 10.255.255.255                              │
│  ┌──────────┬───────────────────────────────────────────┐  │
│  │네트워크  │              호스트                        │  │
│  │  8비트   │              24비트                       │  │
│  └──────────┴───────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│  클래스 B                                                    │
├─────────────────────────────────────────────────────────────┤
│  첫 번째 옥텟: 128 ~ 191                                     │
│  기본 서브넷: 255.255.0.0                                    │
│  네트워크 수: 약 16,000개                                    │
│  호스트 수: 약 65,000개                                      │
│  용도: 중규모 조직                                           │
│                                                             │
│  예: 172.16.0.0 ~ 172.31.255.255                            │
│  ┌────────────────────┬─────────────────────────────────┐  │
│  │     네트워크       │           호스트                │  │
│  │       16비트       │           16비트                │  │
│  └────────────────────┴─────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│  클래스 C                                                    │
├─────────────────────────────────────────────────────────────┤
│  첫 번째 옥텟: 192 ~ 223                                     │
│  기본 서브넷: 255.255.255.0                                  │
│  네트워크 수: 약 200만 개                                    │
│  호스트 수: 254개                                            │
│  용도: 소규모 조직, 가정                                     │
│                                                             │
│  예: 192.168.0.0 ~ 192.168.255.255                          │
│  ┌──────────────────────────────────┬───────────────────┐  │
│  │          네트워크               │     호스트        │  │
│  │            24비트               │      8비트        │  │
│  └──────────────────────────────────┴───────────────────┘  │
└─────────────────────────────────────────────────────────────┘

사설 IP 주소와 공인 IP 주소

┌─────────────────────────────────────────────────────────────┐
│           사설 IP 주소 (Private IP Address)                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  인터넷에서 사용 불가, 내부 네트워크(LAN)에서만 사용          │
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │  클래스 A: 10.0.0.0 ~ 10.255.255.255                │   │
│  │  클래스 B: 172.16.0.0 ~ 172.31.255.255              │   │
│  │  클래스 C: 192.168.0.0 ~ 192.168.255.255            │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  장점:                                                      │
│  • 무료로 사용 가능                                         │
│  • 중복 사용 가능 (다른 네트워크와 충돌 없음)                 │
│  • 보안 강화 (외부에서 직접 접근 불가)                       │
│                                                             │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│           공인 IP 주소 (Public IP Address)                   │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  인터넷에서 사용 가능한 고유한 주소                          │
│  ISP로부터 할당받아 사용                                     │
│                                                             │
│  예시:                                                      │
│  • 구글 DNS: 8.8.8.8                                        │
│  • 클라우드플레어 DNS: 1.1.1.1                              │
│                                                             │
└─────────────────────────────────────────────────────────────┘


사설 IP와 공인 IP의 관계 (NAT):

┌─────────────────────────────────────────────────────────────┐
│                     가정/회사 네트워크                        │
│                                                             │
│   [PC1]         [PC2]         [PC3]                        │
│  192.168.1.2   192.168.1.3   192.168.1.4                   │
│      │             │             │                          │
│      └─────────────┼─────────────┘                          │
│                    │ (사설 IP)                              │
│              ┌─────┴─────┐                                  │
│              │  공유기   │                                  │
│              │ (NAT)     │                                  │
│              │192.168.1.1│                                  │
│              └─────┬─────┘                                  │
│                    │ (공인 IP)                              │
│                    │ 203.0.113.50                           │
└────────────────────┼────────────────────────────────────────┘
                     │
                     ↓
              ┌────────────┐
              │  인터넷    │
              └────────────┘

※ NAT(Network Address Translation)가
   사설 IP ↔ 공인 IP 변환 수행

3. 라우팅 (Routing)

라우팅이란?

┌─────────────────────────────────────────────────────────────┐
│                        라우팅                                │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  정의:                                                      │
│  목적지 IP 주소까지 어떤 경로로 데이터를 보낼지 결정하는 것    │
│                                                             │
│  비유: 네비게이션                                           │
│  • 목적지 입력 → 여러 경로 중 최적 경로 선택                 │
│  • 교통 상황에 따라 경로 변경 가능                           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

라우팅 테이블

라우팅 테이블 (Routing Table):

라우터 내부에 경로 정보를 저장하는 표

┌─────────────────────────────────────────────────────────────┐
│                     라우팅 테이블 예시                        │
├───────────────────┬───────────────┬────────────┬────────────┤
│   목적지 네트워크  │   서브넷 마스크 │  게이트웨이 │ 인터페이스 │
├───────────────────┼───────────────┼────────────┼────────────┤
│   192.168.1.0    │ 255.255.255.0 │  직접 연결  │   eth0     │
│   192.168.2.0    │ 255.255.255.0 │  직접 연결  │   eth1     │
│   10.0.0.0       │ 255.0.0.0     │ 192.168.1.1│   eth0     │
│   0.0.0.0        │ 0.0.0.0       │ 192.168.2.1│   eth1     │
└───────────────────┴───────────────┴────────────┴────────────┘

설명:
• 192.168.1.0/24로 가려면 → eth0 포트로 직접 전송
• 192.168.2.0/24로 가려면 → eth1 포트로 직접 전송
• 10.0.0.0/8로 가려면 → 192.168.1.1 (다음 라우터)로 전송
• 그 외 모든 목적지 → 192.168.2.1 (기본 게이트웨이)로 전송

라우팅 동작 과정

라우팅 과정 예시:

PC-A(192.168.1.10)에서 PC-B(192.168.3.20)로 패킷 전송

┌──────────┐     ┌──────────┐     ┌──────────┐     ┌──────────┐
│   PC-A   │────→│ 라우터 1 │────→│ 라우터 2 │────→│   PC-B   │
│192.168.  │     │          │     │          │     │192.168.  │
│  1.10    │     │          │     │          │     │  3.20    │
└──────────┘     └──────────┘     └──────────┘     └──────────┘

단계별 과정:

1단계: PC-A가 패킷 생성
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌─────────────────────────────────────────────┐
│  출발지 IP: 192.168.1.10                     │
│  목적지 IP: 192.168.3.20                     │
│  데이터: ...                                 │
└─────────────────────────────────────────────┘

"192.168.3.20은 내 네트워크(192.168.1.0)가 아니네"
→ 기본 게이트웨이(라우터 1)로 전송


2단계: 라우터 1이 라우팅 테이블 확인
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
라우터 1의 라우팅 테이블:
┌───────────────┬─────────────┐
│   목적지      │  다음 홉    │
├───────────────┼─────────────┤
│ 192.168.3.0   │ 라우터 2    │
└───────────────┴─────────────┘

"192.168.3.0 네트워크는 라우터 2를 통해 갈 수 있군"
→ 라우터 2로 전달


3단계: 라우터 2가 라우팅 테이블 확인
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
라우터 2의 라우팅 테이블:
┌───────────────┬─────────────┐
│   목적지      │  다음 홉    │
├───────────────┼─────────────┤
│ 192.168.3.0   │ 직접 연결   │
└───────────────┴─────────────┘

"192.168.3.0 네트워크는 직접 연결되어 있군"
→ PC-B로 직접 전달


4단계: PC-B가 패킷 수신
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
"목적지 IP가 내 IP와 일치!"
→ 패킷 수신 완료

정적 라우팅 vs 동적 라우팅

┌─────────────────────────────────────────────────────────────┐
│           정적 라우팅 (Static Routing)                       │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  • 관리자가 수동으로 경로 설정                               │
│  • 경로 변경 시 직접 수정 필요                               │
│                                                             │
│  장점:                                                      │
│  • 설정이 간단                                              │
│  • 라우터 CPU 부담 적음                                     │
│  • 예측 가능한 경로                                         │
│                                                             │
│  단점:                                                      │
│  • 네트워크 변경 시 수동 업데이트 필요                       │
│  • 대규모 네트워크에서 관리 어려움                           │
│  • 장애 발생 시 자동 우회 불가                               │
│                                                             │
│  적합한 환경: 소규모 네트워크, 경로가 고정된 환경             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│           동적 라우팅 (Dynamic Routing)                      │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  • 라우터끼리 경로 정보를 자동으로 교환                       │
│  • 라우팅 프로토콜 사용 (RIP, OSPF, BGP 등)                  │
│                                                             │
│  장점:                                                      │
│  • 자동으로 경로 학습 및 업데이트                            │
│  • 네트워크 변경에 자동 대응                                 │
│  • 장애 발생 시 자동 우회                                   │
│                                                             │
│  단점:                                                      │
│  • 설정이 복잡                                              │
│  • 라우터 CPU/대역폭 사용                                   │
│  • 수렴 시간 필요                                           │
│                                                             │
│  적합한 환경: 대규모 네트워크, 복잡한 토폴로지                │
│                                                             │
└─────────────────────────────────────────────────────────────┘

주요 라우팅 프로토콜

┌─────────────────────────────────────────────────────────────┐
│                   주요 라우팅 프로토콜                        │
├──────────────┬──────────────────────────────────────────────┤
│              │                                              │
│     RIP      │  Routing Information Protocol               │
│              │  • 홉 수(hop count)로 경로 결정              │
│              │  • 최대 15홉 (소규모 네트워크용)             │
│              │  • 설정 간단                                 │
│              │                                              │
├──────────────┼──────────────────────────────────────────────┤
│              │                                              │
│    OSPF      │  Open Shortest Path First                   │
│              │  • 링크 상태(대역폭, 지연) 기반              │
│              │  • 대규모 네트워크에 적합                    │
│              │  • 빠른 수렴 시간                            │
│              │                                              │
├──────────────┼──────────────────────────────────────────────┤
│              │                                              │
│     BGP      │  Border Gateway Protocol                    │
│              │  • 인터넷 백본에서 사용                      │
│              │  • AS(자율 시스템) 간 라우팅                 │
│              │  • 정책 기반 라우팅                          │
│              │                                              │
└──────────────┴──────────────────────────────────────────────┘

4. IP란?

IP 프로토콜 개요

┌─────────────────────────────────────────────────────────────┐
│                    IP (Internet Protocol)                    │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  네트워크 계층의 대표적인 프로토콜                            │
│                                                             │
│  주요 특징:                                                  │
│  ─────────────────────────────────────────                  │
│  1. 비연결형 (Connectionless)                               │
│     • 연결 설정 없이 패킷 전송                               │
│     • 각 패킷이 독립적으로 전송                              │
│                                                             │
│  2. 비신뢰성 (Unreliable)                                   │
│     • 패킷 전달 보장 안 함                                   │
│     • 오류 검출/복구 안 함                                   │
│     • 상위 계층(TCP)이 신뢰성 담당                          │
│                                                             │
│  3. 최선형 전달 (Best-effort Delivery)                      │
│     • 최선을 다해 전달하지만 보장하지 않음                   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

IP 헤더 구조

IP 헤더 구조 (IPv4):

┌────────────────────────────────────────────────────────────────────┐
│ 0       4       8               16              24              31 │
├────────┬────────┬────────────────┬─────────────────────────────────┤
│ 버전   │ 헤더   │  서비스 유형   │        전체 패킷 길이           │
│ (4bit) │ 길이   │    (TOS)       │         (Total Length)          │
│        │(4bit)  │    (8bit)      │            (16bit)              │
├────────┴────────┴────────────────┼─────────┬───────────────────────┤
│          식별자 (Identification)  │  플래그 │   조각 오프셋         │
│               (16bit)             │  (3bit) │  (Fragment Offset)    │
│                                   │         │      (13bit)          │
├───────────────────┬───────────────┼─────────┴───────────────────────┤
│    TTL (8bit)     │  프로토콜     │       헤더 체크섬               │
│  (Time To Live)   │   (8bit)      │    (Header Checksum)            │
├───────────────────┴───────────────┴─────────────────────────────────┤
│                      출발지 IP 주소 (32bit)                         │
│                      Source IP Address                              │
├─────────────────────────────────────────────────────────────────────┤
│                      목적지 IP 주소 (32bit)                         │
│                      Destination IP Address                         │
├─────────────────────────────────────────────────────────────────────┤
│                      옵션 (가변 길이)                               │
│                      Options (Variable)                             │
└─────────────────────────────────────────────────────────────────────┘

기본 헤더 크기: 20바이트 (옵션 제외)

IP 헤더 필드 설명

주요 필드 설명:

┌─────────────────────────────────────────────────────────────┐
│  (1) 버전 (Version) - 4비트                                  │
├─────────────────────────────────────────────────────────────┤
│  • IP 프로토콜 버전                                          │
│  • IPv4: 4, IPv6: 6                                         │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│  (2) 헤더 길이 (IHL) - 4비트                                 │
├─────────────────────────────────────────────────────────────┤
│  • IP 헤더의 길이 (4바이트 단위)                             │
│  • 최소값: 5 (20바이트), 최대값: 15 (60바이트)               │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│  (3) 서비스 유형 (TOS) - 8비트                               │
├─────────────────────────────────────────────────────────────┤
│  • 패킷의 우선순위와 서비스 품질(QoS) 정보                    │
│  • DSCP(Differentiated Services Code Point)로 사용          │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│  (4) 전체 패킷 길이 (Total Length) - 16비트                  │
├─────────────────────────────────────────────────────────────┤
│  • IP 헤더 + 데이터의 전체 길이 (바이트)                     │
│  • 최대: 65,535 바이트                                       │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│  (5,6,7) 식별자, 플래그, 조각 오프셋                         │
├─────────────────────────────────────────────────────────────┤
│  • 패킷 분할(Fragmentation)에 사용                           │
│  • 식별자: 분할된 패킷 식별                                  │
│  • 플래그: 분할 관련 플래그 (DF, MF)                         │
│  • 오프셋: 원본 데이터에서의 위치                            │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│  (8) TTL (Time To Live) - 8비트                              │
├─────────────────────────────────────────────────────────────┤
│  • 패킷의 생존 시간 (라우터 통과 횟수)                       │
│  • 라우터를 지날 때마다 1씩 감소                             │
│  • 0이 되면 패킷 폐기 (무한 루프 방지)                       │
│  • 일반적으로 64, 128, 255로 설정                           │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│  (9) 프로토콜 (Protocol) - 8비트                             │
├─────────────────────────────────────────────────────────────┤
│  • 상위 계층 프로토콜 식별                                   │
│  • 1: ICMP, 6: TCP, 17: UDP                                 │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│  (10) 헤더 체크섬 - 16비트                                   │
├─────────────────────────────────────────────────────────────┤
│  • IP 헤더의 오류 검출용                                     │
│  • 라우터마다 TTL 변경으로 재계산                            │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│  (11,12) 출발지/목적지 IP 주소 - 각 32비트                   │
├─────────────────────────────────────────────────────────────┤
│  • 패킷을 보낸 호스트의 IP 주소                              │
│  • 패킷을 받을 호스트의 IP 주소                              │
└─────────────────────────────────────────────────────────────┘

IP 패킷

IP 패킷 구조:

┌─────────────────────────────────────────────────────────────┐
│                        IP 패킷                               │
├──────────────────────────┬──────────────────────────────────┤
│        IP 헤더           │           데이터                 │
│     (20~60 바이트)       │    (상위 계층 데이터)            │
│                          │    (TCP/UDP 세그먼트)            │
└──────────────────────────┴──────────────────────────────────┘


캡슐화 과정:

응용 계층    ┌──────────────────────────────────────────────┐
             │                  데이터                       │
             └──────────────────────────────────────────────┘
                                    ↓
전송 계층    ┌─────────┬───────────────────────────────────┐
             │TCP 헤더 │              데이터                │
             └─────────┴───────────────────────────────────┘
                                    ↓
네트워크     ┌─────────┬─────────┬─────────────────────────┐
계층         │ IP 헤더 │TCP 헤더 │         데이터          │
             └─────────┴─────────┴─────────────────────────┘
             │                  IP 패킷                    │
                                    ↓
데이터링크   ┌────────┬─────────┬─────────┬────────┬───────┐
계층         │이더넷  │ IP 헤더 │TCP 헤더 │ 데이터 │  FCS  │
             │ 헤더   │         │         │        │       │
             └────────┴─────────┴─────────┴────────┴───────┘
             │              이더넷 프레임                   │

5. TTL과 ICMP

TTL (Time To Live)

TTL의 역할:

┌─────────────────────────────────────────────────────────────┐
│                          TTL                                 │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  목적:                                                      │
│  • 패킷이 네트워크에서 무한히 순환하는 것을 방지             │
│  • 라우팅 루프 발생 시 패킷 폐기                             │
│                                                             │
│  동작:                                                      │
│  • 라우터를 지날 때마다 TTL 값이 1씩 감소                   │
│  • TTL이 0이 되면 패킷 폐기                                 │
│  • ICMP Time Exceeded 메시지 발신자에게 전송                │
│                                                             │
└─────────────────────────────────────────────────────────────┘


TTL 동작 예시:

[PC] TTL=64 ──→ [R1] TTL=63 ──→ [R2] TTL=62 ──→ [R3] TTL=61 ──→ [목적지]

                                TTL 값 감소 과정:

┌──────┐    TTL=64    ┌──────┐    TTL=63    ┌──────┐    TTL=62
│  PC  │────────────→│  R1  │────────────→│  R2  │────────────→
└──────┘              └──────┘              └──────┘

만약 TTL이 0이 되면:
┌──────┐    TTL=1     ┌──────┐    TTL=0!
│  PC  │────────────→│라우터│──→ 패킷 폐기
└──────┘              └──────┘
                          │
                          ↓
                    "ICMP Time Exceeded"
                    메시지를 PC로 전송

ICMP (Internet Control Message Protocol)

┌─────────────────────────────────────────────────────────────┐
│                          ICMP                                │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  Internet Control Message Protocol                          │
│  • 네트워크 진단 및 오류 보고용 프로토콜                     │
│  • IP 패킷 전송 중 발생하는 문제를 알림                      │
│                                                             │
│  주요 메시지 유형:                                          │
│  ─────────────────────────────────────────                  │
│  • Echo Request/Reply: ping 명령어에 사용                   │
│  • Destination Unreachable: 목적지 도달 불가                │
│  • Time Exceeded: TTL 만료                                  │
│  • Redirect: 더 좋은 경로 알림                              │
│                                                             │
└─────────────────────────────────────────────────────────────┘


ping 명령어 동작:

PC에서 구글(8.8.8.8)로 ping:

┌──────┐                                          ┌──────────┐
│  PC  │                                          │ 구글 DNS │
│      │                                          │ 8.8.8.8  │
└──┬───┘                                          └────┬─────┘
   │                                                   │
   │  ICMP Echo Request                                │
   │ ─────────────────────────────────────────────────→│
   │  (목적지: 8.8.8.8, "살아있니?")                    │
   │                                                   │
   │  ICMP Echo Reply                                  │
   │←───────────────────────────────────────────────── │
   │  (응답: "응, 살아있어!")                           │
   │                                                   │


실행 결과:
> ping 8.8.8.8

PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=118 time=3.2 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=3.1 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=118 time=3.0 ms

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max = 3.0/3.1/3.2 ms

traceroute (tracert)

traceroute 동작 원리:

TTL 값을 1부터 증가시키며 각 라우터 확인

┌─────────────────────────────────────────────────────────────┐
│  1차 시도: TTL=1                                            │
│  ────────────────────────────────────────                   │
│  [PC] ──TTL=1──→ [R1] TTL=0! → ICMP Time Exceeded 전송      │
│                    │                                        │
│                    └──→ "R1의 IP 주소 확인됨"               │
│                                                             │
│  2차 시도: TTL=2                                            │
│  ────────────────────────────────────────                   │
│  [PC] ──TTL=2──→ [R1] ──TTL=1──→ [R2] TTL=0!               │
│                                    │                        │
│                                    └──→ "R2의 IP 주소 확인" │
│                                                             │
│  3차 시도: TTL=3                                            │
│  ────────────────────────────────────────                   │
│  [PC] ──→ [R1] ──→ [R2] ──→ [목적지] Echo Reply!           │
│                                                             │
│  → 전체 경로 파악 완료!                                      │
└─────────────────────────────────────────────────────────────┘


실행 결과:
> tracert 8.8.8.8

경로 추적: dns.google [8.8.8.8]

  1     1 ms     1 ms     1 ms  192.168.1.1       (공유기)
  2     5 ms     4 ms     5 ms  10.0.0.1          (ISP 라우터 1)
  3     8 ms     7 ms     8 ms  72.14.215.85      (중간 라우터)
  4    10 ms     9 ms    10 ms  108.170.242.129   (구글 라우터)
  5    12 ms    11 ms    11 ms  8.8.8.8           (목적지)

추적 완료.

6. 패킷 분할 (Fragmentation)

MTU와 분할

┌─────────────────────────────────────────────────────────────┐
│                    MTU (Maximum Transmission Unit)           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  정의:                                                      │
│  • 한 번에 전송할 수 있는 최대 데이터 크기                   │
│  • 데이터 링크 계층에서 결정                                 │
│                                                             │
│  일반적인 MTU:                                              │
│  • 이더넷: 1500 바이트                                      │
│  • PPPoE: 1492 바이트                                       │
│  • VPN: 1400~1500 바이트 (헤더에 따라 다름)                  │
│                                                             │
└─────────────────────────────────────────────────────────────┘


패킷 분할 과정:

┌─────────────────────────────────────────────────────────────┐
│  원본 패킷 (3000 바이트 데이터)                              │
│  ───────────────────────────────                            │
│  ┌─────────┬────────────────────────────────────────────┐  │
│  │ IP 헤더 │              데이터 (3000 바이트)           │  │
│  │  (20)   │                                             │  │
│  └─────────┴────────────────────────────────────────────┘  │
│                                                             │
│                      MTU = 1500                             │
│                          ↓                                  │
│                     분할 필요!                              │
│                          ↓                                  │
│                                                             │
│  분할된 패킷들:                                             │
│  ─────────────────────────                                 │
│  조각 1:                                                    │
│  ┌─────────┬─────────────────────────┐                     │
│  │ IP 헤더 │    데이터 (1480 바이트)  │  = 1500 바이트     │
│  │  (20)   │   오프셋=0, MF=1        │                     │
│  └─────────┴─────────────────────────┘                     │
│                                                             │
│  조각 2:                                                    │
│  ┌─────────┬─────────────────────────┐                     │
│  │ IP 헤더 │    데이터 (1480 바이트)  │  = 1500 바이트     │
│  │  (20)   │  오프셋=185, MF=1       │                     │
│  └─────────┴─────────────────────────┘                     │
│                                                             │
│  조각 3:                                                    │
│  ┌─────────┬────────────────┐                              │
│  │ IP 헤더 │   (40 바이트)  │  = 60 바이트                 │
│  │  (20)   │ 오프셋=370,MF=0│                              │
│  └─────────┴────────────────┘                              │
│                                                             │
└─────────────────────────────────────────────────────────────┘

※ 오프셋: 8바이트 단위
※ MF (More Fragments): 1이면 뒤에 조각 더 있음, 0이면 마지막

핵심 정리

개념설명
네트워크 계층서로 다른 네트워크 간의 통신을 담당하는 계층
라우터네트워크를 연결하고 최적 경로를 결정하는 장비
IP 주소네트워크와 호스트를 식별하는 논리적 주소
라우팅목적지까지의 최적 경로를 결정하는 과정
라우팅 테이블경로 정보를 저장하는 표
IP 헤더패킷 전달에 필요한 정보가 담긴 헤더 (20~60바이트)
TTL패킷 생존 시간, 라우터마다 1씩 감소
ICMP네트워크 진단 및 오류 보고 프로토콜

MAC 주소와 IP 주소의 역할

┌─────────────────────────────────────────────────────────────┐
│           MAC 주소 vs IP 주소 역할                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  MAC 주소 (2계층)                                           │
│  ──────────────────                                        │
│  • 같은 네트워크 내에서 사용                                 │
│  • 다음 홉(Next Hop)까지만 사용                             │
│  • 라우터를 지날 때마다 변경됨                               │
│                                                             │
│  IP 주소 (3계층)                                            │
│  ──────────────────                                        │
│  • 출발지부터 목적지까지 사용                                │
│  • 전체 경로에서 변하지 않음 (NAT 제외)                      │
│  • 네트워크를 식별                                          │
│                                                             │
│                                                             │
│  패킷 전송 과정에서의 변화:                                  │
│                                                             │
│  [PC-A] ──→ [라우터 1] ──→ [라우터 2] ──→ [PC-B]           │
│                                                             │
│  IP 헤더:                                                   │
│  출발지 IP: PC-A   (변하지 않음)                            │
│  목적지 IP: PC-B   (변하지 않음)                            │
│                                                             │
│  이더넷 헤더:                                               │
│  구간 1: 출발지 MAC=PC-A,    목적지 MAC=라우터1             │
│  구간 2: 출발지 MAC=라우터1, 목적지 MAC=라우터2             │
│  구간 3: 출발지 MAC=라우터2, 목적지 MAC=PC-B               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

네트워크 계층 장비와 프로토콜

┌─────────────────────────────────────────────────────────────┐
│               네트워크 계층 핵심 요소                        │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  장비                                                       │
│  ────                                                      │
│  • 라우터 (Router)                                          │
│  • L3 스위치 (Layer 3 Switch)                              │
│                                                             │
│  프로토콜                                                   │
│  ────────                                                  │
│  • IP (Internet Protocol)                                   │
│  • ICMP (Internet Control Message Protocol)                │
│  • ARP (Address Resolution Protocol) - 2~3계층 경계         │
│                                                             │
│  라우팅 프로토콜                                            │
│  ──────────────                                            │
│  • RIP (Routing Information Protocol)                       │
│  • OSPF (Open Shortest Path First)                         │
│  • BGP (Border Gateway Protocol)                           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

용어 정리

  • 네트워크 계층 (Layer 3): OSI 7계층 중 3계층, 서로 다른 네트워크 간의 통신을 담당
  • 라우터 (Router): 네트워크를 연결하고 패킷을 전달하는 장비
  • 라우팅 (Routing): 목적지까지의 최적 경로를 결정하는 과정
  • 라우팅 테이블 (Routing Table): 목적지 네트워크와 경로 정보를 저장하는 표
  • IP 주소 (IP Address): 네트워크와 호스트를 식별하는 논리적 주소
  • IP 패킷 (IP Packet): IP 헤더가 붙은 데이터 단위
  • TTL (Time To Live): 패킷의 생존 시간, 라우터를 지날 때마다 1씩 감소
  • ICMP: 네트워크 진단 및 오류 보고에 사용되는 프로토콜
  • MTU (Maximum Transmission Unit): 한 번에 전송 가능한 최대 데이터 크기
  • 분할 (Fragmentation): MTU보다 큰 패킷을 작은 조각으로 나누는 것