콘텐츠로 바로가기

IP Addressing Physics

[Placeholder for technical implementation]

Article
M

Me

hyunyoun's Blog

network-communicationnetworkcommunicationiproutingglobal-interconnectip-addressing-physicsnetwork-layer10 min read

1. Overview

IP 주소 지정 물리학(IP Addressing Physics)은 단순히 4개의 숫자로 이루어진 IP 주소를 넘어, 43억 개의 제한된 자원을 쪼개고(Subnetting) 병합하여(Supernetting) 거대한 라우팅 트리의 뼈대를 세우는 네트워크 계층의 핵심 주소학을 해부합니다.

학습자는 무식하게 IP를 낭비하던 초기 클래스풀(Classful) 방식의 종말을 선언하고, 필요한 만큼만 비트를 잘라 쓰는 **CIDR(Classless Inter-Domain Routing)**과 **VLSM(가변 길이 서브넷 마스크)**의 비트 연산 마법을 뜯어봅니다. 나아가 고갈된 IPv4의 생명줄을 연장하는 NAT/PAT의 한계와, 128비트라는 무한대에 가까운 우주적 주소 공간을 제공하는 IPv6의 혁명적 구조를 장악합니다. 마지막으로 라우팅 테이블의 크기를 극적으로 줄여 인터넷 백본(Backbone) 라우터의 붕괴를 막아내는 **경로 요약(Route Summarization)**의 인프라 스케일링 역량을 확보합니다.

2. Scope & Boundaries

In-Scope

  • IPv4 Mathematics: 이진수 변환, Network ID, Host ID, Subnet Mask.
  • CIDR & VLSM: 슬래시 표기법(/24, /26), 서브넷 크기의 가변적 분할.
  • Route Summarization: 여러 개의 작은 서브넷을 하나의 큰 CIDR 블록으로 묶는 기술(Supernetting).
  • IPv6 Evolution: 128비트 주소 체계, SLAAC (Stateless Address Autoconfiguration), IPSec 내장.

Out-of-Scope

  • 라우팅 프로토콜 심화: OSPF/BGP가 경로를 교환하는 원리 \rightarrow 08-03-03, 08-03-04 영역으로 위임.
  • NAT 동작의 전송 계층 연관성: 포트 기반 변환(PAT)의 세션 관리 \rightarrow 08-01-02 영역에서 기학습 (본 문서는 주소 공간 자체에 집중).

Boundaries

  • Subnetting vs Supernetting: 서브네팅은 회사 안에서 1개의 큰 네트워크 대역(/24)을 받아와서 인사팀(/26), 개발팀(/26) 등으로 '잘게 쪼개는' 기술입니다. 반면 슈퍼네팅(Route Summarization)은 반대로 수많은 잘게 쪼개진 네트워크 대역들을 하나의 큰 대역(/16)으로 '합쳐서' 외부 라우터에 광고하는 기술입니다. 쪼개는 것은 내부 브로드캐스트 통제를 위해, 합치는 것은 외부 라우팅 테이블 크기를 줄이기 위함이라는 방향성의 차이를 명확히 경계 짓습니다.

3. Counterexample

  • 클래스풀(Classful) 낭비의 재앙: 1990년대 초, 어느 대학교가 300대의 컴퓨터를 위해 IP를 신청했습니다. C클래스(254개)는 모자라기 때문에, 어쩔 수 없이 B클래스(65,534개)를 할당받았습니다. 300개를 쓰고 남은 65,000개의 IP는 아무도 쓰지 못하고 영원히 버려졌습니다. CIDR(/23을 주면 510개 할당 가능)이 없던 시절, IP 주소 공간을 고정된 클래스(A, B, C)로만 나누어 IPv4 고갈을 수십 년이나 앞당긴 원시적 IP 할당의 끔찍한 안티 패턴입니다.
  • 라우팅 테이블 붕괴: 한 회사가 서울, 대전, 대구, 부산에 각각 /24 서브넷을 10개씩(총 40개) 가지고 있습니다. 이 회사의 경계 라우터가 통신사(ISP)에게 이 40개의 라우팅 정보를 하나하나 낱개로 광고합니다. 전 세계의 모든 회사가 이런 식으로 낱개로 광고하자, ISP 백본 라우터의 메모리(RAM)가 꽉 차서 다운되어 버립니다. 40개의 /24 대역을 묶어서 하나의 /18이나 /19 대역으로 경로 요약(Summarization)을 하지 않아 발생한 글로벌 민폐입니다.

