IT Knowledge/Network/images/02-ip-주소와-서브넷팅-venn.svg
IP 주소와 서브넷팅
학습 목표
- IP 주소가 왜 필요한지 이해하기
- IPv4 주소의 구조와 범위 이해하기
- 서브넷 마스크와 서브넷 계산 방법 마스터하기
- 실전 상황에서 서브넷을 계산할 수 있기
- IPv6의 기본 개념과 IPv4와의 차이점 이해하기
Part 1: IP 주소란 무엇인가요? (왜 필요한가?)
🤔 핵심 질문
인터넷에 연결된 수십억 대의 컴퓨터를 서로 식별하려면 어떻게 해야 할까요?
일상적인 비유: 주소체계
실제 세계의 주소체계:
대한민국 서울시 강남구 강남대로 123번지 45호
│ │ │ │ │ │
│ │ │ │ │ └── 상세 번지
│ │ │ │ └────── 호수
│ │ │ └──────── 번지
│ │ └────────── 도로명
│ └─────────── 구명
└─────────────── 도시
IP 주소 체계:
192.168.1.100
│ │ │ │
│ │ │ └── 호스트 주소 (100)
│ │ └────── 네트워크 주소 (192.168.1)
│ └────────── 호스트 식별자 (192.168.1.100)
└────────────── 전체 주소
🌐 IP 주소의 정의
IP 주소 = 인터넷에 연결된 각 장치를 식별하는 고유한 번호
핵심 포인트:
- 인터넷상의 “집 주소”
- 전 세계에서 유일해야 함
- 통신을 위해 필수적
📊 IP 주소의 역할
| 역할 | 설명 | 예시 |
|---|---|---|
| 식별 | 통신할 대상 식별 | ”192.168.1.100으로 데이터 보내” |
| 라우팅 | 최적 경로 결정 | ”93.184.216.34로 가는 경로” |
| 필터링 | 허용/차단 결정 | ”192.168.1.0/24만 통신 허용” |
Part 2: IPv4 주소 구조 상세 분석
🏗️ IPv4 주소의 구조
192.168.1.100
│ │ │ │
│ │ │ └── 호스트 ID (8비트)
│ │ └────── 네트워크 ID (24비트)
│ └────────── 옥텟 구분
└──────────── 전체 32비트
📏 각 부분의 역할
1. 옥텟 (Octet)
- 크기: 8비트 (0-255)
- 역할: 주소의 구성 단위
- 예시:
- 192 (0-255)
- 168 (0-255)
- 1 (0-255)
- 100 (0-255)
2. 호스트 ID (Host ID)
- 크기: 8비트
- 역할: 네트워크 내에서 호스트 식별
- 범위: 0-254 (실제 사용 가능한 범위)
- 주의:
- 0: 네트워크 주소 (사용 불가)
- 255: 브로드캐스트 주소 (사용 불가)
3. 네트워크 ID (Network ID)
- 크기: 24비트
- 역할: 네트워크 자체 식별
- 예시: 192.168.1.0/24
💡 실제 예시로 이해하기
예시 1: 가정용 네트워크
IP 주소: 192.168.1.100
네트워크: 192.168.1.0/24
호스트 ID: 100
의미: "192.168.1.0/24 네트워크의 100번째 호스트"
예시 2: 웹 서버
IP 주소: 93.184.216.34
네트워크: 93.184.216.0/24
호스트 ID: 34
의미: "93.184.216.0/24 네트워크의 34번째 호스트"
Part 3: IP 주소 클래스 (레거시)
🎯 왜 클래스가 필요한가요?
문제: 32비트 IP 주소를 어떻게 효율적으로 배분할까요?
해결책: 클래스 기반 주소 할당
📊 IP 주소 클래스
| 클래스 | 첫 번째 옥텟 범위 | 네트워크 비트 | 호스트 비트 | 서브넷 마스크 | 예시 네트워크 | 호스트 수 |
|---|---|---|---|---|---|---|
| A | 0-127 | 8 | 24 | 255.0.0.0 (/8) | 10.0.0.0/8 | 16,777,214 |
| B | 128-191 | 16 | 16 | 255.255.0.0 (/16) | 172.16.0.0/16 | 65,534 |
| C | 192-223 | 24 | 8 | 255.255.255.0 (/24) | 192.168.1.0/24 | 254 |
| D | 224-239 | - | - | - | 멀티캐스트 | - |
| E | 240-255 | - | - | - | 예약 | - |
📝 클래스별 특징
클래스 A
- 용도: 대규모 네트워크
- 특징: 매우 많은 호스트 (1600만대)
- 예시: 정부 기관, 대학 네트워크
클래스 B
- 용도: 중대형 네트워크
- 특징: 많은 호스트 (6만 5천대)
- 예시: 기업 네트워크
클래스 C
- 용도: 소규모 네트워크
- 특징: 적은 호스트 (254대)
- 예시: 가정용 네트워크 (가장 일반적)
클래스 D & E
- 클래스 D: 멀티캐스트 (동일 데이터를 여러 수신자에게 전송)
- 클래스 E: 예약 (연구용)
⚠️ 사용 중지된 클래스 A, B
이유:
- 너무 많은 호스트 수 → 효율성 낮음
- 현재는 클래스 C와 CIDR이 주로 사용됨
Part 4: 서브넷팅 (Subnetting)
🤔 서브넷팅이 뭔데요?
문제 상황:
192.168.1.0/24 네트워크에 500대의 컴퓨터를 연결하려고 합니다. 하지만 클래스 C 네트워크는 최대 254대의 호스트만 지원합니다. 어떻게 해결할까요?
해결책: 서브넷팅!
🎯 서브넷팅의 정의
서브넷팅 = 하나의 네트워크를 여러 개의 작은 네트워크(서브넷)로 분할하는 기법
📏 서브넷 마스크
정의: 네트워크 ID와 호스트 ID를 구분하는 32비트 마스크
서브넷 마스크 구조:
예시: /24 서브넷 마스크
255.255.255.0
│ │ │
│ │ └── 호스트 ID (0 = 무시)
│ └─────── 호스트 ID (0 = 무시)
└─────────── 네트워크 ID (1 = 사용)
이진수:
11111111.11111111.11111111.00000000
🔄 서브넷 계산 과정
단계 1: 필요한 서브넷 수 결정
상황: 192.168.1.0/24 네트워크에 3개의 부서를 분할
필요 서브넷: 3개 필요 비트: 2^2 = 4 → 2비트
단계 2: 새로운 서브넷 마스크 계산
원래 서브넷 마스크: /24 (11111111.11111111.11111111.00000000) 새로운 서브넷 마스크: /26 (11111111.11111111.11111111.11111100)
- 2비트 추가 (0에서 1로)
단계 3: 서브넷 목록 생성
| 서브넷 | 네트워크 주소 | 브로드캐스트 | 사용 가능 호스트 범위 | 호스트 수 |
|---|---|---|---|---|
| 서브넷 1 | 192.168.1.0 | 192.168.1.63 | 192.168.1.1 ~ 192.168.1.62 | 62 |
| 서브넷 2 | 192.168.1.64 | 192.168.1.127 | 192.168.1.65 ~ 192.168.1.126 | 62 |
| 서브넷 3 | 192.168.1.128 | 192.168.1.191 | 192.168.1.129 ~ 192.168.1.190 | 62 |
| 서브넷 4 | 192.168.1.192 | 192.168.1.255 | 192.168.1.193 ~ 192.168.1.254 | 62 |
💡 실전 예시로 이해하기
상황: 3개의 부서가 있고 각 부서에 20대의 컴퓨터가 필요
서브넷 계산:
- 필요 서브넷: 3개
- 필요 비트: 2비트 (2^2 = 4 ≥ 3)
- 새로운 서브넷 마스크: /26
- 각 서브넷의 호스트 수: 64대 (20대 × 3부서 = 60대, 여유 있음)
서브넷 할당:
- 영업팀: 192.168.1.0/26 (0-63)
- 개발팀: 192.168.1.64/26 (64-127)
- 인사팀: 192.168.1.128/26 (128-191)
Part 5: CIDR 표기법
🎯 왜 CIDR가 필요한가요?
문제: 서브넷 마스크를 255.255.255.0으로 표현하는 것이 번거롭습니다.
해결책: CIDR (Classless Inter-Domain Routing)
📊 CIDR 표기법
형식: IP주소/서브넷마스크비트
예시:
192.168.1.0/24
│ │ └── 24 = 서브넷 마스크 비트 (11111111.11111111.11111111.00000000)
│ └───── 네트워크 주소
📏 주요 CIDR 표기법
| CIDR | 서브넷 마스크 | 호스트 수 | 사용 예시 |
|---|---|---|---|
| /8 | 255.0.0.0 | 16,777,214 | 대규모 네트워크 |
| /16 | 255.255.0.0 | 65,534 | 중형 네트워크 |
| /24 | 255.255.255.0 | 254 | 가정용 네트워크 |
| /26 | 255.255.255.192 | 62 | 서브넷팅 |
| /27 | 255.255.255.224 | 30 | 작은 서브넷 |
| /28 | 255.255.255.240 | 14 | 매우 작은 서브넷 |
| /29 | 255.255.255.248 | 6 | 최소 서브넷 |
| /30 | 255.255.255.252 | 2 | 포인트 투 포인트 연결 |
| /32 | 255.255.255.255 | 1 | 단일 호스트 |
🔄 서브넷 계산 공식
1. 필요한 비트 계산
2^n ≥ 필요한 서브넷 수
예시: 10개의 서브넷이 필요한 경우
2^3 = 8 (부족)
2^4 = 16 (충분)
→ 4비트 필요
2. 서브넷 마스크 계산
새로운 마스크 비트 = 32 - 필요한 비트
예시: /24에서 4비트 추가
32 - 4 = 28
새로운 서브넷 마스크: /28
3. 호스트 수 계산
호스트 수 = 2^(32 - 마스크 비트) - 2
예시: /26
호스트 수 = 2^(32-26) - 2 = 2^6 - 2 = 64 - 2 = 62
※ -2 이유: 네트워크 주소(0)와 브로드캐스트(255) 제외
Part 6: 실전 서브넷 계산 예제
🎯 문제 1: 기업 네트워크 설계
상황:
- 전체 IP 대역: 192.168.0.0/16
- 필요 서브넷:
- 본사 (200대)
- 영업 (100대)
- 개발 (50대)
- 인사 (30대)
- 게스트 (20대)
- 서버 (10대)
계산:
- 최대 서브넷 수: 6개
- 필요 비트: 3비트 (2^3 = 8 ≥ 6)
- 원래 마스크: /16
- 새로운 마스크: /19 (16 + 3)
- 각 서브넷 호스트 수: 2^(32-19) - 2 = 8190 - 2 = 8188
서브넷 할당:
| 부서 | 서브넷 | CIDR | 호스트 범위 | 필요 호스트 | 여유 |
|---|---|---|---|---|---|
| 본사 | 192.168.0.0/19 | 192.168.0.1 ~ 192.168.31.254 | 200 | 7988 | |
| 영업 | 192.168.32.0/19 | 192.168.32.1 ~ 192.168.63.254 | 100 | 8088 | |
| 개발 | 192.168.64.0/19 | 192.168.64.1 ~ 192.168.95.254 | 50 | 8138 | |
| 인사 | 192.168.96.0/19 | 192.168.96.1 ~ 192.168.127.254 | 30 | 8158 | |
| 게스트 | 192.168.128.0/19 | 192.168.128.1 ~ 192.168.159.254 | 20 | 8168 | |
| 서버 | 192.168.160.0/19 | 192.168.160.1 ~ 192.168.191.254 | 10 | 8178 |
🎯 문제 2: 호스트 수 계산
상황: 100대의 호스트를 수용하는 서브넷 필요
계산:
- 필요한 호스트: 100대
- 네트워크 주소 + 브로드캐스트 포함: 100 + 2 = 102
- 2^6 = 64 (부족)
- 2^7 = 128 (충분)
- 필요한 비트: 7비트
- 서브넷 마스크: /32 - 7 = /25
결과: /25 서브넷 (호스트 수: 126)
Part 7: 사설 IP 주소
🏠 사설 IP 주소의 정의
사설 IP = 인터넷에서 직접 접속할 수 없는 내부용 IP 주소
📊 사설 IP 주소 범위
| 클래스 | 사설 IP 범위 | 용도 |
|---|---|---|
| A | 10.0.0.0 ~ 10.255.255.255 | 대규모 조직 |
| B | 172.16.0.0 ~ 172.31.255.255 | 중형 조직 |
| C | 192.168.0.0 ~ 192.168.255.255 | 가정용 |
💡 사설 IP vs 공인 IP
| 특성 | 사설 IP | 공인 IP |
|---|---|---|
| 접속성 | 내부에서만 접속 가능 | 인터넷에서 접속 가능 |
| 비용 | 무료 | 유료 (ISP 구독) |
| 유일성 | 여러 기업에서 재사용 가능 | 전 세계에서 유일 |
| 예시 | 192.168.1.100 | 93.184.216.34 |
🔄 NAT (Network Address Translation)
정의: 사설 IP와 공인 IP 간의 변환
작동 원리:
내부 네트워크 (사설 IP)
↓
NAT 변환
↓
인터넷 (공인 IP)
실제 예시:
내부 PC: 192.168.1.100
공인 IP: 203.0.113.1
사용자가 웹 접속 시:
192.168.1.100:8080 → 203.0.113.1:8080
Part 8: 특수 IP 주소
📋 특수 IP 주소 목록
| IP 주소 | 용도 | 설명 |
|---|---|---|
| 127.0.0.1 | 루프백 | 자기 자신을 가리킴 (localhost) |
| 0.0.0.0 | 현재 네트워크 | ”자기 자신의 네트워크” |
| 255.255.255.255 | 브로드캐스트 | ”모든 호스트” (동일 네트워크) |
| 169.254.x.x | 링크로컬 | DHCP 실패 시 자동 할당 |
| 224.0.0.0 ~ 239.255.255.255 | 멀티캐스트 | 동일 데이터 다수 전송 |
💡 특수 IP 사용 예시
루프백 (127.0.0.1)
# 로컬 웹 서버 테스트
curl http://127.0.0.1:8080
# 데이터베이스 접속
mysql -h 127.0.0.1 -u root -p브로드캐스트 (255.255.255.255)
# 전체 네트워크에 브로드캐스트 전송
ping 255.255.255.255Part 9: IPv6 개요
🚀 왜 IPv6가 필요한가요?
문제: IPv4 주소가 고갈되고 있음 (약 43억 개만 실제 사용 가능)
해결책: IPv6 (128비트 주소)
📊 IPv6 vs IPv4 비교
| 특성 | IPv4 | IPv6 |
|---|---|---|
| 주소 길이 | 32비트 | 128비트 |
| 주소 수 | 약 43억 개 | 약 3.4 × 10^38 개 |
| 표기법 | 점으로 구분 (192.168.1.1) | 콜론으로 구분 (2001:0db8:85a3::1) |
| 헤더 크기 | 20~60바이트 | 40바이트 (고정) |
| NAT | 필수 | 불필요 |
🏗️ IPv6 주소 구조
2001:0db8:85a3:0000:0000:8a2e:0370:7334
│ │ │ │ │ │
│ │ │ └─── 호스트 ID (64비트)
│ │ └─────── 서브넷 ID (64비트)
│ └─────────── 네트워크 ID (48비트)
└────────────────── 전체 128비트
📏 IPv6 단축 표기
- 선행 0 생략:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
→ 2001:db8:85a3:0:0:8a2e:370:7334
- 연속 0 생략 (최대 1번):
2001:0db8:85a3:0000:0000:8a2e:0370:7334
→ 2001:db8:85a3::8a2e:370:7334
🎯 실전 IPv6 예시
로컬 링크: ::1 (IPv4의 127.0.0.1과 동일)
무선 국지 주소: fe80::/10 (IPv4의 192.168.0.0/24와 유사)
Part 10: 실무 연습 문제
🎯 문제 1: 서브넷 계산
상황:
- 네트워크: 192.168.0.0/24
- 필요한 서브넷:
- 부서 A: 30대
- 부서 B: 20대
- 부서 C: 10대
- 부서 D: 50대
질문:
- 어떻게 서브넷을 나눌까요?
- 각 서브넷의 CIDR은 무엇인가요?
- 각 서브넷의 사용 가능한 IP 범위는?
힌트:
- 최대 필요 호스트: 50대 (부서 D)
- 2^5 = 32 (부족), 2^6 = 64 (충분)
- 필요 비트: 6비트
- 새로운 마스크: /30
🎯 문제 2: 호스트 수 계산
상황: 500대의 호스트를 수용해야 함
질문:
- 필요한 서브넷 마스크는?
- 호스트 수는 충분한가요?
힌트:
- 네트워크 주소 + 브로드캐스트 포함: 500 + 2 = 502
- 2^8 = 256 (부족)
- 2^9 = 512 (충분)
- 서브넷 마스크: /23
🛠️ 실무 명령어
# 1. IP 주소 확인
ip addr show
# 2. 서브넷 계산 도구
ipcalc 192.168.1.0/24
# 3. 서브넷 정보 확인
ip route
# 4. 네트워크 상태 확인
netstat -rnPart 11: 학습자 스스로 체크 포인트
📝 자기 평가 질문
-
IP 주소의 구조를 설명할 수 있나요?
- 💡 힌트: 32비트, 네트워크 ID, 호스트 ID
-
서브넷 마스크의 역할을 설명할 수 있나요?
- 💡 힌트: 네트워크 ID와 호스트 ID 구분
-
/24 서브넷에서 호스트 수를 계산할 수 있나요?
- 💡 힌트: 2^8 - 2 = 254
-
CIDR 표기법으로 서브넷을 표현할 수 있나요?
- 💡 힌트: 192.168.1.0/24
-
사설 IP와 공인 IP의 차이를 설명할 수 있나요?
- 💡 힌트: 내부용 vs 외부용, NAT
Part 12: 다음 단계
📚 학습 경로
이 모듈을 완료했다면 다음 모듈로 이동하세요:
추천 학습 순서:
- ✅ 모듈 1: 네트워크 기초와 OSI 모델 (완료)
- ✅ 모듈 2: IP 주소와 서브넷팅 (현재)
- ⏭️ 모듈 3: TCP와 UDP
- TCP vs UDP 상세 비교
- 3-way handshake 상세
- 포트와 소켓
- ⏭️ 모듈 4: DNS 동작 원리
- DNS 쿼리 과정
- DNS 레코드
- 실무 DNS 설정
🎓 학습 포인트 요약
✅ 이해해야 할 핵심 개념
- IP 주소의 구조: 네트워크 ID, 호스트 ID, 32비트
- IP 주소 클래스: A, B, C 클래스의 특징과 용도
- 서브넷팅: 네트워크 분할, 서브넷 마스크, 호스트 수 계산
- CIDR 표기법: /24, /26 등의 표기법
- 사설 vs 공인 IP: 내부용 vs 외부용, NAT
- IPv6: 128비트 주소, IPv4와의 차이점
💡 기억해야 할 공식
호스트 수 계산: 2^(32 - 마스크 비트) - 2
예시: /26
호스트 수 = 2^(32-26) - 2 = 64 - 2 = 62
🎯 스스로 점검할 수 있는 능력
- 실제 환경에서 필요한 서브넷 계산
- IP 주소 충돌 피하기
- 효율적인 IP 주소 할당
🔗 관련 자료
📚 추천 학습 자료
-
교재
- “CCNA Routing and Switching” - Wendell Odom
- “TCP/IP Network Administration” - Craig Hunt
-
온라인
-
실습 도구
다음 모듈: TCP와 UDP 학습