Skip to content
Published on

[컴퓨터 네트워크] 12. IP 프로토콜: 데이터그램과 주소 체계

Authors

IP 프로토콜: 데이터그램과 주소 체계

IP(Internet Protocol)는 인터넷 네트워크 계층의 핵심 프로토콜입니다. 모든 인터넷 장비는 IP 프로토콜을 실행해야 하며, 이는 인터넷을 하나로 묶어주는 접착제 역할을 합니다.

이 글에서는 IPv4 데이터그램 형식, IP 단편화, 주소 체계(서브넷, CIDR, DHCP), NAT, ICMP, 그리고 IPv6의 등장과 전환 메커니즘을 살펴봅니다.


1. IPv4 데이터그램 형식

IPv4 데이터그램은 헤더와 데이터(페이로드)로 구성됩니다.

IPv4 데이터그램 헤더 (20바이트 기본)
=====================================

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version|  IHL  |Type of Service|          Total Length         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Identification        |Flags|      Fragment Offset    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Time to Live |    Protocol   |         Header Checksum       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Source IP Address                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Destination IP Address                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Options (가변 길이)                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

주요 헤더 필드

필드크기설명
Version4비트IP 버전 (IPv4 = 4)
IHL4비트헤더 길이 (32비트 워드 단위)
Total Length16비트데이터그램 전체 길이 (바이트)
TTL8비트남은 홉 수, 0이 되면 폐기
Protocol8비트상위 계층 프로토콜 (TCP=6, UDP=17)
Header Checksum16비트헤더 오류 검출

2. IP 단편화와 재조립

2.1 단편화가 필요한 이유

각 링크에는 MTU(Maximum Transmission Unit) 가 있어서 전송 가능한 최대 프레임 크기가 제한됩니다. IP 데이터그램이 MTU보다 크면 단편화(Fragmentation)해야 합니다.

IP 단편화 예시
================

원본 데이터그램: 4000바이트 (헤더 20 + 데이터 3980)
링크 MTU: 1500바이트

단편 1: [헤더 20] [데이터 1480] = 1500바이트
  ID=x, MF=1, Offset=0

단편 2: [헤더 20] [데이터 1480] = 1500바이트
  ID=x, MF=1, Offset=185 (1480/8)

단편 3: [헤더 20] [데이터 1020] = 1040바이트
  ID=x, MF=0, Offset=370 (2960/8)

2.2 재조립

IP 단편화의 재조립은 중간 라우터가 아닌 최종 목적지 호스트에서만 수행됩니다. 이는 단편들이 서로 다른 경로로 도착할 수 있기 때문입니다.

  • Identification: 같은 원본 데이터그램의 단편임을 식별
  • MF (More Fragments) 플래그: 뒤에 더 많은 단편이 있는지 표시
  • Fragment Offset: 원본 데이터에서의 위치 (8바이트 단위)

3. IPv4 주소 체계

3.1 IP 주소의 기본 구조

IPv4 주소는 32비트로 구성되며, 점으로 구분된 10진수(dotted decimal notation)로 표기합니다.

IP 주소 표기
=============

이진수:  11000000 10101000 00000001 00000001
10진수:  192.168.1.1

32비트 = 약 43억 개의 고유 주소

3.2 서브넷 (Subnet)

서브넷은 라우터를 거치지 않고 서로 직접 통신할 수 있는 장치들의 네트워크입니다.

서브넷 예시
============

          223.1.1.0/24 서브넷
         +-----------------------+
         |                       |
   223.1.1.1  223.1.1.2  223.1.1.3
    [호스트]   [호스트]    [라우터]
                              |
                         223.1.2.9
                              |
         +-----------------------+
         |                       |
   223.1.2.1  223.1.2.2  223.1.2.3
         223.1.2.0/24 서브넷

3.3 CIDR (Classless Inter-Domain Routing)

CIDR는 클래스 기반 주소 체계의 비효율성을 해결합니다. 서브넷 마스크의 길이를 자유롭게 지정하여 주소 공간을 효율적으로 활용합니다.

CIDR 표기법
=============

200.23.16.0/20