4. Prerequisites

  • Network Layer 기초 (Basic): IP 헤더, TTL. (08-01-02 Network Layer)
  • 이진수(Binary) 연산 기초 (Basic): 10진수 \leftrightarrow 2진수 변환, 비트 AND 연산. (01-01 Boolean Logic)

5. Learning Map

Sequence Core Cluster Objective & Description Evidence (BoK)
1 IPv4 & Subnet Masking 컴퓨터가 192.168.1.1이라는 문자열을 32개의 0과 1로 쪼개고, 마스크(Mask)를 덮어씌워 네트워크 구역을 식별하는 수학을 쥡니다. P1
2 CIDR & VLSM A, B, C 클래스의 족쇄를 박살 내고, 부서 인원수에 맞춰 IP 개수를 /27(30명), /29(6명) 등으로 낭비 없이 칼같이 재단하는 비트 가위질을 해부합니다. P5
3 Route Summarization 100개의 잔잔바리 서브넷을 하나의 거대한 IP 대역으로 뭉쳐서(Supernetting), 라우터의 뇌(메모리)를 최적화하는 스케일링 마법을 뜯어봅니다. Industry
4 The IPv6 Revolution 고갈된 43억 개의 빈민촌(IPv4)을 떠나, 지구상의 모든 모래알에 IP를 부여해도 남는 128비트 은하계(IPv6)의 거대한 주소 체계를 장악합니다. Industry

6. Learning Topics

Basic

Core Topic 01: 32비트의 영토 분할, 서브넷 마스킹 (IPv4 & Subnet Masking)

  • Why to Learn: 두 대의 컴퓨터가 통신할 때 "우리는 같은 동네(LAN)인가, 아니면 라우터를 거쳐야 하는 남인가?"를 판단하는 가장 기저의 비트 연산을 통찰하기 위함입니다.
  • What to Learn:
    • Concepts: IPv4 (32-bit), Dotted Decimal, Network Portion, Host Portion, Subnet Mask (255.255.255.0), Bitwise AND.
    • Skills: 주어진 IP와 서브넷 마스크를 이진수로 변환하고 AND 연산을 통해 Network ID(동네 이름)를 기계적으로 추출하기.
  • How to Learn:
    • 1단계: 마스크의 의미: IP 주소는 32자리의 이진수입니다. 이 중 '어디까지가 우리 동네 이름인가?'를 알려주는 게 서브넷 마스크입니다. 255.255.255.0은 이진수로 앞의 24개가 1입니다. 즉 "앞에서부터 24자리가 동네 이름(Network ID)이다"라는 뜻입니다.
    • 2단계: AND 연산: 내 IP(192.168.1.10)와 마스크를 AND 연산하면 192.168.1.0이 나옵니다. 목적지 IP(192.168.1.50)와 마스크를 AND 연산하면 똑같이 192.168.1.0이 나옵니다. "아, 동네 이름이 같네! 라우터한테 안 가고 내가 직접 MAC 주소(ARP) 찾아서 던져야지!" 하는 PC의 논리 회로를 해부합니다.
  • Implement: 파이썬 서브넷 판별기. ip1 = "10.1.1.5", ip2 = "10.1.2.5", mask = "255.255.0.0". 코드가 이를 32비트 이진수로 변환하고 AND 연산 수행. [Result] Network IDs match (10.1.0.0) -> Direct L2 Communication. 만약 mask = "255.255.255.0"으로 주면 [Result] Network IDs differ (10.1.1.0 vs 10.1.2.0) -> Send to Default Gateway를 출력하는 논리 회로 모사.

