서브넷의 첫 주소로, 호스트 비트가 모두 0인 주소다.
구하는 법 — 블록 경계를 찾는다
-
192.168.1.130/26
-
① /26 의 블록 크기는 64
-
② 130 이하의 64의 배수 최대값 → 128
-
③ 네트워크 주소 = 192.168.1.128
이진 AND로 확인하면 왜 그런지 보인다.
- 주소 — 192.168.1.130 = ... .10000010
- 마스크 — /26 = ... .11000000 AND 연산 ----------------------------- 네트워크 192.168.1.128 = ... .10000000 ← 호스트 비트가 전부 0
호스트에 할당할 수 없다
192.168.1.128 ← 네트워크 주소 (할당 불가)
192.168.1.129 ┐
... ├ 사용 가능 62개
192.168.1.190 ┘
192.168.1.191 ← 브로드캐스트 (할당 불가)
192.168.1.192 ← 다음 서브넷의 네트워크 주소
.128을 인터페이스에 박아 넣는 것이 가장 흔한 실수다.
셋째 옥텟에 걸칠 때
172.16.35.200/21
/21 → 호스트 비트 11 → 셋째 옥텟 블록 크기 2^(11-8) = 8 35 이하의 8의 배수 최대값 → 32 네트워크 주소 = 172.16.32.0
호스트 비트가 걸쳐 있는 옥텟에서 블록 크기를 구한다는 원리는 동일하다.
두 주소가 같은 네트워크인지 판정
각 주소를 자기 마스크로 AND 해 네트워크 주소가 같은지 본다
10.0.5.20/22 → 셋째 옥텟 5, 블록 4 → 네트워크 10.0.4.0
10.0.6.30/22 → 셋째 옥텟 6, 블록 4 → 네트워크 10.0.4.0
같다 → 라우터 없이 직접 통신 가능
면접 함정
- ❌ "첫 IP를 호스트에 준다" → 네트워크 주소라 쓸 수 없다.
- ❌ 첫 옥텟만 보고 판단 → CIDR에서 클래스는 기준이 아니다.
왜 못 쓰나 — 역사적 이유
초기 구현에서 '호스트 비트가 전부 0' 은 "이 네트워크 자체" 를 가리키는 의미로 예약됐다
일부 현대 장비는 /31 처럼 예외를 허용하지만, 범용 환경에서는 여전히 쓰지 않는 것이 안전하다
서브넷 개수 계산과 헷갈리지 않기
| 호스트 개수 | 2^h - 2 | ← 네트워크·브로드캐스트를 뺀다 |
|---|---|---|
| 서브넷 개수 | 2^(빌린 비트) | ← 빼지 않는다 |
- 192.168.0.0/16 을 /24 로 나누면
- 빌린 비트 8 → 서브넷 2^8 = 256개 (255가 아니다)
- 각 서브넷의 호스트는 2^8 - 2 = 254개
실무에서 마주치는 형태
ip route 출력의 첫 열이 네트워크 주소다 10.0.4.0/22 dev eth0
AWS 서브넷도 네트워크 주소로 표기된다
- 10.0.1.0/24 — → 실제 할당 가능은 .4 ~ .254 (AWS 는 각 서브넷의 앞 4개와 마지막 1개를 예약한다 — 표준보다 더 뺀다)
클라우드마다 예약 개수가 다르다는 점도 알아 둘 만하다. AWS는 5개를 예약하므로 /28이면 실사용이 11개뿐이다.