📚 네트워크 · 패킷 분석 › 01. TCP/IP 구조 이해 — 15편
이전 글: 14. IPv4 주소와 서브넷(CIDR) — 같은 네트워크인지 판단하는 법 · 다음 글: 16. Default Gateway
Subnetting(서브넷팅) 은 하나의 IP 네트워크를 더 작은 여러 네트워크(서브넷)로 나누는 작업입니다. 방법은 단순합니다. Subnet Mask의 1 비트를 늘려서, 원래 호스트 부분이던 비트 일부를 네트워크 부분으로 "빌려 오는" 것입니다.
Subnet Mask 자체의 의미와 Network/Host 부분의 구분은 12. Subnet Mask란 무엇인가와 13. Network Address와 Host Address에서, /24 같은 표기와 사설·특수 대역은 14. IPv4 주소와 서브넷(CIDR) — 같은 네트워크인지 판단하는 법에서 다뤘습니다. 이 글은 "나누는 계산 절차" 만 다룹니다.
서브넷을 나누는 이유는 다음과 같습니다.
호스트 비트 h개 중 n개를 빌리면 다음이 성립합니다.
| 항목 | 계산식 | 설명 |
|---|---|---|
| 새 프리픽스 길이 | 원래 프리픽스 + n | 예: /24에서 3비트 빌리면 /27 |
| 만들어지는 서브넷 수 | 2ⁿ | 빌린 비트로 표현 가능한 조합 수 |
| 서브넷당 전체 주소 수 | 2^(h−n) | 남은 호스트 비트로 표현 가능한 주소 수 |
| 서브넷당 사용 가능 호스트 수 | 2^(h−n) − 2 | 네트워크 주소·브로드캐스트 주소 제외 (/31, /32는 예외) |
| 블록 크기 | 256 − (해당 옥텟의 마스크 값) | 서브넷 시작 주소가 증가하는 간격 |
계산 순서를 흐름으로 정리하면 다음과 같습니다.
[요구사항] 필요한 서브넷 수 또는 서브넷당 호스트 수
↓
[비트 수 결정] 2ⁿ ≥ 서브넷 수 또는 2^h − 2 ≥ 호스트 수
↓
[새 마스크] 프리픽스 = 원래 + n → 마스크 값 계산
↓
[블록 크기] 256 − 마스크 옥텟 값
↓
[범위 나열] 시작 주소(네트워크) ~ 다음 시작 − 1(브로드캐스트)
/31과 /32 예외: /31은 두 장비만 연결하는 점대점 링크에서 네트워크·브로드캐스트 주소 없이 두 주소를 모두 쓰도록 RFC 3021에 정의되어 있고, /32는 단일 호스트를 가리킵니다. 일반 LAN 계산에서는 "−2" 규칙을 적용합니다.
10.10.0.40/27 같은 표기는 호스트 주소를 가리킬 뿐, 그 서브넷의 시작은 .32입니다.자주 쓰는 크기를 한 번에 보면 다음과 같습니다(4번째 옥텟 기준).
| 프리픽스 | 마스크 | 블록 크기 | /24 안의 서브넷 수 | 사용 가능 호스트 |
|---|---|---|---|---|
| /25 | 255.255.255.128 | 128 | 2 | 126 |
| /26 | 255.255.255.192 | 64 | 4 | 62 |
| /27 | 255.255.255.224 | 32 | 8 | 30 |
| /28 | 255.255.255.240 | 16 | 16 | 14 |
| /29 | 255.255.255.248 | 8 | 32 | 6 |
| /30 | 255.255.255.252 | 4 | 64 | 2 |
계산 예시(값은 환경마다 다름): 10.10.0.0/24를 /27로 나눕니다. 3비트를 빌렸으므로 서브넷 8개, 블록 크기 32, 서브넷당 호스트 30개입니다.
| 서브넷 | 사용 가능 범위 | 브로드캐스트 |
|---|---|---|
| 10.10.0.0/27 | .1 ~ .30 | .31 |
| 10.10.0.32/27 | .33 ~ .62 | .63 |
| 10.10.0.64/27 | .65 ~ .94 | .95 |
| … | … | … |
| 10.10.0.224/27 | .225 ~ .254 | .255 |
VLSM 예시(값은 환경마다 다름): 192.168.10.0/24에 서버망 100대, 사용자망 50대, 관리망 10대, 라우터 간 링크 1개가 필요하다면 큰 것부터 배치합니다.
서버망 100대 → /25 (126) → 192.168.10.0 ~ .127
사용자망 50대 → /26 (62) → 192.168.10.128 ~ .191
관리망 10대 → /28 (14) → 192.168.10.192 ~ .207
링크 2대 → /30 (2) → 192.168.10.208 ~ .211
남은 공간 → 192.168.10.212 ~ .255 (추후 할당)
실습 예시: Linux에서 계산 결과를 도구로 검증할 수 있습니다. 패키지 이름이 배포판마다 다릅니다.
# Ubuntu
sudo apt install -y ipcalc
ipcalc 10.10.0.40/27
# Rocky Linux (기본 제공되는 ipcalc는 옵션 형식이 다름)
ipcalc -n -b -m 10.10.0.40/27
Ubuntu의 ipcalc는 Network·Broadcast·HostMin·HostMax를 표로 보여 주고, Rocky의 ipcalc는 NETWORK=10.10.0.32, BROADCAST=10.10.0.63 같은 형식으로 출력합니다. 손 계산과 결과가 같은지 확인하는 용도로 씁니다.
관제자는 서브넷을 직접 나누기보다 "이 IP가 어느 구역에 속하는가" 를 판단하는 데 서브넷 계산을 씁니다.
흔적이 남는 곳
관제자가 확인할 질문
오탐 주의
/25에서 .127은 브로드캐스트이고 .128은 다른 서브넷의 네트워크 주소입니다.