Post

네트워크 기초 다지기 - IP 주소, 서브넷마스크, CIDR, 공인/사설 IP 한 번에 정리

네트워크 기초 다지기 - IP 주소, 서브넷마스크, CIDR, 공인/사설 IP 한 번에 정리

📗 1. 들어가며


개발하다 보면 네트워크 설정을 피할 수가 없다. Docker 컨테이너 간 통신, 클라우드 VPC 설계, nginx 리버스 프록시 설정, IP 기반 접근 제어까지. 정작 이 개념들을 제대로 정리한 적이 없어서 필요할 때마다 검색하기를 반복했는데, 이번에 확실히 정리해두기로 했다.


📗 2. IP 주소의 구조


IPv4 주소는 32비트(4바이트) 숫자로, 점(.)으로 구분된 4개의 옥텟(octet)으로 표기한다.

image

모든 IP 주소는 네트워크 부분호스트 부분으로 나뉜다. 어디까지가 네트워크인지, 어디서부터 호스트인지를 구분하는 것이 서브넷 마스크다.

1
2
3
4
5
192 . 168 . 1 . 100
 │     │    │    └─ 4번째 옥텟 (8비트, 0~255)
 │     │    └────── 3번째 옥텟
 │     └──────────  2번째 옥텟
 └────────────────  1번째 옥텟

📗 3. 클래스 기반 주소 체계 (Classful Addressing)


⚠️ 현재는 거의 사용되지 않는 개념이지만, 서브넷팅과 CIDR의 출발점이 되기 때문에 이해가 필요하다.

초기 인터넷은 IP의 첫 번째 옥텟만 보고 클래스를 결정하는 방식을 사용했다. 클래스에 따라 기본 서브넷 마스크와 호스트 수가 고정이었다.

클래스첫 옥텟 범위기본 서브넷 마스크네트워크 비트호스트 비트기본 호스트 수
A1 ~ 126255.0.0.0 (/8)8비트24비트2²⁴ - 2 = 16,777,214개
B128 ~ 191255.255.0.0 (/16)16비트16비트2¹⁶ - 2 = 65,534개
C192 ~ 223255.255.255.0 (/24)24비트8비트2⁸ - 2 = 254개
D224 ~ 239멀티캐스트 전용
E240 ~ 255연구/예약

📌 호스트 수에서 왜 2를 빼는가

어떤 서브넷이든 두 개의 주소는 호스트로 사용할 수 없다.

1
2
3
4
네트워크 주소  →  호스트 비트가 전부 0  (예: 192.168.1.0)
브로드캐스트   →  호스트 비트가 전부 1  (예: 192.168.1.255)

사용 가능 호스트 수 = 2^(호스트 비트 수) - 2

📌 클래스 A 범위 주의

클래스 A의 첫 옥텟 상한은 126이다. 127.x.x.x는 루프백(Loopback) 주소로 예약되어 있어 실제 할당이 불가능하다. 127.0.0.1이 바로 localhost다.


📗 4. 서브넷 마스크와 네트워크 주소 계산


📌 서브넷 마스크란

서브넷 마스크는 32비트 숫자로, 1로 채워진 부분 = 네트워크, 0으로 채워진 부분 = 호스트를 나타낸다.

1
2
3
4
5
/24의 서브넷 마스크:
11111111.11111111.11111111.00000000
= 255.255.255.0
  └─────────────────────┘└────────┘
      네트워크 (24비트)    호스트(8비트)

📌 네트워크 주소 구하기: IP AND 서브넷마스크

네트워크 주소를 구하려면 IP 주소와 서브넷 마스크를 비트 AND 연산하면 된다.

AND 연산 규칙: 1 AND 1 = 1, 1 AND 0 = 0, 0 AND 0 = 0

image

핵심 원리는 단순하다. 마스크가 1인 자리는 원래 IP를 그대로 남기고, 마스크가 0인 자리는 전부 0으로 만든다.

📌 브로드캐스트 주소 구하기

브로드캐스트 주소는 네트워크 주소에서 호스트 비트를 전부 1로 채운 것이다.

1
2
3
4
5
6
네트워크 주소: 192.168.1.0
           11000000.10101000.00000001.00000000
                                      ↓ 호스트 비트(8비트)를 전부 1로
           11000000.10101000.00000001.11111111

→ 브로드캐스트 = 192.168.1.255

📗 5. CIDR 표기법과 사용 가능한 IP 계산


CIDR(Classless Inter-Domain Routing)은 프리픽스 길이를 슬래시(/)로 표기하는 방식이다.

1
2
3
4
192.168.1.0 / 24
└────────────┘ └┘
  네트워크 주소   프리픽스 길이
               (서브넷마스크에서 1의 개수 = 네트워크 비트 수)

📌 사용 가능한 IP 수 계산 공식

1
2
전체 IP 수        = 2 ^ (32 - 프리픽스 길이)
사용 가능한 IP 수  = 전체 IP 수 - 2

📌 프리픽스별 계산표

CIDR호스트 비트전체 IP 수사용 가능 IP서브넷 마스크주 용도
/824비트16,777,21616,777,214255.0.0.0대기업 사설망 전체
/1616비트65,53665,534255.255.0.0중대형 사설망
/248비트256254255.255.255.0부서 단위 서브넷
/257비트128126255.255.255.128소규모 부서
/266비트6462255.255.255.192소규모 부서
/275비트3230255.255.255.224DMZ·소팀
/284비트1614255.255.255.240소형 서버 그룹
/293비트86255.255.255.248소규모 서버
/302비트42255.255.255.252라우터 간 링크

