Infra Architecture/Network Fundamentals

Network Fundamentals - 04. IP와 서브네팅

우편번호 시스템 — IP 주소와 서브네팅

192.0.2.10/24라는 주소를 본 적이 있을 것이다. 숫자 4개와 슬래시, 그리고 또 숫자. 이 표기법이 — 인터넷에서 "어느 컴퓨터가 어디에 있는지"를 지정하는 핵심이다. 초심자에게는 외계어처럼 보이지만, 원리를 이해하면 — 이 한 줄이 "이 컴퓨터의 주소와, 이 컴퓨터가 속한 동네의 크기"를 동시에 말해준다는 걸 알게 된다. 마치 "서울시 강남구 테헤란로 123"이라는 주소가 — 건물의 위치와, 그 건물이 강남구에 속한다는 걸 동시에 말하듯이.

이 글은 IP 주소와 서브네팅(subnetting)을 다룬다. IP 주소가 무엇인지, "/24" 같은 서브넷 마스크가 무엇인지, CIDR(Classless Inter-Domain Routing)가 왜 만들어졌는지, IPv4와 IPv6의 차이는 무엇인지. 이전 글에서 본 L2(MAC 주소·이더넷) 위에 — L3(IP 주소·라우팅)가 어떻게 얹히는지를 본다. 비유하자면 — L2가 "같은 동네 안의 문패"라면, L3는 "우편번호 시스템"이다. 우편번호가 다른 동네로 편지를 보내려면 — 라우터(배송 센터)가 중간에서 방향을 바꿔줘야 한다.

IP 주소 — 인터넷의 주소 체계

IP 주소(Internet Protocol address) 는 인터넷에 연결된 모든 장치의 논리적 주소다. 전화번호나 집 주소와 같은 역할 — "데이터를 어디로 보낼까?"의 답이 IP 주소다. 이전 글에서 본 MAC 주소가 하드웨어 고정 번호라면, IP 주소는 네트워크에서 할당하는 논리 주소다. 컴퓨터를 다른 네트워크로 옮기면 IP가 바뀐다(집 이사하면 주소가 바뀌듯). MAC은 안 바뀐다(주민등록번호처럼).

IPv4 — 32비트 주소

IPv4(Internet Protocol version 4) 는 1981년 RFC 791로 정의된 IP 주소 체계. 32비트로 표현되며, 4개의 8비트 숫자(octet)를 점으로 연결한다. 예: 192.0.2.10.

32비트: 11000000 00000000 00000010 00001010
10진수:   192       0        2       10

32비트로 표현 가능한 주소 수는 2의 32제곱 = 약 43억 개다. 1981년엔 충분해 보였지만 — 인터넷이 폭발적으로 성장하면서 2010년대에 고갈됐다(IANA의 IPv4 풀이 2011년에, APNIC이 2015년에 고갈). 이 고갈 문제를 해결하기 위해 만들어진 것이 IPv6다(아래 참조).

IPv4 주소의 분류 — 공인 IP와 사설 IP

모든 IP 주소가 인터넷에 직접 노출되는 건 아니다. IP 주소는 두 종류로 나뉜다.

공인 IP(public IP) — 인터넷에 직접 연결되는 고유한 주소. ISP(인터넷 서비스 제공사업자)가 할당한다. 예: 203.0.113.1. 전 세계에서 유일해야 한다.

사설 IP(private IP) — 사내 네트워크·가정용 네트워크 안에서만 쓰는 주소. 인터넷에 직접 노출되지 않는다. RFC 1918이 정의한 세 개의 대역이 있다:

  • 10.0.0.0/8 (10.x.x.x) — 대규모 사설망
  • 172.16.0.0/12 (172.16.x.x ~ 172.31.x.x) — 중규모
  • 192.168.0.0/16 (192.168.x.x) — 소규모 (가정용 공유기가 주로 씀)

가정용 공유기가 192.168.0.10을 PC에 할당하지만 — 이 주소는 인터넷에서 안 보인다. 공유기가 NAT(Network Address Translation) 로 사설 IP를 공인 IP로 변환해서 인터넷에 내보낸다. 한 집의 모든 기기(PC·스마트폰·TV)가 같은 공인 IP를 공유하는 게 NAT의 원리다.