주소:       200.23.16.0
서브넷 부분: 200.23.0001|0000.00000000
                       ^20비트

이 서브넷에 포함된 호스트 범위:
  200.23.16.0 ~ 200.23.31.255
  총 2^12 = 4096개 주소

3.4 클래스 기반 주소 (역사적 참고)

CIDR 이전에는 A, B, C 클래스로 주소를 분류했습니다.

IP 주소 클래스
================

클래스 A: 0xxxxxxx | 24비트 호스트   (2^24 = 약 1600만 호스트)
클래스 B: 10xxxxxx xxxxxxxx | 16비트  (2^16 = 65,536 호스트)
클래스 C: 110xxxxx xxxxxxxx xxxxxxxx | 8비트 (2^8 = 256 호스트)

문제점: 클래스 B는 너무 크고, 클래스 C는 너무 작음
  --> 주소 공간 낭비 --> CIDR 도입

4. DHCP (Dynamic Host Configuration Protocol)

4.1 DHCP의 역할

DHCP는 호스트가 네트워크에 접속할 때 IP 주소, 서브넷 마스크, 기본 게이트웨이, DNS 서버 주소를 자동으로 할당해주는 프로토콜입니다.

4.2 DHCP 동작 과정

DHCP는 4단계 과정(DORA)을 통해 동작합니다.

DHCP 4단계 과정 (DORA)
========================

클라이언트                           DHCP 서버
    |                                    |
    |--- 1. DHCP Discover (브로드캐스트) -->|
    |    src: 0.0.0.0                    |
    |    dst: 255.255.255.255            |
    |                                    |
    |<-- 2. DHCP Offer ------------------|
    |    제안 IP: 192.168.1.100          |
    |    임대 시간: 3600초               |
    |                                    |
    |--- 3. DHCP Request (브로드캐스트) ->|
    |    요청 IP: 192.168.1.100          |
    |                                    |
    |<-- 4. DHCP ACK -------------------|
    |    확정 IP: 192.168.1.100          |
    |    서브넷: 255.255.255.0           |
    |    게이트웨이: 192.168.1.1         |
    |    DNS: 8.8.8.8                    |
    |                                    |

5. NAT (Network Address Translation)

5.1 NAT의 필요성

IPv4 주소 고갈 문제를 해결하기 위해 NAT가 도입되었습니다. NAT를 사용하면 하나의 공인 IP 주소로 여러 내부 호스트가 인터넷에 접속할 수 있습니다.

5.2 NAT 동작 원리

NAT 동작
=========

내부 네트워크 (사설 IP)           NAT 라우터           외부 인터넷
10.0.0.0/24                      138.76.29.7

[10.0.0.1:3345] ---->  [138.76.29.7:5001] ----> 웹서버
[10.0.0.2:2890] ---->  [138.76.29.7:5002] ----> 웹서버
[10.0.0.3:1789] ---->  [138.76.29.7:5003] ----> 웹서버

NAT 변환 테이블:
+-------------------+----------------------+
| WAN 측            | LAN 측               |
+-------------------+----------------------+
| 138.76.29.7:5001  | 10.0.0.1:3345        |
| 138.76.29.7:5002  | 10.0.0.2:2890        |
| 138.76.29.7:5003  | 10.0.0.3:1789        |
+-------------------+----------------------+

5.3 NAT의 논란

NAT에 대해서는 여러 비판이 있습니다.

  • 포트 번호는 프로세스 식별 용도인데 호스트 식별에 사용하는 것은 계층 위반
  • 종단 간(end-to-end) 원칙을 위배
  • 서버 운영 시 포트 포워딩 설정이 필요
  • P2P 애플리케이션에서 연결 문제 발생

6. ICMP (Internet Control Message Protocol)

6.1 ICMP의 역할

ICMP는 네트워크 장비 간에 오류 보고와 정보 교환을 위한 프로토콜입니다. IP 데이터그램의 페이로드로 캡슐화되어 전송됩니다.

6.2 주요 ICMP 메시지

ICMP 메시지 유형
=================