Core Topic 02: 비트 가위질, CIDR와 VLSM (CIDR & VLSM)

  • Why to Learn: 고정된 크기(254개, 6만 개)로만 IP를 나누던 비효율을 버리고, 슬래시(/) 뒤의 숫자 하나로 부서의 인원수에 딱 맞게 IP 대역을 재단하여 한 방울의 낭비도 없애기 위함입니다.
  • What to Learn:
    • Concepts: CIDR (Classless Inter-Domain Routing), VLSM (Variable Length Subnet Masking), Subnetting, Slash Notation (/26, /30).
    • Skills: 100명이 있는 부서, 30명이 있는 부서, 라우터 간 연결(2개 필요)에 맞추어 하나의 /24 대역을 여러 개의 서로 다른 서브넷 마스크 크기로 쪼개기(VLSM 설계).
  • How to Learn:
    • 1단계: CIDR 표기법: 255.255.255.0이라고 길게 쓰는 대신 /24라고 씁니다(마스크 비트 1이 24개). /25로 늘리면 동네 이름이 1비트 길어지므로, 하나의 /24 동네가 정확히 절반(128개씩) 크기의 두 동네로 쪼개집니다.
    • 2단계: VLSM (가변 길이): /24(256개)를 통째로 쪼갭니다. 영업팀은 인원이 많으니 절반(/25, 128개)을 줍니다. 남은 절반을 또 쪼개어 개발팀에 /26(64개)을 줍니다. 남은 걸 또 쪼개어 서버팀에 /27(32개)을 줍니다. 이렇게 하나의 큰 천을 다양한 크기로 잘라 쓰는 가변 길이 튜닝을 뜯어봅니다.
  • Implement: VLSM 계산기 데모. 입력: Base IP = 192.168.0.0/24. 필요 인원: Team_A: 100명, Team_B: 50명, Team_C: 10명. 스크립트가 Team_A를 위해 가장 알맞은 크기인 /25(가용 126개) 할당(192.168.0.0/25), Team_B/26(가용 62개) 할당(192.168.0.128/26), Team_C/28(가용 14개) 할당(192.168.0.192/28)하여 남는 버려지는 IP 공간을 최소화하는 알고리즘 렌더링.

Practical

Core Topic 03: 라우터의 뇌 다이어트, 경로 요약 (Route Summarization)

  • Why to Learn: 인터넷 백본 라우터에 전 세계 수십억 개의 낱개 IP 대역이 전부 저장되면 라우터가 폭발하므로, 인접한 수백 개의 대역을 묶어서 딱 한 줄로 줄여버리는 최적화 스킬을 쥐기 위함입니다.
  • What to Learn:
    • Concepts: Route Summarization (Supernetting), Route Aggregation, BGP Routing Table, Memory Optimization.
    • Skills: 10.1.0.0/24, 10.1.1.0/24, 10.1.2.0/24, 10.1.3.0/24 4개의 라우팅 엔트리를 이진수 공통 분모를 찾아 10.1.0.0/22 한 줄로 요약(Summarize)하기.
  • How to Learn:
    • 1단계: 거대한 테이블의 병목: 라우팅 테이블이 100만 줄이 되면, 패킷 하나가 들어올 때마다 100만 줄을 뒤져야 하므로 라우터의 CPU와 RAM이 버티질 못합니다.
    • 2단계: 경로 요약 (슈퍼네팅): 아시아 지사 라우터가 본사 라우터에게 한국(/24), 일본(/24), 중국(/24)을 따로따로 알려주지 않고, "그냥 앞자리가 10.1.0.0/16인 건 다 아시아로 보내라!"라고 크게 하나로 묶어서(Aggregating) 알려줍니다. 본사 라우터는 테이블이 1줄로 줄어들고 검색(Longest Match) 속도가 극적으로 빨라지는 인프라 스케일링을 뜯어봅니다.
  • Implement: 라우트 서머라이제이션(Route Summarization) 컴파일러. 입력 배열: ["192.168.0.0/24", "192.168.1.0/24", "192.168.2.0/24", "192.168.3.0/24"]. 코드가 IP의 3번째 옥텟(0, 1, 2, 3)을 이진수로 변환하고, 4개 주소의 '공통 접두사(Common Prefix)' 비트가 22개임을 계산. 최종적으로 [Result] Summarized Route: 192.168.0.0/22를 도출하여 라우팅 테이블 길이를 1/4로 줄이는 데모.

