네트워크 계층의 역할
네트워크 계층의 역할
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 mstraceroute (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보다 큰 패킷을 작은 조각으로 나누는 것