🏷️ IP 주소 클래스 · 서브넷 마스크 · CIDR
전체 막대는 IPv4의 32비트다. CIDR은 /27처럼 경계를 더 세밀하게 정한다. D는 멀티캐스트, E는 예약 대역으로 이 호스트 분할 방식에 해당하지 않는다.
경계 숫자 4개만
128 · 192 · 224 · 240
↓ 각 구간의 크기
A: 128개 (0~127)
B: 64개 (128~191)
C: 32개 (192~223)
D: 16개 (224~239)
E: 16개 (240~255)
네트워크 비트 = 8 · 16 · 24
A → /8 255.0.0.0
B → /16 255.255.0.0
C → /24 255.255.255.0
D · E는 네트워크/호스트 구분이 없다
A는 첫 칸, B는 두 칸, C는 세 칸이 네트워크.
| 클래스 | 선두 비트 | 첫 옥텟 범위 | 기본 마스크 | 네트워크 : 호스트 | 네트워크 수 | 네트워크당 호스트 수 | 용도 |
|---|---|---|---|---|---|---|---|
| A | 0xxxxxxx | 1 ~ 126 0·127 제외 |
255.0.0.0 /8 |
8 : 24 bit | 2⁷ = 128 사용 126 |
2²⁴ − 2 = 16,777,214 |
초대규모 기관 (국가·대기업) |
| B | 10xxxxxx | 128 ~ 191 | 255.255.0.0 /16 |
16 : 16 bit | 2¹⁴ = 16,384 | 2¹⁶ − 2 = 65,534 |
중규모 (대학·중견기업) |
| C | 110xxxxx | 192 ~ 223 | 255.255.255.0 /24 |
24 : 8 bit | 2²¹ = 2,097,152 | 2⁸ − 2 = 254 |
소규모 (소기업·가정) |
| D | 1110xxxx | 224 ~ 239 | 없음 | 네트워크 / 호스트 구분이 없다 | 멀티캐스트 (1:다 전송) | ||
| E | 1111xxxx | 240 ~ 255 | 없음 | 할당되지 않음 | 연구 · 예약 (실험용) | ||
• A 클래스는 0 ~ 127 이지만 실제 사용 범위는 1 ~ 126. 0은 예약, 127은 루프백이라 빠진다.
• 호스트 수에서 −2 를 빼먹지 말 것 (네트워크 주소 + 브로드캐스트 주소는 장비에 못 준다).
• D 클래스는 멀티캐스트, E 클래스는 예약. 둘 다 서브넷 마스크가 없다.
| 주소 | 이름 | 의미 |
|---|---|---|
| 0.0.0.0 | This network / 기본 경로 | "이 네트워크" 또는 주소 미할당 상태. 라우팅 테이블에서는 기본 경로(default) |
| 127.0.0.0/8 | 루프백 (Loopback) | 자기 자신. 127.0.0.1 = localhost. 이것 때문에 A 클래스가 126까지 |
| 255.255.255.255 | 제한적 브로드캐스트 | 같은 네트워크 전체에 전송. 라우터를 넘지 못함 |
| 169.254.0.0/16 | APIPA (링크 로컬) | DHCP 서버를 못 찾았을 때 자동으로 붙는 주소. 이 주소가 보이면 DHCP 실패 신호 |
| 호스트부 전부 0 | 네트워크 주소 | 네트워크 자체를 가리킴 (예: 192.168.1.0) |
| 호스트부 전부 1 | 브로드캐스트 주소 | 해당 네트워크 전체 (예: 192.168.1.255) |
| 클래스 | 대역 | CIDR | 개수 | 주로 쓰이는 곳 |
|---|---|---|---|---|
| A | 10.0.0.0 ~ 10.255.255.255 | 10.0.0.0/8 | 1개 네트워크 약 1,678만 호스트 | 대기업 사내망, 클라우드 VPC |
| B | 172.16.0.0 ~ 172.31.255.255 | 172.16.0.0/12 | 16개 네트워크 | 중규모 사내망, 도커 기본 대역 |
| C | 192.168.0.0 ~ 192.168.255.255 | 192.168.0.0/16 | 256개 네트워크 | 가정용 공유기 (가장 익숙한 대역) |
| 용도 | IPv4 | IPv6 | 한 줄 설명 |
|---|---|---|---|
| 루프백 Loopback |
127.0.0.0/8 (127.0.0.1) |
::1/128 | 자기 자신. 패킷이 밖으로 나가지 않고 되돌아온다 |
| 미지정 Unspecified |
0.0.0.0 | :: (::/128) | "아직 주소가 없다". 출발지로만 쓰고 목적지로는 못 쓴다 |
| 링크 로컬 Link-Local |
169.254.0.0/16 APIPA |
fe80::/10 | 같은 링크(서브넷) 안에서만 유효. 라우터를 넘지 못한다 |
| 사설 · 내부용 | 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 |
fc00::/7 (실제는 fd00::/8) |
조직 내부 전용. IPv6에서는 ULA(Unique Local Address) |
| 멀티캐스트 | 224.0.0.0/4 (224 ~ 239, D 클래스) |
ff00::/8 | 그룹 전송. 가입한 노드만 받는다 |
| 브로드캐스트 | 255.255.255.255 (호스트부 전부 1) |
없음 | IPv6는 멀티캐스트(ff02::1)와 애니캐스트로 대체 기출 단골 |
| 문서·예제용 | 192.0.2.0/24 등 | 2001:db8::/32 | 문서에 쓰라고 예약된 대역. 실제 통신에는 안 쓴다 |
끝이 1 → 127.0.0.1 / ::1 = 자기 자신(루프백)
전부 0 → 0.0.0.0 / :: = 주소 없음(미지정)
🧠 IPv6 앞 두 글자 — fe80은 동네(링크 로컬), ff로 시작하면 무조건 멀티캐스트. f로 시작하면 특수 주소라고 묶어 기억하면 된다.
| 항목 | 내용 |
|---|---|
| 의미 | 자기 자신을 가리키는 주소. localhost. NIC를 거치지 않고 커널에서 되돌아온다 |
| IPv4 범위 | 127.0.0.0 ~ 127.255.255.255 — /8 통째로 예약. 이 때문에 A 클래스가 1~126까지 |
| IPv6 | ::1 단 하나만 예약 (IPv4처럼 1,670만 개를 낭비하지 않는다) |
| 용도 | TCP/IP 스택 정상 동작 확인 — ping 127.0.0.1 이 되면 최소한 내 컴퓨터의 네트워크 소프트웨어는 살아 있다 |
• 루프백 주소(127.0.0.1) = 3계층 IP 주소. 자기 자신
• 루프백 시험(Loop-Back Test) = 회선 점검 기법. 신호를 되돌려 어디까지 정상인지 확인
시험에 둘 다 나온다. 루프백 시험은 4과목 「운용관리 · 장애대응」 섹션 참고.
IPv4 — 169.254.0.0/16 (APIPA)
DHCP 서버를 못 찾았을 때 OS가 자동으로 붙인다
→ 이 주소가 보이면 DHCP 실패 신호. 정상 상태가 아니다
인터넷이 안 될 때 ipconfig에 169.254가 뜨면 원인은 DHCP
IPv6 — fe80::/10
모든 인터페이스가 항상 하나씩 자동 생성한다
→ 정상이며, 없으면 오히려 이상하다
이웃 탐색(NDP)·라우터 광고가 이 주소로 오간다
| 대상 | IPv4 | IPv6 |
|---|---|---|
| 모든 노드(호스트) | 224.0.0.1 | ff02::1 |
| 모든 라우터 | 224.0.0.2 | ff02::2 |
| OSPF 전체 / DR·BDR | 224.0.0.5 / 224.0.0.6 | ff02::5 / ff02::6 |
| RIP | 224.0.0.9 RIPv2 | ff02::9 RIPng |
| 요청 노드 Solicited-Node | — | ff02::1:ffxx:xxxx |
요청 노드 멀티캐스트는 IPv6가 ARP를 대신하는 방식이다 — 브로드캐스트로 전체를 깨우는 대신, MAC을 알고 싶은 상대만 속한 그룹으로 보낸다. IPv6에 브로드캐스트가 없어도 되는 이유.
| 쓰임 | 설명 |
|---|---|
| 출발지 주소 | 아직 IP를 못 받은 단말이 DHCP 요청을 보낼 때 (DISCOVER의 출발지가 0.0.0.0) |
| 라우팅 테이블 | 0.0.0.0/0 = 기본 경로(default route) — "어디로 갈지 모르면 여기로" |
| 서버 바인딩 | 모든 인터페이스에서 접속을 받겠다는 뜻 (0.0.0.0:8080) |
| 목적지 주소 | 사용 불가 — 미지정 주소로는 패킷을 보낼 수 없다 |
| 물음 | 답 |
|---|---|
| IPv6의 주소 유형이 아닌 것은?2022-3회 | 브로드캐스트 — 유니캐스트·멀티캐스트·애니캐스트 3종만 있다 |
| IPv6에 브로드캐스트가 없는 이유는? | 멀티캐스트(ff02::1)와 애니캐스트로 대체했기 때문 |
| IPv6 루프백 주소는? | ::1 (IPv4는 127.0.0.1) |
| IPv6 링크 로컬 주소의 접두사는? | fe80::/10 |
| 169.254.x.x 주소가 보이면? | DHCP 할당 실패(APIPA) |
| 멀티캐스트에 쓰는 IPv4 클래스와 IPv6 접두사는? | D 클래스(224~239) / ff00::/8 |
| 라우팅 테이블의 0.0.0.0/0 은? | 기본 경로(default route) |
| A 클래스가 126까지인 이유는? | 0은 예약, 127은 루프백이라 빠졌기 때문 |
문제 — 주소 낭비
호스트가 300대 필요한 회사는?
• C 클래스(254개) → 부족
• B 클래스(65,534개) → 65,234개 낭비
클래스 단위로만 나누면 딱 맞는 크기가 없다.
해결 — 경계를 자유롭게
서브넷팅 : 큰 네트워크를 잘게 쪼갬
CIDR : /8 /16 /24 대신 /26 /27 처럼 임의 지정
VLSM : 서브넷마다 다른 크기 사용
NAT : 사설 IP로 공인 IP 절약
→ 300대면 /23(510개)으로 딱 맞춘다.
| 1~126 (클래스 판별) | 서브넷마스크 비트 구하기 | |
|---|---|---|
| 무엇을 보나 | IP 주소의 첫 옥텟 | 서브넷마스크 값 (IP는 안 본다) |
| 답하는 질문 | "이 주소는 어느 집안 태생인가" | "실제로 어디서 자르는가" |
| 누가 정하나 | 주소 체계가 태생적으로 정해둠 | 관리자가 설계해서 부여 |
| 결과물 | A/B/C/D/E + 기본 마스크 (/8·/16·/24) | 실제 네트워크 / 호스트 경계 |
둘은 따로 주어지고, 서로 달라도 정상이다. 오히려 다르기 때문에 서브넷팅이 성립한다.
| 단계 | 어디서 나온 값인가 | 계산 |
|---|---|---|
| 클래스 B → 기본 /16 | 클래스 판별에서 | 첫 옥텟 128~191 |
| 240 = 11110000 → /28 | 마스크에서 | 1의 개수 8+8+8+4 |
| 빌린 비트 12 | 두 값의 차이 | 28 − 16 = 12 |
| 서브넷 4,096개 | 빌린 비트에서 | 2¹² = 4,096 |
| 호스트 14개 | 마스크에서만 | 32−28=4 → 2⁴−2 = 14 |
마스크만 보면 /28이라는 사실만 알 뿐, 그게 몇 칸을 민 것인지 알 수 없다. 출발점(/16)을 알려주는 것이 클래스다. 반대로 클래스만 알면 실제 경계를 모른다. 서브넷 개수 문제에서만 둘이 반드시 함께 필요하다.
• 호스트 수만 물으면 → 마스크만 보면 끝 (클래스 몰라도 된다)
• 서브넷 수를 물으면 → 클래스 + 마스크 둘 다 필요
"255.255.255.224의 최대 호스트 수는?" 문제에 클래스가 안 나오는 이유가 이것 — 필요가 없어서다.
목적: IP 주소 낭비 방지 / 브로드캐스트 도메인 축소 / 보안 강화
| 용어 | 의미 | 예시 (/24 기준) |
|---|---|---|
| 네트워크 주소 | 서브넷의 시작 주소 사용 불가 | 192.168.1.0 |
| 브로드캐스트 주소 | 서브넷의 마지막 주소 사용 불가 | 192.168.1.255 |
| 사용 가능 호스트 | 실제 장비에 할당 가능한 주소 | 192.168.1.1 ~ .254 |
| 서브넷 마스크 | 네트워크/호스트 부분 구분 | 255.255.255.0 |
| CIDR 표기 | /뒤에 네트워크 비트 수 표기 | /24 |
① 마지막 옥텟을 2진수로 변환
② 0의 개수 = 호스트 비트 수 (n)
③ 할당 가능 호스트 = 2ⁿ - 2
| 옥텟 값 | 2진수 | 1의 개수 (네트워크) | 0의 개수 (호스트 n) | 2ⁿ | 2ⁿ-2 (호스트) |
|---|---|---|---|---|---|
| 0 | 00000000 | 0 | 8 | 256 | 254 |
| 128 | 10000000 | 1 | 7 | 128 | 126 |
| 192 | 11000000 | 2 | 6 | 64 | 62 |
| 224 | 11100000 | 3 | 5 | 32 | 30 |
| 240 | 11110000 | 4 | 4 | 16 | 14 |
| 248 | 11111000 | 5 | 3 | 8 | 6 |
| 252 | 11111100 | 6 | 2 | 4 | 2 |
| 254 | 11111110 | 7 | 1 | 2 | 0 |
| 255 | 11111111 | 8 | 0 | 1 | - |
예제 — 255.255.255.224 의 최대 호스트 수? (기출 Q88 유형)
① 마지막 옥텟 224 → 11100000 (2진수)
② 0의 개수 = 호스트 비트 = 5
③ 2⁵ - 2 = 32 - 2 = 30개
※ CIDR로는 /27 (네트워크 비트 = 8+8+8+3 = 27)
※ -2를 빠뜨려 32개로 답하면 오답!
마스크가 255인 옥텟은 IP 그대로, 0인 옥텟은 0, 그 외 옥텟만 계산하면 됨
예제 — IP 192.156.100.68 / 마스크 255.255.255.224 의 네트워크 주소?
앞 3옥텟은 마스크가 255 → 192.156.100 그대로
마지막 옥텟만 AND 연산:
→ 네트워크 주소 = 192.156.100.64
⚡ 더 빠른 방법 — 블록 크기로 구간 찾기
① 블록 크기 = 256 - 224 = 32
② 서브넷 경계 (32씩 증가):
0 · 32 · 64 · 96 · 128 · 160 · 192 · 224
③ 68은 64 ~ 95 구간에 속함
→ 네트워크 주소 = 192.156.100.64
📦 이 서브넷(192.156.100.64/27)의 전체 주소 구성
| 구분 | 주소 | 용도 |
|---|---|---|
| 네트워크 주소 | 192.156.100.64 | 사용 불가 |
| 첫 호스트 | 192.156.100.65 | 할당 가능 |
| 마지막 호스트 | 192.156.100.94 | 할당 가능 |
| 브로드캐스트 | 192.156.100.95 | 사용 불가 |
호스트 범위 .65~.94 = 30개 (= 2⁵-2, 위 호스트 수 계산과 일치)
예제 1 — 호스트 수 구하기
Q: 192.168.1.0/26 의 사용 가능 호스트 수?
호스트 비트 = 32 - 26 = 6
2⁶ - 2 = 64 - 2 = 62개
네트워크: 192.168.1.0
첫 호스트: 192.168.1.1
마지막 호스트: 192.168.1.62
브로드캐스트: 192.168.1.63
예제 2 — CIDR 역산
Q: 호스트 50대 필요한 최소 CIDR은?
2ⁿ - 2 ≥ 50
2⁵ - 2 = 30 → ✗ 부족
2⁶ - 2 = 62 → ✓ 충분
호스트 비트 = 6
CIDR = 32 - 6 = /26
마스크 = 255.255.255.192
예제 3 — /24를 4개 서브넷으로 분할
4개 필요 → 2² = 4 → 2비트 빌림 → /24 + 2 = /26
블록 크기 = 256 - 192 = 64
서브넷1: 192.168.1.0 ~ .63 (호스트: .1~.62)
서브넷2: 192.168.1.64 ~ .127 (호스트: .65~.126)
서브넷3: 192.168.1.128 ~ .191 (호스트: .129~.190)
서브넷4: 192.168.1.192 ~ .255 (호스트: .193~.254)
· 네트워크·브로드캐스트 주소는 호스트로 사용 불가 → 항상 -2
· 서브넷 수 = 2^(빌린 비트 수)
· 블록 크기 = 256 - 마지막 서브넷 마스크 값
· /30 = 호스트 2개 → 점대점(P2P) 연결 전용
· /32 = 단일 호스트 주소 (루프백 등)
· 호스트 수 → CIDR 역산: 2ⁿ-2 ≥ 필요수 → n구하기 → 32-n
• 선두 비트 0 / 10 / 110 / 1110 / 1111 → A / B / C / D / E
• 경계 숫자 128 · 192 · 224 · 240, 구간 크기는 128 → 64 → 32 → 16
• A 클래스 실제 범위는 1 ~ 126 (0 예약, 127 루프백)
• 기본 마스크 /8 · /16 · /24, 호스트 수는 2ⁿ − 2
• D = 멀티캐스트(224~239), E = 예약(240~255)
• 사설 IP는 10.x / 172.16~31.x / 192.168.x — 172는 16~31만!
• 169.254.x.x 가 보이면 DHCP 할당 실패(APIPA)
• 유효 호스트 = 2ⁿ − 2, 서브넷 수 = 2^(빌린 비트), 블록 크기 = 256 − 마지막 옥텟
• 블록 크기 × 서브넷 수 = 256 — 곱이 256이 아니면 계산이 틀린 것