본문으로 건너뛰기
yutils

IP 주소와 CIDR 는 어떻게 동작할까?

IP 주소가 사실은 그냥 32-bit 정수인 이유, /24 의 의미, 모든 backend 가 만나는 사설 범위, NAT, 그리고 IPv6 가 등장한 이유 — networking jargon 이 아닌 비트 패턴으로.

약 8분 읽기

192.168.1.1, 10.0.0.0/8, 127.0.0.1, 2001:db8::/32. 네트워크 설정·firewall 룰·AWS security group 마다 본다. 그런데 IP 주소는 사실 32-bit 정수 1 개 — 점 3 개는 사람이 읽기 쉽게 분리한 것뿐. 이 가이드는 IP 주소의 비트 구조, CIDR notation, private 범위, NAT, IPv6 등장 이유를 networking jargon 없이 정리한다.

IPv4 = 32-bit 정수 1 개

192.168.1.100
↓
192 . 168 . 1 . 100  ← 사람 친화 표기 (dotted decimal)
↓
11000000.10101000.00000001.01100100  ← 실제 binary
↓
0xC0A80164                              ← 같은 값을 hex 로
↓
3,232,235,876                           ← 같은 값을 decimal 로

4 byte = 32 bit. 각 byte 가 0-255. 점 (.) 은 사람이 읽기 쉽게 분리한 것뿐 — 컴퓨터는 그냥 4 byte 정수.

총 표현 가능한 주소 = 2^32 = 약 43 억. 1981 년 IPv4 표준화 시 "충분" 으로 봤지만 90 년대 인터넷 폭발로 부족 시작.

옛 분류 — 클래스 A/B/C (1981-1993)

초기 IPv4 는 주소를 3 등급으로 분류:

클래스첫 비트범위네트워크 수호스트 수
A0xxx0.0.0.0 - 127.255.255.25512816M 개
B10xx128.0.0.0 - 191.255.255.25516K65K 개
C110x192.0.0.0 - 223.255.255.2552M256 개

문제 — 회사가 500 호스트 필요하면? Class C (256) 이 부족, Class B (65K) 가 낭비. 1993 년 CIDR 도입으로 클래스 폐지.

CIDR — Classless Inter-Domain Routing

주소 뒤에 /N 박아 "앞 N bit 가 네트워크" 라고 표시:

192.168.1.0/24
                ↑
                앞 24 bit = network
                나머지 8 bit = host

binary:
11000000.10101000.00000001.00000000
└────── network (24 bit) ──┘└host(8)─┘

network: 192.168.1.0
host: 0-255 (실제 사용 가능 1-254, .0 과 .255 는 특수)

클래스 폐지 후 유연한 분배 가능:

  • /16 = 호스트 65,534 개 (Class B 동등)
  • /24 = 호스트 254 개 (Class C 동등)
  • /26 = 호스트 62 개 (custom)
  • /28 = 호스트 14 개 (small office)
  • /30 = 호스트 2 개 (point-to-point link)
  • /32 = 1 개 (single host)

실험 — IP / CIDR 계산기 가 CIDR 입력 시 network address · broadcast · range · subnet mask 자동 계산.

Subnet mask — CIDR 의 옛 표현

같은 정보를 표현하는 두 가지 방식:

/24                       (CIDR)
255.255.255.0             (subnet mask)

binary 일치:
11111111.11111111.11111111.00000000
└────── 24 개의 1 ─────┘└── 0 ───┘

Subnet mask 가 옛 라우터·Windows 설정에 흔함. CIDR 이 더 간결.

특수 주소 — 외워 둬야 할 4 가지

범위이름용도
127.0.0.0/8Loopback본인 머신 (보통 127.0.0.1)
10.0.0.0/8Private (Class A)1,600 만 주소. 큰 사내·VPC
172.16.0.0/12Private (Class B)100 만 주소
192.168.0.0/16Private (Class C)65 K 주소. home router 의 기본
169.254.0.0/16Link-localDHCP 실패 시 자동 (Windows APIPA)
224.0.0.0/4Multicast그룹 송신
0.0.0.0/0Any / default"모든 주소". route table·firewall
255.255.255.255Broadcastlocal subnet 의 모든 호스트

RFC 1918 (private 범위) — 인터넷 X, LAN 안에서만. 모든 office / home / AWS VPC 가 이 범위 사용.

NAT — IPv4 부족의 우회책

43 억 주소로 부족. 1994 년 NAT (Network Address Translation):

내부 호스트 100 대 (192.168.1.1 ~ 192.168.1.100)
                       │
                       │
                   ┌───┴───┐
                   │ Router │
                   │  NAT   │  ← public IP 1 개 (203.0.113.5)
                   └───┬───┘
                       │
                  Internet

요청 흐름:
1. 192.168.1.50 이 google.com:443 요청
2. Router 가 source IP 를 203.0.113.5 + 임의 port 로 교체
3. Google 응답 도착 (203.0.113.5:port)
4. Router 가 port 으로 누구한테 가는지 추적 → 192.168.1.50 으로 forward

결과:

  • 여러 내부 호스트가 1 public IP 공유
  • 외부에서 내부로 직접 connect X (router 가 port forward 설정 필요)
  • peer-to-peer 어려움 (양쪽 다 NAT 뒤)
  • VoIP / 게임 등 NAT traversal 기술 필요 (STUN/TURN/ICE)