주소 유형 범위 특징
공인 IP 전역 유일 인터넷 직접 연결 203.0.113.1
사설 IP (RFC 1918) 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 사내망 전용, NAT로 인터넷 192.168.0.10
루프백 127.0.0.0/8 자기 자신 (localhost) 127.0.0.1
링크 로컬 169.254.0.0/16 DHCP 실패 시 자동 할당 169.254.1.1
TEST-NET 192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24 문서/예시 전용 (RFC 5737) 192.0.2.1

마지막 TEST-NET 대역은 — 이 학습서에서 예시 IP로 쓰는 대역이다. 실제 인터넷에서는 할당되지 않으므로, 문서와 예시에 안전하게 쓸 수 있다.

서브넷 마스크 — 동네의 크기를 정한다

IP 주소만으로는 — "이 컴퓨터와 저 컴퓨터가 같은 네트워크(동네)에 있나?"를 알 수 없다. 그걸 알려주는 것이 서브넷 마스크(subnet mask) 다. 서브넷 마스크는 IP 주소를 "네트워크 부분"과 "호스트 부분"으로 나눈다.

비유하자면 — "서울시 강남구 테헤란로 123"이라는 주소에서, "서울시 강남구"가 네트워크 부분(어느 동네?), "테헤란로 123"이 호스트 부분(동네 안의 어느 집?)이다. 서브넷 마스크는 — "어디까지가 동네 이름이고, 어디서부터가 집 번호인가?"를 정한다.

192.0.2.10/24에서 /24가 서브넷 마스크의 CIDR 표기다. 이것의 의미는 — 32비트 중 앞의 24비트가 네트워크 부분, 나머지 8비트가 호스트 부분이라는 뜻.

IP 주소:     192.0.2.10
서브넷:      /24 (= 255.255.255.0)

이진수:
IP:    11000000.00000000.00000010.00001010
마스크: 11111111.11111111.11111111.00000000
       ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^
       네트워크 부분 (24비트)    호스트 부분 (8비트)

네트워크 주소: 192.0.2.0  (호스트 부분을 전부 0으로)
브로드캐스트:   192.0.2.255 (호스트 부분을 전부 1로)
가용 호스트:    192.0.2.1 ~ 192.0.2.254 (254개)

/24 네트워크는 — 호스트 254개를 가질 수 있다(256개 중 네트워크 주소 .0과 브로드캐스트 .255를 빼면). 가정용 공유기의 기본 서브넷이 /24다 — 192.168.0.0/24에 254대의 기기를 연결할 수 있다.

CIDR — 클래스 없는 주소 할당

1993년 이전에는 IP 주소를 "클래스(class)"라는 고정 단위로 나눴다. 클래스 A(/8, 1600만 호스트), 클래스 B(/16, 6.5만 호스트), 클래스 C(/24, 254 호스트). 문제는 — 500대의 컴퓨터가 있는 회사가 클래스 B(/16)를 받으면 6만 개가 낭비되고, 클래스 C(/24) 두 개를 받으면 라우팅 테이블이 복잡해진다. 유연성이 없었다.

CIDR(Classless Inter-Domain Routing, RFC 4632) 는 — 클래스 경계를 없애고, /N 형태로 임의의 비트 수에서 네트워크를 나눌 수 있게 만들었다. /23이면 510호스트, /28이면 14호스트. 필요한 크기만큼 정확히 나눌 수 있다. 현대 인터넷은 전부 CIDR 기반으로 동작한다.

서브넷팅 계산 — 초심자를 위한 단계별 예시

서브넷팅을 계산하는 법을 구체적으로 보자. "192.0.2.0/24를 /26으로 나누면 몇 개의 서브넷이 생기고, 각각의 범위는?"이라는 질문에 답해 본다.

1단계 — 비트 차이 계산: /24에서 /26으로 갈 때, 2비트를 더 쓴다(26 - 24 = 2). 2비트가 추가되면 2의 2제곱 = 4개의 서브넷이 생긴다.

