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.