타입  코드  설명
----  ----  ----------------------------------
  0    0    Echo Reply (ping 응답)
  3    0    Destination Network Unreachable
  3    1    Destination Host Unreachable
  3    3    Destination Port Unreachable
  4    0    Source Quench (혼잡 제어)
  8    0    Echo Request (ping 요청)
 11    0    TTL Expired (traceroute에서 사용)
 12    0    IP Header Bad

6.3 활용 예시: Traceroute

Traceroute는 TTL 값을 1부터 순차적으로 증가시키면서 UDP 패킷을 전송합니다. 각 라우터에서 TTL이 0이 되면 ICMP TTL Expired 메시지를 반환하여 경로상의 라우터를 파악합니다.

Traceroute 동작
=================

호스트 --> TTL=1 --> [R1] --> ICMP TTL Expired 반환
호스트 --> TTL=2 --> [R1] --> [R2] --> ICMP TTL Expired 반환
호스트 --> TTL=3 --> [R1] --> [R2] --> [R3] --> ICMP TTL Expired 반환
호스트 --> TTL=4 --> [R1] --> [R2] --> [R3] --> [목적지] --> ICMP Port Unreachable

7. IPv6

7.1 IPv6의 등장 배경

IPv4 주소 공간(약 43억)이 고갈되면서 IPv6가 개발되었습니다. IPv6는 128비트 주소를 사용하여 사실상 무한한 주소 공간을 제공합니다.

7.2 IPv6 데이터그램 형식

IPv6 헤더 (40바이트 고정)
==========================

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| Traffic Class |           Flow Label                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Payload Length        |  Next Header  |   Hop Limit   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                                                               +
|                       Source Address                           |
+                       (128 bits)                               +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                                                               +
|                    Destination Address                         |
+                       (128 bits)                               +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

7.3 IPv4 대비 주요 변화

IPv4 vs IPv6 비교
==================

항목              | IPv4              | IPv6
------------------+-------------------+--------------------
주소 크기         | 32비트            | 128비트
헤더 크기         | 가변 (20~60바이트) | 고정 40바이트
단편화            | 라우터에서 가능    | 출발지에서만 가능
체크섬            | 있음              | 없음 (상위 계층에 위임)
옵션              | 헤더에 포함        | 확장 헤더로 분리
브로드캐스트       | 지원              | 멀티캐스트로 대체

7.4 IPv4에서 IPv6로의 전환

전 세계 모든 장비를 한꺼번에 교체할 수 없기 때문에 점진적인 전환 방법이 사용됩니다.

터널링 (Tunneling): IPv6 데이터그램을 IPv4 데이터그램의 페이로드로 캡슐화하여, IPv4 네트워크를 통과할 수 있게 합니다.

터널링 동작
=============

[IPv6] --> [IPv6/IPv4] ===== IPv4 터널 ===== [IPv4/IPv6] --> [IPv6]
 호스트A    터널 입구      (IPv6를 IPv4에        터널 출구     호스트B
                           캡슐화하여 전송)

원래 패킷: [IPv6 헤더][데이터]
터널 내부: [IPv4 헤더][IPv6 헤더][데이터]
  IPv4의 Protocol 필드 = 41 (IPv6)

8. 정리

개념핵심 내용
IPv4 헤더20바이트 기본, TTL/Protocol/Checksum 포함
단편화MTU 초과 시 분할, 목적지에서만 재조립
CIDR유연한 서브넷 마스크로 주소 효율성 향상
DHCPIP 주소 자동 할당 (Discover-Offer-Request-ACK)
NAT사설 IP를 공인 IP로 변환, 포트 번호로 매핑
ICMP네트워크 오류 보고 및 진단 (ping, traceroute)
IPv6128비트 주소, 고정 40바이트 헤더, 단편화 제거

다음 글에서는 라우터가 최적 경로를 찾기 위한 라우팅 알고리즘(Link-State, Distance-Vector)을 살펴보겠습니다.


참고 자료

  • James F. Kurose, Keith W. Ross, "Computer Networking: A Top-Down Approach", 6th Edition, Chapter 4
  • RFC 791 - Internet Protocol (IPv4)
  • RFC 2460 - Internet Protocol Version 6 (IPv6)
  • RFC 2131 - Dynamic Host Configuration Protocol