2단계 — 각 서브넷의 호스트 수: /26이면 호스트 부분은 32 - 26 = 6비트. 2의 6제곱 = 64개 주소에서 네트워크(.0)와 브로드캐스트(.63)를 빼면 62개의 가용 호스트.

3단계 — 각 서브넷의 범위: 64개 주소 단위로 4개 서브넷을 나눈다.

서브넷 네트워크 주소 첫 호스트 마지막 호스트 브로드캐스트
1 192.0.2.0/26 192.0.2.1 192.0.2.62 192.0.2.63
2 192.0.2.64/26 192.0.2.65 192.0.2.126 192.0.2.127
3 192.0.2.128/26 192.0.2.129 192.0.2.190 192.0.2.191
4 192.0.2.192/26 192.0.2.193 192.0.2.254 192.0.2.255

이 계산이 익숙해지면 — /24/28(16개 서브넷, 각 14호스트)로, /16/22(16개 서브넷, 각 1022호스트)로 나누는 것도 같은 원리로 할 수 있다.

서브넷 마스크 요약표

자주 쓰는 CIDR 접두사와 대응하는 호스트 수를 정리한다. 이 표를 외울 필요는 없지만 — 자주 보다 보면 자연히 익숙해진다.

CIDR 서브넷 마스크 가용 호스트 수 전형 용도
/8 255.0.0.0 16,777,214 대규모 ISP
/16 255.255.0.0 65,534 대기업 캠퍼스
/24 255.255.255.0 254 가정·소규모 사무실
/25 255.255.255.128 126 중간 규모 서브넷 분할
/26 255.255.255.192 62 VLAN 분할
/27 255.255.255.224 30 작은 서브넷
/28 255.255.255.240 14 점대점 연결, 관리망
/30 255.255.255.252 2 라우터 간 연결 (point-to-point)
/32 255.255.255.255 1 단일 호스트 (특정 IP 지정)

/30이 라우터 간 연결에 자주 쓰인다 — 두 라우터만 연결하면 2개 호스트면 충분하니까. /32는 "이 IP 하나만"을 지정할 때 쓴다 — 방화벽 규칙에서 특정 IP를 허용/거부할 때.

게이트웨이 — 다른 동네로 가는 문

같은 서브넷(/24 등) 안의 컴퓨터들은 — 스위치(L2)를 통해 MAC 주소로 직접 통신한다(이전 글에서 본 것). 하지만 — 다른 서브넷으로 통신하려면 — 라우터(L3)를 거쳐야 한다. 그 라우터가 바로 게이트웨이(gateway) 또는 기본 게이트웨이(default gateway) 다.

컴퓨터가 패킷을 보낼 때:

  1. 목적지 IP가 같은 서브넷이면 — ARP로 목적지 MAC을 찾아 직접 이더넷 프레임으로 보낸다.
  2. 목적지 IP가 다른 서브넷이면 — 게이트웨이(라우터)의 MAC으로 보낸다. 게이트웨이가 그 패킷을 받아서 다음 라우터로 전달한다(forwarding).

이 분기가 — 서브넷 마스크로 결정된다. "목적지 IP와 내 서브넷 마스크를 AND 연산해서, 내 네트워크 주소와 같은가?" 같으면 직접, 다르면 게이트웨이로.

# 라우팅 테이블 확인 — 어디로 가는 게이트웨이가 설정돼 있는지
ip route show
# 기본 게이트웨이 (default route)
ip route show default
# 예상 출력 (ip route show)
default via 192.0.2.1 dev eth0              # 기본 게이트웨이
192.0.2.0/24 dev eth0 proto kernel scope link  # 같은 서브넷은 직접

default via 192.0.2.1은 — "다른 서브넷으로 가는 패킷은 전부 192.0.2.1(게이트웨이)로 보내라"는 뜻. 게이트웨이가 알아서 다음 라우터로 전달한다. 라우팅의 세부(어떻게 게이트웨이가 경로를 찾나)는 다음 글에서 다룬다.

IPv6 — IPv4 고갈의 해답