IPv6 — 128-bit 의 답

IPv4 의 진짜 해결책. 1998 년 표준. 128-bit (2^128 = 약 3.4 × 10^38 주소):

IPv6 표기:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
└──── 8 group × 16-bit ────┘

연속 0 축약 (::):
2001:0db8:85a3::8a2e:0370:7334       ← :: 가 0000:0000 의미

loopback:
::1                                  ← IPv4 의 127.0.0.1

특수:
::/0                                 ← any
fe80::/10                            ← link-local
fc00::/7                             ← private (ULA)
2001:db8::/32                        ← documentation 전용

IPv6 자체에 NAT 없음 — 주소가 충분해서 모든 디바이스가 globally unique. peer-to-peer 자연.

그러나 도입 느림 — 30+ 년 누적 IPv4 인프라 / 호환성. 현재 dual stack (IPv4 + IPv6 동시) 이 표준.

실용 — CIDR 계산

"192.168.1.50 이 10.0.0.0/8 안에 있나?"

10.0.0.0/8 의 network bit = 앞 8 bit
10.0.0.0 의 첫 byte = 10

192.168.1.50 의 첫 byte = 192

10 ≠ 192 → 안에 X

"/24 에 호스트 몇 개?"

/24 = network 24 bit + host 8 bit
host 비트 8 = 2^8 = 256 주소

그러나 사용 가능:
- 0번 (network address) = 예약
- 255번 (broadcast) = 예약
→ 254 개 사용 가능 호스트

"두 CIDR 가 겹치나?"

192.168.0.0/16  vs  192.168.1.0/24

/16 의 network = 앞 16 bit = "192.168"
/24 의 network = 앞 24 bit = "192.168.1"

/24 의 첫 16 bit = "192.168" 일치
→ /24 가 /16 의 부분집합 → 겹침

IP / CIDR 계산기 가 자동 — CIDR 입력 시 range / 호스트 수 / overlap 즉시 표시.

AWS / GCP / Azure 의 VPC CIDR

클라우드 VPC 는 private 범위 안에서 CIDR 직접 선택:

VPC: 10.0.0.0/16          (총 65K 주소)
  ├── Subnet A: 10.0.1.0/24  (254 호스트, AZ-1)
  ├── Subnet B: 10.0.2.0/24  (254 호스트, AZ-2)
  └── Subnet C: 10.0.3.0/24  (254 호스트, AZ-3)

주의 — VPC 끼리 peering 시 CIDR 겹치면 안 됨. 회사 표준 정해 두면 편리 (예: prod = 10.0/16, staging = 10.1/16).

Security group 의 CIDR 사용

# AWS Security Group rule
Inbound HTTPS from 0.0.0.0/0    ← any source (public 노출)
Inbound SSH from 203.0.113.0/24 ← 회사 office IP 범위만
Inbound 5432 from 10.0.0.0/16   ← VPC 내부 만 (Postgres)

firewall 룰의 source / destination 가 CIDR. /32 = 단일 IP, /0 = any.

흔한 함정

1. /24 와 /23 의 호스트 수

/24 = 254 호스트, /23 = 510 호스트 (2 배). 한 bit 차이가 2 배. host 비트 N → 2^N 주소 — 직관 위반.

2. 0.0.0.0/0 의 의미

"default route" 또는 "any source". 모든 IP. firewall 의 0.0.0.0/0 inbound 는 매우 위험 — 명시 의도 시만.

3. CIDR overlap

VPC peering / VPN 양쪽 CIDR 겹치면 라우팅 모호. 첫 설계 시 회사 표준 정해야.

4. IPv4 와 IPv6 mixing

# 다음 둘 다 localhost
127.0.0.1   (IPv4)
::1         (IPv6)

# 서비스 bind 시
0.0.0.0     (IPv4 만)
::          (IPv6 만 — 일부 OS 는 IPv4 도)
[::]        (IPv6 명시)

Docker / Kubernetes 의 dual-stack 설정에서 자주 혼동.

5. NAT 뒤 client IP 가져오기

load balancer 뒤 service 가 req.connection.remoteAddress 보면 LB 의 IP 만. 실제 client IP 는 X-Forwarded-For 헤더에. spoofing 주의 — trusted proxy 만 신뢰.

참고 자료

요약

  • IPv4 = 32-bit 정수 1 개. 점은 사람이 읽기 쉽게 분리.
  • CIDR /N = 앞 N bit 가 network. 클래스 (A/B/C) 폐지 후 표준.
  • Private 범위 — 10/8, 172.16/12, 192.168/16. LAN·VPC·home.
  • NAT 가 IPv4 부족 우회 (1994). public IP 1 개 + 내부 다수 호스트.
  • IPv6 = 128-bit. 2^128 주소. NAT 불필요. 도입 진행 중.
  • AWS / GCP / Azure VPC 가 CIDR 직접 선택. peering 시 overlap 회피.
  • Firewall 룰의 source / destination = CIDR. /32 단일,/0 any.
  • 실험 — IP / CIDR 계산기 가 CIDR 입력 → network · broadcast · range · host 수 자동.
가이드 목록으로