Advanced

Core Topic 04: 무한의 우주 공간, IPv6 혁명 (The IPv6 Revolution)

  • Why to Learn: 43억 개의 IPv4 주소가 완전히 바닥난 현대에서, 공유기(NAT)의 꼼수 없이 모든 디바이스에 진짜 공인 IP를 달아주는 차세대 인터넷 주소 체계를 장악하기 위함입니다.
  • What to Learn:
    • Concepts: IPv6 (128-bit), Hexadecimal Notation (2001:0db8::1), SLAAC (Stateless Address Autoconfiguration), IPSec Mandatory, Dual Stack.
    • Skills: IPv6의 연속된 0을 생략하는 축약 규칙(Zero Compression, ::) 해석 및 IPv4와 IPv6가 공존하는 듀얼 스택(Dual Stack) 환경 이해.
  • How to Learn:
    • 1단계: 우주적 스케일 (128비트): 32비트(43억 개)에서 128비트(3.4×10383.4 \times 10^{38}개)로 커졌습니다. 지구 표면 1제곱미터당 수천 조 개의 IP를 뿌릴 수 있습니다. IP가 남아도니 더 이상 집집마다 공유기(NAT)를 두어 IP를 아껴 쓸 필요가 없어집니다(P2P 통신 부활).
    • 2단계: 스스로 주소 짓기 (SLAAC): IPv4에서는 DHCP 서버가 IP를 하나하나 나눠줬습니다. IPv6 환경에서는 라우터가 "여기 대역은 2001:abcd::/64야"라고 방송만 때리면, 내 노트북이 자기 랜카드(MAC 주소)를 적당히 섞어서 남은 64비트를 스스로 만들고 1초 만에 IP 설정을 끝내버리는(SLAAC) 자가 구성 마법을 해부합니다.
  • Implement: IPv6 주소 압축기 스크립트. 원본 주소 2001:0db8:0000:0000:0000:ff00:0042:8329를 입력받음. 첫째, 각 블록의 선행 0(Leading Zeros) 제거 \rightarrow 2001:db8:0:0:0:ff00:42:8329. 둘째, 연속된 0 블록(0:0:0)을 ::로 단 한 번 압축 \rightarrow 2001:db8::ff00:42:8329로 최적화하는 포매팅 로직 시각화.

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core)
Subnet Mask (서브넷 마스크) IP 주소를 이진수로 폈을 때, '앞에서부터 몇 번째 비트까지가 우리 동네(네트워크) 이름인지'를 가려주는(Masking) 이진수 필터입니다. 기본 동일 네트워크 대역 식별 Network ID / Bitwise AND Default Gateway 십진수 255.255.255.0보다는 이진수 1이 24개 있다는 뜻의 /24 (CIDR 표기법)를 쓰는 것이 훨씬 직관적임 P1:CS2023 core
VLSM (Variable Length Subnet Masking) 할당받은 거대한 IP 블록을 각 부서의 '인원수'에 딱 맞게 /25(128명), /28(16명) 등으로 서로 다른 마스크 길이를 적용해 칼같이 잘라 쓰는 기술입니다. 권장 IP 주소 낭비 최소화 CIDR / Subnetting Classful Addressing 자를 때 무조건 2의 거듭제곱(2, 4, 8, 16...) 단위로만 잘라지므로 10명 부서라도 16개짜리(/28)를 줘야 함 P5:SFIA core
Route Summarization (경로 요약) 라우터의 뇌(메모리)가 폭발하지 않도록, 인접한 수십 개의 작은 서브넷 대역을 수학적으로 묶어 하나의 거대한 슈퍼넷(Supernet)으로 퉁쳐서 광고하는 기법입니다. 실무 라우팅 테이블 크기 최적화 Supernetting / BGP Subnetting (분할) 요약을 잘못하면 우리 회사가 가지지 않은 남의 IP 대역까지 우리 쪽으로 오라고 광고하는 블랙홀이 발생할 수 있음 Industry core
IPv6 (인터넷 프로토콜 버전 6) 32비트(43억 개)라는 빈곤한 IPv4의 한계를 벗어나, 128비트를 사용하여 우주의 모래알 개수만큼 IP를 찍어낼 수 있는 차세대 글로벌 주소 체계입니다. 심화 무제한의 공인 주소 공간 확보 SLAAC / IPSec / 128-bit NAT / IPv4 IP가 너무 많아 굳이 IP를 아끼기 위해 공유기(NAT)를 쓸 필요가 없으며, 단말이 스스로 IP를 설정(SLAAC)함 Industry core