IPv4의 43억 주소가 고갈되면서 — 1998년 IPv6(RFC 2460, 현재 RFC 8200) 이 만들어졌다. IPv6는 128비트 주소 체계로 — 약 340간(3.4 x 10의 38제곱)개의 주소를 제공한다. "지구의 모든 모래알에 IP 주소를 할당할 수 있다"는 비유가 있을 정도.

IPv6 주소는 8개의 16비트 그룹을 콜론으로 연결한다. 예: 2001:0db8:85a3:0000:0000:8a2e:0370:7334. 길어서 — 연속된 0 그룹은 ::으로 줄일 수 있다. 같은 주소를 2001:0db8:85a3::8a2e:0370:7334로 줄여 쓴다.

IPv6와 IPv4의 주요 차이:

특성 IPv4 IPv6
주소 길이 32비트 128비트
주소 수 약 43억 약 340간 (3.4 x 10^38)
표기 10진수 점 (192.0.2.1) 16진수 콜론 (2001:db8::1)
서브넷 마스크 /N 접두사 (예: /24) /N 접두사 (예: /64)
NAT 일반적 (사설 IP + NAT) 원칙적으로 불필요 (주소 충분)
DHCP DHCPv4 DHCPv6 또는 SLAAC(자동 설정)
ARP ARP NDP(Neighbor Discovery Protocol)
브로드캐스트 있음 없음 (멀티캐스트로 대체)

IPv6의 /64는 사실상 표준이다 — IPv6 주소의 절반(64비트)이 네트워크, 나머지 절반이 호스트. 가정용 ISP는 보통 /56 또는 /60을 할당하고, 그 안에서 /64 서브넷 여러 개를 만든다. IPv6에서는 NAT가 원칙적으로 불필요하다 — 주소가 충분해서 모든 장치에 공인 IPv6 주소를 직접 할당할 수 있기 때문. 하지만 보안상 NAT를 쓰는 경우도 있다.

IPv6 도입은 느리지만 꾸준히 진행되고 있다. Google 트래픽의 약 45%가 IPv6로 이루어지는 시점(2026년 기준)이 됐다. 클라우드(AWS·GCP)는 기본적으로 IPv4와 IPv6 듀얼 스택(dual-stack)을 지원한다.

NAT — 사설 IP와 공인 IP를 연결하는 기술

NAT(Network Address Translation) 는 — 사설 IP 주소를 공인 IP 주소로 변환하는 기술이다. 가정용 공유기가 — 내부 기기의 사설 IP(192.168.0.10)를 공용 인터넷으로 보낼 때 공인 IP(203.0.113.1)로 바꾸는 것이다. NAT 덕분에 — 전 세계 수십억 대의 기기가 약 43억 개의 IPv4 주소로 인터넷을 쓸 수 있다.

가장 흔한 형태는 PAT(Port Address Translation) 또는 NAPT — 여러 사설 IP를 하나의 공인 IP + 서로 다른 포트 번호로 구분한다. 가정의 PC(192.168.0.10:54321)·스마트폰(192.168.0.11:54322)·TV(192.168.0.12:54323)가 — 공유기의 공인 IP 하나(203.0.113.1)로 나갈 때, 각각 다른 포트 번호로 구분된다.

실습 — IP와 서브넷팅 직접 확인

1. 자신의 IP 주소와 서브넷

# IP 주소, 서브넷 마스크, MAC을 한번에
ip -br addr show

확인할 것: inet 192.0.2.10/24에서 /24가 서브넷. 192.0.2.0/24 네트워크에 속해 있고, 호스트 주소는 .10.

2. 라우팅 테이블 — 어디로 가는 경로가 있는지

# 전체 라우팅 테이블
ip route show
# 기본 게이트웨이만
ip route show default

확인할 것: default via 뒤의 게이트웨이 IP. 같은 서브넷 트래픽은 dev eth0로 직접, 다른 서브넷은 게이트웨이로.

3. 다른 네트워크인지 판단하기

# 목적지 IP가 같은 서브네인지 확인
# 예: 내 IP가 192.0.2.10/24일 때, 192.0.2.50은 같은 네트워크, 10.0.0.1은 다른 네트워크
ip route get 192.0.2.50   # "dev eth0"가 나오면 같은 네트워크
ip route get 10.0.0.1     # "via <gateway>"가 나오면 다른 네트워크