💡 /30은 딱 2개의 호스트 IP만 제공하므로, 라우터와 라우터 사이 포인트-투-포인트 링크에 정확히 맞는 크기다.

📌 실전 예시: 123.143.101.0/24

1
2
3
4
5
6
7
8
프리픽스:        /24
호스트 비트:     32 - 24 = 8비트
전체 IP 수:      2⁸ = 256개
사용 가능 IP:    256 - 2 = 254개

네트워크 주소:   123.143.101.0    (호스트 비트 전부 0)
브로드캐스트:    123.143.101.255  (호스트 비트 전부 1)
사용 가능 범위:  123.143.101.1  ~  123.143.101.254

📗 6. 서브넷팅 (Subnetting)


서브넷팅이란 하나의 큰 네트워크를 더 작은 여러 개의 서브넷으로 나누는 기법이다. 호스트 비트의 앞쪽 일부를 추가 네트워크 비트로 빌려서 사용하는 원리다.

image

📌 클래스별 서브넷팅 예시

클래스 C (/24 → /26): 4개 서브넷, 각 62호스트

블록 크기 = 2⁶ = 64이므로 각 서브넷이 64 간격으로 시작한다.

서브넷네트워크 주소사용 가능 IP 범위브로드캐스트
1번192.168.1.0/26.1 ~ .62.63
2번192.168.1.64/26.65 ~ .126.127
3번192.168.1.128/26.129 ~ .190.191
4번192.168.1.192/26.193 ~ .254.255

클래스 B (/16 → /24): 256개 서브넷, 각 254호스트

1
2
3
4
5
172.16.0.0/16  →  /24로 쪼개면 256개 부서 서브넷
172.16.0.0/24  → .0.1   ~ .0.254
172.16.1.0/24  → .1.1   ~ .1.254
...
172.16.255.0/24 → .255.1 ~ .255.254

클래스 A (/8 → /16): 256개 서브넷, 각 65,534호스트

1
2
3
4
5
10.0.0.0/8    →  /16으로 쪼개면 256개 대형 서브넷
10.0.0.0/16   → 10.0.0.1   ~ 10.0.255.254
10.1.0.0/16   → 10.1.0.1   ~ 10.1.255.254
...
10.255.0.0/16 → 10.255.0.1 ~ 10.255.255.254

📌 서브넷팅 공식 정리

항목공식
빌린 비트 수새 프리픽스 - 원래 프리픽스
서브넷 수2^(빌린 비트 수)
호스트 비트 수32 - 새 프리픽스
서브넷당 호스트 수2^(호스트 비트 수) - 2
서브넷 블록 크기(간격)2^(호스트 비트 수)

📗 7. 공인 IP vs 사설 IP


📌 공인 IP

인터넷에서 직접 통신 가능한 전 세계 유일한 주소다. IANA → 각국 RIR → ISP → 사용자 순으로 계층적으로 할당된다. 사설 IP 대역을 제외한 나머지가 모두 공인 IP다.

📌 사설 IP (RFC 1918)

IANA가 내부 네트워크 전용으로 예약한 주소 대역으로, 인터넷에서 라우팅되지 않는다. 전 세계 어느 조직이든 중복 사용이 가능하다.

대역CIDR범위원래 클래스
10.0.0.0/810.0.0.0 ~ 10.255.255.255Class A
172.16.0.0/12172.16.0.0 ~ 172.31.255.255Class B 16개
192.168.0.0/16192.168.0.0 ~ 192.168.255.255Class C 256개

⚠️ 172.16.0.0의 사설 대역은 /12다. 172.16.x.x만이 아니라 172.31.x.x까지 전부 사설 IP다. 이 부분을 자주 혼동한다.


📗 8. 특수 목적 IP 주소 대역


주소 대역목적
0.0.0.0/8현재 네트워크 (라우팅 불가)
127.0.0.0/8루프백(Loopback) — 127.0.0.1 = localhost
169.254.0.0/16APIPA — DHCP 실패 시 OS 자동 할당 (링크-로컬)
100.64.0.0/10Carrier-Grade NAT (CGNAT, RFC 6598)
224.0.0.0/4멀티캐스트 (Class D)
240.0.0.0/4연구/예약 (Class E)
255.255.255.255제한 브로드캐스트

💡 169.254.x.x 대역 IP가 PC에 잡혀 있으면 DHCP 서버에서 IP를 받아오지 못한 상태다. 공유기 연결이나 네트워크 설정을 점검해야 한다.


📗 9. 전체 개념 흐름 정리


image


📗 10. 자주 하는 혼동 정리


혼동 포인트올바른 이해
“클래스 A이면 사설 IP”NO. 10.0.0.0/8이 사설인 건 RFC 1918 때문이지 클래스 A라서가 아님
“172.16.x.x만 사설 IP”NO. 172.16.0.0 ~ 172.31.255.255 전체(/12)가 사설 IP
“클래스 C는 무조건 /24”NO. CIDR로 /25, /26 등 자유롭게 지정 가능
“클래스 A 범위가 1~127”NO. 127.x.x.x는 루프백 예약. 클래스 A 할당 범위는 1~126
“사설 IP는 전 세계에 하나”NO. 사설 IP는 조직마다 중복 사용 가능 (인터넷에서 라우팅 안 됨)
“서브넷팅은 클래스 쪼개기”NO. CIDR 기반 서브넷팅은 클래스 경계와 무관
“/30은 작아서 쓸모없다”NO. 라우터 간 포인트-투-포인트 링크에 정확히 맞는 크기

참고

This post is licensed under CC BY 4.0 by the author.