8. References

Primary

  • [P1] CS2023 - Networking and Communication (NC) - Network Layer (Addressing and Subnetting)
  • [P5] SFIA - Network Design (NTDS) - IP Addressing Schemes

Secondary

  • [Computer Networking: A Top-Down Approach] Kurose & Ross - The Internet Protocol (IPv4, Addressing, IPv6)
  • [TCP/IP Illustrated, Volume 1] Kevin R. Fall - IP Addressing (CIDR, Subnetting)

Industry

  • [Cisco Networking Academy] - IPv4 Subnetting and VLSM / IPv6 Basics
  • [IETF RFC 4632] - Classless Inter-domain Routing (CIDR)
  • [IETF RFC 8200] - Internet Protocol, Version 6 (IPv6) Specification

9. Final Checklist

Primary

  • 송신 컴퓨터가 목적지 IP 주소와 자신의 Subnet Mask를 비트 AND 연산하여, 패킷을 로컬 스위치로 바로 쏠지(ARP) 아니면 Default Gateway(라우터)로 던질지 결정하는 판단 회로를 설명할 수 있는가?
  • 과거 A, B, C 클래스로 고정되어 무수한 IP 낭비를 낳았던 Classful 주소 체계의 한계를 지적하고, 이를 슬래시(/) 기반의 유연한 비트 할당으로 타파한 CIDR의 패러다임 전환을 증명할 수 있는가?

Secondary

  • 192.168.1.0/24 네트워크를 100명 규모 1개, 50명 규모 1개, 10명 규모 2개의 서브넷으로 분할(VLSM)할 때, 할당되는 IP 대역과 브로드캐스트 주소, 낭비되는 IP 비율을 계산해 낼 수 있는가?
  • BGP나 OSPF 라우터가 인접한 대역인 10.1.0.0/24, 10.1.1.0/24, 10.1.2.0/24, 10.1.3.0/24 4개의 경로를 10.1.0.0/22 하나로 묶는 경로 요약(Route Summarization)의 비트 공통 분모 추출 원리를 해부할 수 있는가?

Industry

  • IPv6 환경에서 클라이언트가 라우터로부터 Prefix 64비트를 방송(Router Advertisement)받은 후, 자신의 MAC 주소를 기반으로 나머지 64비트 Interface ID를 조합해 IP를 자가 구성하는 SLAAC(Stateless) 과정을 논증할 수 있는가?
  • 기존 IPv4 전용망에서 IPv6 단말 간 통신을 지원하기 위해, IPv6 패킷을 IPv4 패킷 안에 캡슐화하여 터널을 뚫는 기법과 듀얼 스택(Dual Stack) 장비의 과도기적 운용 아키텍처를 설계할 수 있는가?

Network Layer: Addressing & Routing

1 / 7