확인할 것: ip route get의 결과로 — dev eth0 src 192.0.2.10이면 같은 서브넷(직접 전달). via 192.0.2.1 dev eth0이면 다른 서브넷(게이트웨이 경유).

4. 서브넷 계산 도구

# ipcalc로 서브넷 정보 계산 (설치 필요: apt install ipcalc)
ipcalc 192.0.2.10/26

확인할 것: 네트워크 주소·브로드캐스트·호스트 범위·가용 호스트 수가 한 번에 나온다.

# 예상 출력 (ipcalc 192.0.2.10/26)
Address:   192.0.2.10          11000000.00000000.00000010.00 001010
Netmask:   255.255.255.192 = 26 11111111.11111111.11111111.11 000000
Wildcard:  0.0.0.63
=>
Network:   192.0.2.0/26        11000000.00000000.00000010.00 000000
HostMin:   192.0.2.1           11000000.00000000.00000010.00 000001
HostMax:   192.0.2.62          11000000.00000000.00000010.00 111110
Broadcast: 192.0.2.63          11000000.00000000.00000010.00 111111
Hosts/Net: 62                  Class C

5. IPv6 주소 확인

# IPv6 주소가 할당돼 있는지
ip -br -6 addr show
# IPv6 라우팅
ip -6 route show default

확인할 것: IPv6 주소(inet6 2001:db8::1/64)가 보이면 IPv6가 활성화돼 있는 것. 클라우드 VM은 보두 IPv6를 지원하지만, 활성화 여부는 설정에 따라 다름.

미검증: ipcalc는 별도 설치 필요. IPv6 주소는 네트워크 환경에 따라 없을 수 있음. ip route get은 커널 버전에 따라 출력 형태가 약간 다를 수 있음.

서브네팅은 주소 공간의 "토지 구획정리"다

서브네팅을 이해하면 — "이 IP와 저 IP가 통신할 때 스위치를 거치나 라우터를 거치나?"에 답할 수 있다. 같은 서브넷이면 스위치(L2), 다른 서브넷이면 라우터(L3). 이 구분이 — 네트워크 설계의 기본이다. VLAN을 어떻게 나눌지, 서브넷을 어떻게 할당할지, 라우터를 어디에 둘지가 — 전부 서브네팅에서 출발한다.

다음 글에서는 — 라우터가 "다른 서브넷으로" 패킷을 어떻게 전달하는지를 다룬다. 라우팅. 라우팅 테이블이 어떻게 만들어지고, OSPF·BGP가 어떻게 라우터 간에 경로 정보를 교환하는지. 우편번호가 다른 도시로 편지가 배송되는 경로가 — 어떻게 결정되는지를 보는 것이다.


참고

  • RFC 791, Postel, J. "Internet Protocol", 1981, Internet Standard — IPv4 표준. 접근 2026-07-21
  • RFC 8200, Deering, S., Hinden, R. "Internet Protocol, Version 6 (IPv6) Specification", 2017, Internet Standard — IPv6 표준. 접근 2026-07-21
  • RFC 4632, Fuller, V., Li, T. "Classless Inter-domain Routing (CIDR)", 2006, Best Current Practice — CIDR 표준. 접근 2026-07-21
  • RFC 1918, Rekhter, Y. et al. "Address Allocation for Private Internets", 1996, Best Current Practice — 사설 IP 대역. 접근 2026-07-21
  • RFC 5737, Arkko, J. et al. "IPv4 Address Blocks Reserved for Documentation", 2010 — TEST-NET 대역. 접근 2026-07-21
  • Kurose, J. F., Ross, K. W. 8th ed, 2021, Ch.4 — IP 주소·서브네팅. 접근 2026-07-21
  • Stevens, W. R., Fall, K. <TCP/IP Illustrated, Volume 1> 2nd ed, 2011, Ch.2·Ch.5 — IPv4·IPv6. 접근 2026-07-21
  • Honeyman, P. "The Classless Inter-Domain Routing (CIDR) Tutorial", 1995 — CIDR 실전. 접근 2026-07-21