IP 주소와 서브네팅
IP 주소와 서브네팅¶
개요¶
IP(Internet Protocol) 주소는 네트워크에서 각 장치를 고유하게 식별하는 논리적 주소입니다. 이 레슨에서는 IPv4 주소의 구조, 클래스 기반 주소 체계, 서브넷 마스크, CIDR 표기법, 공인/사설 IP, 그리고 IPv6 기초를 학습합니다. 서브네팅은 네트워크 설계와 관리에서 가장 중요한 기술 중 하나입니다.
난이도: ⭐⭐ (초급-중급)
목차¶
1. IP 주소의 개념¶
IP 주소란?¶
┌─────────────────────────────────────────────────────────────────┐
│ IP 주소 (IP Address) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 정의: 인터넷 프로토콜을 사용하는 네트워크에서 각 장치를 │
│ 고유하게 식별하는 논리적 주소 │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ MAC 주소 vs IP 주소 │ │
│ │ │ │
│ │ MAC 주소 (물리적 주소): │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ • 하드웨어에 고정됨 (NIC 제조 시 할당) │ │ │
│ │ │ • 48비트 (6바이트) │ │ │
│ │ │ • 같은 네트워크 내 통신에 사용 │ │ │
│ │ │ • 예: 00:1A:2B:3C:4D:5E │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ IP 주소 (논리적 주소): │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ • 소프트웨어로 할당 (변경 가능) │ │ │
│ │ │ • 32비트 (IPv4) 또는 128비트 (IPv6) │ │ │
│ │ │ • 네트워크 간 통신에 사용 │ │ │
│ │ │ • 예: 192.168.1.100 │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 비유: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ MAC 주소 = 주민등록번호 (변경 불가, 고유) │ │
│ │ IP 주소 = 집 주소 (이사하면 변경, 계층적 구조) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
IP 주소의 구성¶
┌─────────────────────────────────────────────────────────────────┐
│ IP 주소의 구성 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ IP 주소 = 네트워크 부분 + 호스트 부분 │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 192.168.1.100 │ │
│ │ ├───────┤ ├─┤ │ │
│ │ 네트워크 호스트 │ │
│ │ 부분 부분 │ │
│ │ │ │
│ │ 네트워크 부분: 어느 네트워크에 속하는지 식별 │ │
│ │ 호스트 부분: 해당 네트워크 내의 특정 장치 식별 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 예시 - 우편 주소와 비교: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 서울시 강남구 역삼동 123번지 │ │
│ │ ├──────────────┤ ├────────────┤ │ │
│ │ 네트워크 부분 호스트 부분 │ │
│ │ (지역/동네) (구체적 위치) │ │
│ │ │ │
│ │ 192.168.1 .100 │ │
│ │ ├───────────┤ ├──┤ │ │
│ │ 네트워크 ID 호스트 ID │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 중요: 같은 네트워크의 장치들은 네트워크 부분이 동일해야 함 │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 192.168.1.10 ─┐ │ │
│ │ 192.168.1.20 ─┼─► 같은 네트워크 (192.168.1.0) │ │
│ │ 192.168.1.30 ─┘ │ │
│ │ │ │
│ │ 192.168.2.10 ───► 다른 네트워크 (192.168.2.0) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
2. IPv4 주소 구조¶
32비트 주소 체계¶
┌─────────────────────────────────────────────────────────────────┐
│ IPv4 주소 구조 (32비트) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ IPv4 주소: 32비트 = 4개의 옥텟(8비트씩) │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 점-십진 표기법 (Dotted Decimal Notation): │ │
│ │ │ │
│ │ 192 . 168 . 1 . 100 │ │
│ │ ↓ ↓ ↓ ↓ │ │
│ │ 11000000 10101000 00000001 01100100 │ │
│ │ ├──8bit──┤ ├──8bit──┤ ├──8bit──┤ ├──8bit──┤ │ │
│ │ 옥텟 1 옥텟 2 옥텟 3 옥텟 4 │ │
│ │ │ │
│ │ 총 32비트 (4바이트) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 각 옥텟의 범위: 0 ~ 255 (2^8 = 256 가지) │
│ │
│ 10진수-2진수 변환 예시: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 192 = 128 + 64 = 2^7 + 2^6 = 11000000 │ │
│ │ 168 = 128 + 32 + 8 = 2^7 + 2^5 + 2^3 = 10101000 │ │
│ │ 1 = 2^0 = 00000001 │ │
│ │ 100 = 64 + 32 + 4 = 2^6 + 2^5 + 2^2 = 01100100 │ │
│ │ │ │
│ │ 비트 위치와 가중치: │ │
│ │ ┌─────┬─────┬────┬────┬────┬────┬────┬────┐ │ │
│ │ │ 2^7 │ 2^6 │2^5 │2^4 │2^3 │2^2 │2^1 │2^0 │ │ │
│ │ ├─────┼─────┼────┼────┼────┼────┼────┼────┤ │ │
│ │ │ 128 │ 64 │ 32 │ 16 │ 8 │ 4 │ 2 │ 1 │ │ │
│ │ └─────┴─────┴────┴────┴────┴────┴────┴────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 총 IP 주소 개수: 2^32 = 4,294,967,296개 (약 43억 개) │
│ │
└─────────────────────────────────────────────────────────────────┘
특수 IP 주소¶
┌─────────────────────────────────────────────────────────────────┐
│ 특수 IP 주소 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────────────┬─────────────────────────────────────┐ │
│ │ 주소 │ 용도 │ │
│ ├───────────────────┼─────────────────────────────────────┤ │
│ │ 0.0.0.0 │ 모든 주소 (기본 라우트, DHCP 요청) │ │
│ ├───────────────────┼─────────────────────────────────────┤ │
│ │ 127.0.0.1 │ 루프백 (자기 자신, localhost) │ │
│ │ 127.0.0.0/8 │ 루프백 대역 │ │
│ ├───────────────────┼─────────────────────────────────────┤ │
│ │ 255.255.255.255 │ 제한된 브로드캐스트 (로컬 네트워크) │ │
│ ├───────────────────┼─────────────────────────────────────┤ │
│ │ x.x.x.0 │ 네트워크 주소 (호스트 부분 모두 0) │ │
│ ├───────────────────┼─────────────────────────────────────┤ │
│ │ x.x.x.255 │ 브로드캐스트 주소 (호스트부분 모두1)│ │
│ │ (서브넷에 따라 다름)│ │ │
│ ├───────────────────┼─────────────────────────────────────┤ │
│ │ 169.254.0.0/16 │ APIPA (자동 사설 IP) │ │
│ │ │ DHCP 실패 시 자동 할당 │ │
│ └───────────────────┴─────────────────────────────────────┘ │
│ │
│ 네트워크 주소와 브로드캐스트 주소: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 네트워크: 192.168.1.0/24 │ │
│ │ │ │
│ │ 192.168.1.0 ← 네트워크 주소 (할당 불가) │ │
│ │ 192.168.1.1 ← 첫 번째 사용 가능 호스트 │ │
│ │ 192.168.1.2 │ │
│ │ ... │ │
│ │ 192.168.1.253 │ │
│ │ 192.168.1.254 ← 마지막 사용 가능 호스트 │ │
│ │ 192.168.1.255 ← 브로드캐스트 주소 (할당 불가) │ │
│ │ │ │
│ │ 사용 가능한 호스트 수: 254개 (256 - 2) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
3. IP 주소 클래스¶
클래스 기반 주소 체계 (Classful)¶
┌─────────────────────────────────────────────────────────────────┐
│ IP 주소 클래스 (Classful Addressing) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 초기 IP 주소는 5개의 클래스로 분류 (현재는 CIDR 사용) │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 클래스 A: │ │
│ │ ┌─┬───────────────────────────────────────────────────┐│ │
│ │ │0│ 네트워크 (7비트) │ 호스트 (24비트) ││ │
│ │ └─┴───────────────────────────────────────────────────┘│ │
│ │ 첫 비트: 0 │ │
│ │ 범위: 1.0.0.0 ~ 126.255.255.255 │ │
│ │ 기본 마스크: 255.0.0.0 (/8) │ │
│ │ 네트워크 수: 126개 (2^7 - 2) │ │
│ │ 호스트 수: 16,777,214개 (2^24 - 2) │ │
│ │ │ │
│ │ 클래스 B: │ │
│ │ ┌──┬──────────────────┬────────────────────────────────┐│ │
│ │ │10│ 네트워크 (14비트) │ 호스트 (16비트) ││ │
│ │ └──┴──────────────────┴────────────────────────────────┘│ │
│ │ 첫 2비트: 10 │ │
│ │ 범위: 128.0.0.0 ~ 191.255.255.255 │ │
│ │ 기본 마스크: 255.255.0.0 (/16) │ │
│ │ 네트워크 수: 16,384개 (2^14) │ │
│ │ 호스트 수: 65,534개 (2^16 - 2) │ │
│ │ │ │
│ │ 클래스 C: │ │
│ │ ┌───┬─────────────────────────┬────────────────────────┐│ │
│ │ │110│ 네트워크 (21비트) │ 호스트 (8비트) ││ │
│ │ └───┴─────────────────────────┴────────────────────────┘│ │
│ │ 첫 3비트: 110 │ │
│ │ 범위: 192.0.0.0 ~ 223.255.255.255 │ │
│ │ 기본 마스크: 255.255.255.0 (/24) │ │
│ │ 네트워크 수: 2,097,152개 (2^21) │ │
│ │ 호스트 수: 254개 (2^8 - 2) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 클래스 D & E: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 클래스 D (첫 4비트: 1110): │ │
│ │ 범위: 224.0.0.0 ~ 239.255.255.255 │ │
│ │ 용도: 멀티캐스트 │ │
│ │ │ │
│ │ 클래스 E (첫 4비트: 1111): │ │
│ │ 범위: 240.0.0.0 ~ 255.255.255.255 │ │
│ │ 용도: 예약됨 (연구/실험용) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
클래스 식별 방법¶
┌─────────────────────────────────────────────────────────────────┐
│ 클래스 식별 방법 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 첫 번째 옥텟으로 클래스 식별: │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────┬────────────────┬─────────────────────────┐│ │
│ │ │ 클래스 │ 첫 옥텟 범위 │ 첫 비트 패턴 ││ │
│ │ ├─────────┼────────────────┼─────────────────────────┤│ │
│ │ │ A │ 1 ~ 126 │ 0xxxxxxx ││ │
│ │ │ B │ 128 ~ 191 │ 10xxxxxx ││ │
│ │ │ C │ 192 ~ 223 │ 110xxxxx ││ │
│ │ │ D │ 224 ~ 239 │ 1110xxxx ││ │
│ │ │ E │ 240 ~ 255 │ 1111xxxx ││ │
│ │ └─────────┴────────────────┴─────────────────────────┘│ │
│ │ │ │
│ │ * 127 (0111 1111)은 루프백용으로 예약 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 예제: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 10.20.30.40 → 첫 옥텟 10 → 클래스 A │ │
│ │ 172.16.0.1 → 첫 옥텟 172 → 클래스 B │ │
│ │ 192.168.1.1 → 첫 옥텟 192 → 클래스 C │ │
│ │ 224.0.0.1 → 첫 옥텟 224 → 클래스 D (멀티캐스트) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ Classful의 문제점: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 1. IP 주소 낭비 │ │
│ │ - 클래스 A: 1600만 호스트 → 대부분 사용 안 함 │ │
│ │ - 클래스 C: 254 호스트 → 너무 적음 │ │
│ │ │ │
│ │ 2. 유연성 부족 │ │
│ │ - 필요에 맞는 크기의 네트워크 생성 어려움 │ │
│ │ │ │
│ │ 해결책: CIDR (Classless Inter-Domain Routing) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
클래스 요약표¶
| 클래스 | 첫 옥텟 | 네트워크 비트 | 호스트 비트 | 네트워크 수 | 호스트 수 |
|---|---|---|---|---|---|
| A | 1-126 | 8 | 24 | 126 | 16,777,214 |
| B | 128-191 | 16 | 16 | 16,384 | 65,534 |
| C | 192-223 | 24 | 8 | 2,097,152 | 254 |
| D | 224-239 | - | - | 멀티캐스트 | - |
| E | 240-255 | - | - | 예약됨 | - |
4. 서브넷 마스크¶
서브넷 마스크의 개념¶
┌─────────────────────────────────────────────────────────────────┐
│ 서브넷 마스크 (Subnet Mask) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 정의: IP 주소에서 네트워크 부분과 호스트 부분을 구분하는 값 │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ IP 주소: 192.168.1.100 │ │
│ │ 서브넷 마스크: 255.255.255.0 │ │
│ │ │ │
│ │ 이진수로 표현: │ │
│ │ IP: 11000000.10101000.00000001.01100100 │ │
│ │ Mask: 11111111.11111111.11111111.00000000 │ │
│ │ ├─────── 네트워크 ────────┤├─호스트─┤ │ │
│ │ (1이 연속된 부분) (0이 연속된 부분) │ │
│ │ │ │
│ │ 규칙: │ │
│ │ - 서브넷 마스크의 1 → 네트워크 부분 │ │
│ │ - 서브넷 마스크의 0 → 호스트 부분 │ │
│ │ - 1은 항상 연속 (중간에 0이 올 수 없음) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ AND 연산으로 네트워크 주소 계산: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ IP 주소: 192.168.1.100 │ │
│ │ 11000000.10101000.00000001.01100100 │ │
│ │ │ │
│ │ 서브넷 마스크: 255.255.255.0 │ │
│ │ 11111111.11111111.11111111.00000000 │ │
│ │ ──────────────────────────────────── │ │
│ │ AND 연산: 11000000.10101000.00000001.00000000 │ │
│ │ │ │
│ │ 네트워크 주소: 192.168.1.0 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
서브넷 마스크 값¶
┌─────────────────────────────────────────────────────────────────┐
│ 서브넷 마스크 값 표 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 유효한 서브넷 마스크 값 (각 옥텟): │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌──────────┬──────────────┬──────────────────────────┐│ │
│ │ │ 10진수 │ 이진수 │ 비트 수 ││ │
│ │ ├──────────┼──────────────┼──────────────────────────┤│ │
│ │ │ 0 │ 00000000 │ 0비트 (호스트 전체) ││ │
│ │ │ 128 │ 10000000 │ 1비트 ││ │
│ │ │ 192 │ 11000000 │ 2비트 ││ │
│ │ │ 224 │ 11100000 │ 3비트 ││ │
│ │ │ 240 │ 11110000 │ 4비트 ││ │
│ │ │ 248 │ 11111000 │ 5비트 ││ │
│ │ │ 252 │ 11111100 │ 6비트 ││ │
│ │ │ 254 │ 11111110 │ 7비트 ││ │
│ │ │ 255 │ 11111111 │ 8비트 (네트워크 전체) ││ │
│ │ └──────────┴──────────────┴──────────────────────────┘│ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 기본 서브넷 마스크: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────┬─────────────────────┬────────────────────┐│ │
│ │ │ 클래스 │ 서브넷 마스크 │ CIDR 표기 ││ │
│ │ ├─────────┼─────────────────────┼────────────────────┤│ │
│ │ │ A │ 255.0.0.0 │ /8 ││ │
│ │ │ B │ 255.255.0.0 │ /16 ││ │
│ │ │ C │ 255.255.255.0 │ /24 ││ │
│ │ └─────────┴─────────────────────┴────────────────────┘│ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
서브네팅 예제¶
┌─────────────────────────────────────────────────────────────────┐
│ 서브네팅 예제 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 문제: 192.168.1.0 네트워크를 4개의 서브넷으로 나누기 │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 원래 네트워크: 192.168.1.0/24 │ │
│ │ 필요한 서브넷 수: 4개 │ │
│ │ │ │
│ │ Step 1: 필요한 비트 수 계산 │ │
│ │ 2^n >= 4 → n = 2 (2비트 필요) │ │
│ │ │ │
│ │ Step 2: 새 서브넷 마스크 │ │
│ │ /24 + 2 = /26 │ │
│ │ 255.255.255.192 (11111111.11111111.11111111.11000000) │ │
│ │ │ │
│ │ Step 3: 서브넷 크기 │ │
│ │ 256 - 192 = 64 (서브넷당 64개 주소) │ │
│ │ 사용 가능 호스트: 64 - 2 = 62개 │ │
│ │ │ │
│ │ Step 4: 서브넷 범위 │ │
│ │ ┌──────────────────────────────────────────────────┐ │ │
│ │ │ 서브넷 네트워크 사용 범위 브로드 │ │ │
│ │ ├──────────────────────────────────────────────────┤ │ │
│ │ │ 서브넷 1 192.168.1.0 .1 ~ .62 .63 │ │ │
│ │ │ 서브넷 2 192.168.1.64 .65 ~ .126 .127 │ │ │
│ │ │ 서브넷 3 192.168.1.128 .129 ~ .190 .191 │ │ │
│ │ │ 서브넷 4 192.168.1.192 .193 ~ .254 .255 │ │ │
│ │ └──────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 시각적 표현: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 192.168.1.0/24 (원래) │ │
│ │ ├── 192.168.1.0/26 (서브넷 1: .0 ~ .63) │ │
│ │ ├── 192.168.1.64/26 (서브넷 2: .64 ~ .127) │ │
│ │ ├── 192.168.1.128/26 (서브넷 3: .128 ~ .191) │ │
│ │ └── 192.168.1.192/26 (서브넷 4: .192 ~ .255) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
5. CIDR 표기법¶
CIDR (Classless Inter-Domain Routing)¶
┌─────────────────────────────────────────────────────────────────┐
│ CIDR 표기법 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ CIDR: 클래스 없는 도메인 간 라우팅 │
│ 서브넷 마스크의 비트 수를 슬래시(/)로 표기 │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 192.168.1.0/24 │ │
│ │ ├──────────┤├─┤ │ │
│ │ IP 주소 프리픽스 길이 (네트워크 비트 수) │ │
│ │ │ │
│ │ /24 = 24개의 네트워크 비트 │ │
│ │ = 255.255.255.0 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ CIDR 표기법과 서브넷 마스크 대응표: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌────────┬─────────────────────┬───────────────────┐ │ │
│ │ │ CIDR │ 서브넷 마스크 │ 호스트 수 │ │ │
│ │ ├────────┼─────────────────────┼───────────────────┤ │ │
│ │ │ /8 │ 255.0.0.0 │ 16,777,214 │ │ │
│ │ │ /16 │ 255.255.0.0 │ 65,534 │ │ │
│ │ │ /20 │ 255.255.240.0 │ 4,094 │ │ │
│ │ │ /21 │ 255.255.248.0 │ 2,046 │ │ │
│ │ │ /22 │ 255.255.252.0 │ 1,022 │ │ │
│ │ │ /23 │ 255.255.254.0 │ 510 │ │ │
│ │ │ /24 │ 255.255.255.0 │ 254 │ │ │
│ │ │ /25 │ 255.255.255.128 │ 126 │ │ │
│ │ │ /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 │ │ │
│ │ │ /31 │ 255.255.255.254 │ 2 (P2P 링크) │ │ │
│ │ │ /32 │ 255.255.255.255 │ 1 (단일 호스트) │ │ │
│ │ └────────┴─────────────────────┴───────────────────┘ │ │
│ │ │ │
│ │ 호스트 수 = 2^(32-프리픽스) - 2 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
CIDR 계산 예제¶
┌─────────────────────────────────────────────────────────────────┐
│ CIDR 계산 예제 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 예제 1: 172.16.50.25/20의 네트워크 정보 계산 │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ IP: 172.16.50.25 │ │
│ │ 172 . 16 . 50 . 25 │ │
│ │ 10101100.00010000.00110010.00011001 │ │
│ │ │ │
│ │ /20 마스크: │ │
│ │ 11111111.11111111.11110000.00000000 │ │
│ │ 255.255.240.0 │ │
│ │ │ │
│ │ AND 연산 (네트워크 주소): │ │
│ │ 10101100.00010000.00110000.00000000 │ │
│ │ = 172.16.48.0 │ │
│ │ │ │
│ │ 브로드캐스트 주소 (호스트 비트 모두 1): │ │
│ │ 10101100.00010000.00111111.11111111 │ │
│ │ = 172.16.63.255 │ │
│ │ │ │
│ │ 결과: │ │
│ │ - 네트워크 주소: 172.16.48.0/20 │ │
│ │ - 첫 번째 호스트: 172.16.48.1 │ │
│ │ - 마지막 호스트: 172.16.63.254 │ │
│ │ - 브로드캐스트: 172.16.63.255 │ │
│ │ - 호스트 수: 2^12 - 2 = 4,094 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 예제 2: 500개의 호스트가 필요할 때 적절한 CIDR 선택 │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 필요한 호스트: 500개 │ │
│ │ │ │
│ │ 2^n - 2 >= 500 │ │
│ │ 2^9 - 2 = 510 >= 500 ✓ │ │
│ │ 2^8 - 2 = 254 < 500 ✗ │ │
│ │ │ │
│ │ 호스트 비트: 9개 │ │
│ │ 네트워크 비트: 32 - 9 = 23 │ │
│ │ CIDR: /23 │ │
│ │ 서브넷 마스크: 255.255.254.0 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
CIDR 집계 (Supernetting)¶
┌─────────────────────────────────────────────────────────────────┐
│ CIDR 집계 (Supernetting) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 여러 네트워크를 하나의 큰 네트워크로 요약 (라우팅 테이블 축소)│
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 집계 전: │ │
│ │ 192.168.0.0/24 (192.168.0.0 ~ 192.168.0.255) │ │
│ │ 192.168.1.0/24 (192.168.1.0 ~ 192.168.1.255) │ │
│ │ 192.168.2.0/24 (192.168.2.0 ~ 192.168.2.255) │ │
│ │ 192.168.3.0/24 (192.168.3.0 ~ 192.168.3.255) │ │
│ │ │ │
│ │ 집계 후: │ │
│ │ 192.168.0.0/22 (192.168.0.0 ~ 192.168.3.255) │ │
│ │ │ │
│ │ 이진수로 확인: │ │
│ │ 192.168.0.x = 11000000.10101000.000000xx.xxxxxxxx │ │
│ │ 192.168.1.x = 11000000.10101000.000000xx.xxxxxxxx │ │
│ │ 192.168.2.x = 11000000.10101000.000000xx.xxxxxxxx │ │
│ │ 192.168.3.x = 11000000.10101000.000000xx.xxxxxxxx │ │
│ │ └───── 처음 22비트가 동일 ─────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 장점: │
│ - 라우팅 테이블 크기 감소 │
│ - 라우팅 업데이트 트래픽 감소 │
│ - 라우터 메모리 절약 │
│ │
└─────────────────────────────────────────────────────────────────┘
6. 공인 IP vs 사설 IP¶
공인 IP와 사설 IP¶
┌─────────────────────────────────────────────────────────────────┐
│ 공인 IP vs 사설 IP │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 공인 IP (Public IP): │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ • 인터넷에서 직접 통신 가능한 유일한 주소 │ │
│ │ • ISP로부터 할당받음 (유료) │ │
│ │ • 전 세계에서 유일 │ │
│ │ • 인터넷 라우팅 가능 │ │
│ │ │ │
│ │ 예: 8.8.8.8 (Google DNS), 1.1.1.1 (Cloudflare) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 사설 IP (Private IP): │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ • 내부 네트워크에서만 사용 │ │
│ │ • 인터넷에서 직접 라우팅 불가 │ │
│ │ • 무료로 사용 가능 │ │
│ │ • NAT를 통해 인터넷 접속 │ │
│ │ • 서로 다른 네트워크에서 중복 사용 가능 │ │
│ │ │ │
│ │ RFC 1918 사설 IP 대역: │ │
│ │ ┌──────────────────────────────────────────────────┐ │ │
│ │ │ 클래스 │ 범위 │ CIDR │ │ │
│ │ ├─────────┼──────────────────────────┼────────────┤ │ │
│ │ │ A │ 10.0.0.0 ~ 10.255.255.255│ /8 │ │ │
│ │ │ B │ 172.16.0.0 ~ 172.31.255.255│ /12 │ │ │
│ │ │ C │ 192.168.0.0 ~192.168.255.255│ /16 │ │ │
│ │ └──────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
NAT (Network Address Translation)¶
┌─────────────────────────────────────────────────────────────────┐
│ NAT (Network Address Translation) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ NAT: 사설 IP를 공인 IP로 변환하여 인터넷 통신 가능하게 함 │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 사설 네트워크 인터넷 │ │
│ │ │ │
│ │ ┌───────────┐ │ │
│ │ │ PC1 │ 192.168.1.10 │ │
│ │ └─────┬─────┘ │ │
│ │ │ │ │
│ │ ┌───────────┐ │ │
│ │ │ PC2 │ 192.168.1.20 │ │
│ │ └─────┬─────┘ │ │
│ │ │ │ │
│ │ ┌─────┴─────┐ ┌─────────────┐ ┌───────────────┐ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ Switch ├───┤ Router ├────┤ Internet │ │ │
│ │ │ │ │ (NAT) │ │ │ │ │
│ │ └───────────┘ └─────────────┘ └───────────────┘ │ │
│ │ │ │ │
│ │ 내부: 192.168.1.1 │ │
│ │ 외부: 203.0.113.5 (공인 IP) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ NAT 동작: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 나가는 패킷: │ │
│ │ 출발지: 192.168.1.10:5000 → 203.0.113.5:40000 │ │
│ │ 목적지: 8.8.8.8:53 (변경 없음) │ │
│ │ │ │
│ │ 들어오는 패킷: │ │
│ │ 출발지: 8.8.8.8:53 (변경 없음) │ │
│ │ 목적지: 203.0.113.5:40000 → 192.168.1.10:5000 │ │
│ │ │ │
│ │ NAT 테이블: │ │
│ │ ┌─────────────────────────┬─────────────────────────┐ │ │
│ │ │ 내부 주소 │ 외부 주소 │ │ │
│ │ ├─────────────────────────┼─────────────────────────┤ │ │
│ │ │ 192.168.1.10:5000 │ 203.0.113.5:40000 │ │ │
│ │ │ 192.168.1.20:5001 │ 203.0.113.5:40001 │ │ │
│ │ └─────────────────────────┴─────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ NAT 종류: │
│ • 정적 NAT: 1:1 매핑 (고정) │
│ • 동적 NAT: N:N 매핑 (풀에서 할당) │
│ • PAT (Port Address Translation): N:1 매핑 (포트로 구분) │
│ │
└─────────────────────────────────────────────────────────────────┘
기타 특수 IP 대역¶
┌─────────────────────────────────────────────────────────────────┐
│ 기타 특수 IP 대역 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────────────┬─────────────────────────────────────┐ │
│ │ 대역 │ 용도 │ │
│ ├────────────────────┼─────────────────────────────────────┤ │
│ │ 0.0.0.0/8 │ 현재 네트워크 (This Network) │ │
│ │ 127.0.0.0/8 │ 루프백 (Loopback) │ │
│ │ 169.254.0.0/16 │ APIPA (Link-Local) │ │
│ │ 224.0.0.0/4 │ 멀티캐스트 │ │
│ │ 240.0.0.0/4 │ 예약됨 (Reserved) │ │
│ │ 255.255.255.255/32 │ 제한된 브로드캐스트 │ │
│ │ 100.64.0.0/10 │ Carrier-Grade NAT (CGN) │ │
│ │ 192.0.0.0/24 │ IETF 프로토콜 할당 │ │
│ │ 192.0.2.0/24 │ 문서용 (TEST-NET-1) │ │
│ │ 198.51.100.0/24 │ 문서용 (TEST-NET-2) │ │
│ │ 203.0.113.0/24 │ 문서용 (TEST-NET-3) │ │
│ └────────────────────┴─────────────────────────────────────┘ │
│ │
│ APIPA (Automatic Private IP Addressing): │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ • DHCP 서버를 찾지 못할 때 자동 할당 │ │
│ │ • 범위: 169.254.1.0 ~ 169.254.254.255 │ │
│ │ • 같은 네트워크의 APIPA 호스트끼리만 통신 가능 │ │
│ │ • 인터넷 접속 불가 │ │
│ │ │ │
│ │ APIPA 주소가 보이면 → DHCP 문제 확인 필요! │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
7. IPv6 기초¶
IPv6 등장 배경¶
┌─────────────────────────────────────────────────────────────────┐
│ IPv6 등장 배경 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ IPv4의 한계: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 1. 주소 고갈 │ │
│ │ - IPv4: 약 43억 개 주소 │ │
│ │ - 세계 인구: 80억 + 수십억 IoT 장치 │ │
│ │ - 2011년: IANA IPv4 주소 소진 │ │
│ │ - 2019년: RIPE NCC (유럽) 주소 소진 │ │
│ │ │ │
│ │ 2. NAT의 복잡성 │ │
│ │ - End-to-End 연결 어려움 │ │
│ │ - 일부 애플리케이션 호환성 문제 │ │
│ │ - 설정 및 관리 복잡 │ │
│ │ │ │
│ │ 3. 보안 기능 부재 │ │
│ │ - IPsec 선택 사항 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ IPv6의 특징: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 1. 거대한 주소 공간 │ │
│ │ 128비트 = 2^128 개 주소 │ │
│ │ ≈ 340간(340 x 10^36) 개 │ │
│ │ = 지구 표면 1m²당 6.5 x 10^23개 │ │
│ │ │ │
│ │ 2. 자동 구성 (SLAAC) │ │
│ │ - DHCP 없이 자동 주소 설정 │ │
│ │ │ │
│ │ 3. 단순화된 헤더 │ │
│ │ - 고정 40바이트 헤더 │ │
│ │ - 확장 헤더로 옵션 처리 │ │
│ │ │ │
│ │ 4. IPsec 기본 지원 │ │
│ │ │ │
│ │ 5. 브로드캐스트 제거 │ │
│ │ - 멀티캐스트와 애니캐스트로 대체 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
IPv6 주소 구조¶
┌─────────────────────────────────────────────────────────────────┐
│ IPv6 주소 구조 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 128비트 = 8개의 16비트 그룹 (16진수로 표기) │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 전체 표기: │ │
│ │ 2001:0db8:0000:0000:0000:0000:0000:0001 │ │
│ │ ├──┤├──┤├──┤├──┤├──┤├──┤├──┤├──┤ │ │
│ │ 16비트씩 8개 그룹 (콜론으로 구분) │ │
│ │ │ │
│ │ 축약 규칙: │ │
│ │ 1. 각 그룹의 선행 0 생략 가능 │ │
│ │ 0db8 → db8 │ │
│ │ 0001 → 1 │ │
│ │ │ │
│ │ 2. 연속된 0 그룹은 ::로 한 번만 축약 가능 │ │
│ │ :0000:0000:0000: → :: │ │
│ │ │ │
│ │ 축약 결과: │ │
│ │ 2001:0db8:0000:0000:0000:0000:0000:0001 │ │
│ │ → 2001:db8::1 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 축약 예시: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ fe80:0000:0000:0000:0000:0000:0000:0001 │ │
│ │ → fe80::1 │ │
│ │ │ │
│ │ 2001:0db8:0001:0000:0000:0000:0000:0001 │ │
│ │ → 2001:db8:1::1 │ │
│ │ │ │
│ │ 0000:0000:0000:0000:0000:0000:0000:0001 │ │
│ │ → ::1 (루프백) │ │
│ │ │ │
│ │ 0000:0000:0000:0000:0000:0000:0000:0000 │ │
│ │ → :: (미지정 주소) │ │
│ │ │ │
│ │ 주의: ::는 주소당 한 번만 사용 가능! │ │
│ │ 2001::1::2 (잘못됨) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
IPv6 주소 유형¶
┌─────────────────────────────────────────────────────────────────┐
│ IPv6 주소 유형 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. 유니캐스트 (Unicast): │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 글로벌 유니캐스트 (Global Unicast): │ │
│ │ - 인터넷에서 유일한 주소 │ │
│ │ - 2000::/3 범위 (2000:: ~ 3fff::) │ │
│ │ - IPv4의 공인 IP와 유사 │ │
│ │ │ │
│ │ 링크 로컬 (Link-Local): │ │
│ │ - fe80::/10 범위 │ │
│ │ - 같은 링크 내에서만 유효 │ │
│ │ - 자동 생성 │ │
│ │ - 라우터를 통과하지 않음 │ │
│ │ │ │
│ │ 고유 로컬 (Unique Local, ULA): │ │
│ │ - fc00::/7 범위 │ │
│ │ - IPv4의 사설 IP와 유사 │ │
│ │ - 인터넷 라우팅 불가 │ │
│ │ │ │
│ │ 루프백: ::1 │ │
│ │ - IPv4의 127.0.0.1과 동일 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 2. 멀티캐스트 (Multicast): │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ - ff00::/8 범위 │ │
│ │ - 그룹의 모든 장치에 전송 │ │
│ │ - IPv4의 브로드캐스트 기능 대체 │ │
│ │ │ │
│ │ 주요 멀티캐스트 주소: │ │
│ │ ff02::1 - 모든 노드 (All Nodes) │ │
│ │ ff02::2 - 모든 라우터 (All Routers) │ │
│ │ ff02::fb - mDNS │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 3. 애니캐스트 (Anycast): │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ - 같은 주소를 여러 노드에 할당 │ │
│ │ - 가장 가까운 노드로 라우팅 │ │
│ │ - 로드 밸런싱, DNS 등에 사용 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ * IPv6에는 브로드캐스트가 없음! │
│ │
└─────────────────────────────────────────────────────────────────┘
IPv4 vs IPv6 비교¶
┌─────────────────────────────────────────────────────────────────┐
│ IPv4 vs IPv6 비교 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────┬───────────────────────────────────┐ │
│ │ 항목 │ IPv4 │ IPv6 │ │
│ ├─────────────────────┼───────────────┼───────────────────┤ │
│ │ 주소 길이 │ 32비트 │ 128비트 │ │
│ │ 주소 개수 │ 약 43억 │ 약 340간 │ │
│ │ 표기법 │ 점-십진 │ 콜론-16진수 │ │
│ │ 예시 │ 192.168.1.1 │ 2001:db8::1 │ │
│ │ 헤더 크기 │ 20-60 바이트│ 40 바이트 (고정)│ │
│ │ 체크섬 │ 있음 │ 없음 │ │
│ │ 브로드캐스트 │ 있음 │ 없음 │ │
│ │ 멀티캐스트 │ 선택 │ 필수 │ │
│ │ IPsec │ 선택 │ 내장 │ │
│ │ 자동 구성 │ DHCP │ SLAAC/DHCPv6 │ │
│ │ 단편화 │ 라우터에서 │ 출발지에서만 │ │
│ │ ARP │ 사용 │ NDP로 대체 │ │
│ └─────────────────────┴───────────────┴───────────────────┘ │
│ │
│ NDP (Neighbor Discovery Protocol): │
│ - IPv6에서 ARP, ICMP Router Discovery 등을 대체 │
│ - ICMPv6 기반 │
│ - 라우터 검색, 주소 자동 구성, 중복 주소 감지 │
│ │
└─────────────────────────────────────────────────────────────────┘
8. 연습 문제¶
기초 문제¶
1. 다음 IP 주소의 클래스를 식별하시오. - (a) 10.0.0.1 - (b) 172.16.0.1 - (c) 192.168.1.1 - (d) 224.0.0.1
2. 서브넷 마스크 255.255.255.192의 CIDR 표기법은?
3. 192.168.1.0/24 네트워크에서 사용 가능한 호스트 IP 주소의 범위와 개수를 구하시오.
4. 다음 중 사설 IP 주소가 아닌 것은? - (a) 10.255.255.255 - (b) 172.32.0.1 - (c) 192.168.0.1 - (d) 172.16.0.1
응용 문제¶
5. 172.16.50.100/20의 네트워크 주소, 브로드캐스트 주소, 첫 번째/마지막 호스트 주소를 계산하시오.
6. 회사에 200대의 PC가 있습니다. 192.168.10.0 네트워크에서 적절한 서브넷 마스크와 CIDR를 선택하시오.
7. 10.0.0.0/8 네트워크를 /16으로 서브네팅할 때 생성되는 서브넷의 개수는?
심화 문제¶
8. 다음 4개의 서브넷을 하나로 집계(Supernetting)하시오. - 192.168.4.0/24 - 192.168.5.0/24 - 192.168.6.0/24 - 192.168.7.0/24
9. IPv6 주소 2001:0db8:0000:0000:0000:ff00:0042:8329를 축약 형식으로 변환하시오.
10. NAT가 필요한 이유와 NAT의 장단점을 설명하시오.
정답
**1.** - (a) 10.0.0.1 - 클래스 A - (b) 172.16.0.1 - 클래스 B - (c) 192.168.1.1 - 클래스 C - (d) 224.0.0.1 - 클래스 D (멀티캐스트) **2.** /26 (255.255.255.192 = 11111111.11111111.11111111.11000000 = 26개의 1) **3.** - 범위: 192.168.1.1 ~ 192.168.1.254 - 개수: 254개 (2^8 - 2) **4.** (b) 172.32.0.1 (사설 IP 범위: 172.16.0.0 ~ 172.31.255.255) **5.** - IP: 172.16.50.100 - /20 마스크: 255.255.240.0 - 네트워크 주소: 172.16.48.0 - 브로드캐스트 주소: 172.16.63.255 - 첫 번째 호스트: 172.16.48.1 - 마지막 호스트: 172.16.63.254 **6.** - 200대 PC 필요 - 2^8 - 2 = 254 >= 200 ✓ - 서브넷 마스크: 255.255.255.0 - CIDR: /24 **7.** - /8 → /16: 16 - 8 = 8비트 빌림 - 서브넷 수: 2^8 = 256개 **8.** - 192.168.4.0 = 11000000.10101000.00000100.00000000 - 192.168.5.0 = 11000000.10101000.00000101.00000000 - 192.168.6.0 = 11000000.10101000.00000110.00000000 - 192.168.7.0 = 11000000.10101000.00000111.00000000 - 처음 22비트가 동일: 192.168.4.0/22 **9.** - 2001:0db8:0000:0000:0000:ff00:0042:8329 - 선행 0 제거: 2001:db8:0:0:0:ff00:42:8329 - 연속 0 축약: 2001:db8::ff00:42:8329 **10.** - 필요 이유: IPv4 주소 고갈 문제 해결, 사설 네트워크 보호 - 장점: IP 주소 절약, 내부 네트워크 숨김 (보안) - 단점: End-to-End 연결 어려움, 일부 프로토콜 호환성 문제, 설정 복잡성다음 단계¶
- 07_Subnetting_Practice.md - 서브네팅 계산 실습
참고 자료¶
- TCP/IP Illustrated (W. Richard Stevens)
- RFC 791: Internet Protocol
- RFC 1918: Private Address Space
- RFC 8200: IPv6
- IANA IPv4 Address Space