왜 네트워크 계층이 필요한가
데이터 링크 계층(이더넷·스위치)은 같은 LAN 안에서만 통신할 수 있습니다. 인터넷처럼 서로 다른 네트워크 간 통신에는 네트워크 계층(IP) 이 필요합니다.
| 계층 | 주소 체계 | 통신 범위 | 장비 |
|---|---|---|---|
| 데이터 링크 계층 | MAC 주소 (48 bit) | 동일 LAN 내 | 스위치 |
| 네트워크 계층 | IP 주소 (32 bit) | 다른 네트워크 간 | 라우터 |
네트워크 계층이 해결하는 세 가지 문제
| 문제 | 해결 방법 |
|---|---|
| 다른 네트워크 호스트의 주소를 어떻게 지정? | IP 주소 (Addressing) |
| 패킷이 어떤 경로로 가야 하나? | 라우팅 (Routing) |
| 링크 MTU보다 큰 패킷은? | 단편화 (Fragmentation) |
IPv4 주소 구조
IPv4는 32비트(4바이트) 주소 체계로, 8비트씩 4개의 옥텟(octet)으로 구분합니다.
모든 IP 주소는 두 부분으로 구성됩니다.
| 부분 | 의미 | 예시 (192.168.1.100/24) |
|---|---|---|
| 네트워크 주소 | 어느 네트워크에 속하는가 | 192.168.1 |
| 호스트 주소 | 해당 네트워크 안의 몇 번 호스트? | 100 |
특수 주소 규칙
| 호스트 주소 비트 | 의미 | 예시 (/24) |
|---|---|---|
| 모두 0 | 네트워크 주소 (네트워크 자체를 표현) | 192.168.1.0 |
| 모두 1 | 브로드캐스트 주소 (전체 전송) | 192.168.1.255 |
| 나머지 | 실제 호스트에 할당 가능 | 192.168.1.1 ~ .254 |
Classful vs CIDR
Classful 주소 체계 (과거)
초기 인터넷은 IP 대역을 클래스로 나눠 할당했습니다.
| 클래스 | 시작 비트 | 네트워크 비트 | 호스트 비트 | 대역 |
|---|---|---|---|---|
| A | 0… | 8 | 24 | 0.x.x.x ~ 127.x.x.x |
| B | 10… | 16 | 16 | 128.x.x.x ~ 191.x.x.x |
| C | 110… | 24 | 8 | 192.x.x.x ~ 223.x.x.x |
문제점: 호스트 300개가 필요한 기업에 클래스 B(65,534개)를 통째로 줘야 해서 IP 낭비가 극심했습니다.
CIDR (Classless Inter-Domain Routing) — 현재 표준
클래스 경계 없이 슬래시(/) 표기로 네트워크 크기를 자유롭게 지정합니다.
서브넷 마스크 — 핵심 개념
CIDR 표기 별 호스트 수 계산
| CIDR 표기 | 서브넷 마스크 | 호스트 수 | AWS 활용 |
|---|---|---|---|
| /8 | 255.0.0.0 | 16,777,214 | 대규모 VPC |
| /16 | 255.255.0.0 | 65,534 | VPC 전체 대역 |
| /24 | 255.255.255.0 | 254 | 서브넷 하나 |
| /28 | 255.255.255.240 | 14 | 소규모 서브넷 |
공식: 호스트 수 = 2^(32 - prefix) - 2 (네트워크·브로드캐스트 주소 제외)
공인 IP vs 사설 IP
| 구분 | 설명 | 할당 |
|---|---|---|
| 공인 IP | 인터넷에서 전 세계 유일 | ISP(통신사)가 할당 |
| 사설 IP | 내부 네트워크 전용, 인터넷 직접 통신 불가 | 라우터(공유기)가 할당 |
RFC 1918 사설 IP 대역 — AWS VPC가 이 대역을 씁니다
| 대역 | 범위 | 비고 |
|---|---|---|
| 10.0.0.0/8 | 10.0.0.0 ~ 10.255.255.255 | 대규모 사설망, AWS VPC 권장 |
| 172.16.0.0/12 | 172.16.0.0 ~ 172.31.255.255 | 중규모 사설망 |
| 192.168.0.0/16 | 192.168.0.0 ~ 192.168.255.255 | 가정용 공유기 기본값 |
| 127.0.0.0/8 | 127.x.x.x | 루프백 (자기 자신) |
NAT (Network Address Translation)
사설 IP를 가진 내부 호스트가 인터넷과 통신할 때, 라우터(공유기)가 주소를 변환합니다.
NAT 변환 테이블 예시
| 내부 IP | 내부 포트 | 외부(공인) IP | 외부 포트 |
|---|---|---|---|
| 10.0.0.5 | 45001 | 203.0.113.1 | 60001 |
| 10.0.0.6 | 45002 | 203.0.113.1 | 60002 |
| 10.0.0.7 | 45003 | 203.0.113.1 | 60003 |
NAPT: 하나의 공인 IP에 포트 번호를 다르게 부여해 여러 내부 호스트가 동시에 통신합니다. 가정 공유기, 기업 방화벽, AWS NAT Gateway 모두 이 방식입니다.
포트 포워딩 개념
| 요청 | 변환 결과 |
|---|---|
| 외부 → 공인IP:80 | → 내부 192.168.1.10:8080 |
| 외부 → 공인IP:22 | → 내부 192.168.1.20:22 |
라우팅 (Routing)
라우터: 서로 다른 네트워크를 연결하고, 패킷이 이동할 최적 경로를 결정하는 장비
라우팅 테이블 구조
| 수신지 네트워크 | 서브넷 마스크 | Next Hop (다음 라우터) | Metric |
|---|---|---|---|
| 10.0.1.0 | /24 | 10.0.0.1 (직접 연결) | 0 |
| 192.168.0.0 | /16 | 10.0.0.254 | 1 |
| 0.0.0.0 | /0 (Default) | 203.0.113.254 (ISP) | 10 |
Default Route (
0.0.0.0/0): 테이블에 일치하는 경로가 없을 때 사용하는 기본 경로
라우팅 프로토콜 비교
| 구분 | 프로토콜 | 방식 | 특징 |
|---|---|---|---|
| 내부(IGP) | RIP | 거리 벡터 | 홉 수 기준, 최대 15홉, 주기적 전체 업데이트 |
| 내부(IGP) | OSPF | 링크 상태 | 변경 시만 업데이트, 대규모 네트워크 적합 |
| 외부(EGP) | BGP | 경로 벡터 | 인터넷 백본 표준, AS 간 정책 기반 라우팅 |
ARP (Address Resolution Protocol)
네트워크 계층과 데이터 링크 계층을 연결합니다. IP 주소 → MAC 주소 변환이 목적입니다.
ARP 테이블 예시
| IP 주소 | MAC 주소 | 타입 |
|---|---|---|
| 192.168.1.1 | 00:11:22:33:44:55 | 동적 (캐시) |
| 192.168.1.5 | aa:bb:cc:dd:ee:ff | 동적 (캐시) |
| 192.168.1.10 | ff:ee:dd:cc:bb:aa | 정적 (수동 설정) |
DHCP (Dynamic Host Configuration Protocol)
클라이언트에게 IP 주소를 자동으로 할당합니다. (보통 라우터·공유기가 DHCP 서버 역할)
DHCP가 제공하는 정보
| 항목 | 예시 |
|---|---|
| IP 주소 | 192.168.1.100 |
| 서브넷 마스크 | 255.255.255.0 |
| 기본 게이트웨이 | 192.168.1.1 |
| DNS 서버 | 8.8.8.8 |
| 임대 기간 (Lease Time) | 24시간 |
IP 단편화 (Fragmentation)
전송 패킷이 링크의 MTU(최대 전송 단위)보다 크면 분할합니다.
| 구분 | 크기 |
|---|---|
| 일반 이더넷 MTU | 1500 byte |
| IP 헤더 | 20 byte |
| 최대 페이로드 | 1480 byte |
IPv4 헤더 중 단편화 관련 필드
| 필드 | 역할 |
|---|---|
| Identifier | 같은 원본 패킷 조각임을 식별하는 번호 |
| Flag – DF (Don’t Fragment) | 1이면 분할 금지 → 분할 필요 시 ICMP 오류 반환 |
| Flag – MF (More Fragments) | 1이면 뒤에 조각이 더 있음 |
| Fragment Offset | 원본에서 해당 조각이 시작하는 위치 (8바이트 단위) |
| TTL (Time To Live) | 라우터 통과 시마다 -1, 0이 되면 패킷 폐기 (루프 방지) |
AWS에서 네트워크 계층 개념 적용
| 개념 | AWS 서비스 / 기능 |
|---|---|
| 사설 IP 대역 (RFC 1918) | VPC CIDR (10.0.0.0/16 등) |
| 서브네팅 (CIDR) | 퍼블릭 서브넷 /24, 프라이빗 서브넷 /24 |
| 라우터 | VPC Router (자동 생성됨) |
| 라우팅 테이블 | Route Table (서브넷별 경로 설정) |
| NAT | NAT Gateway (프라이빗 서브넷 → 인터넷) |
| DHCP | VPC DHCP Options Set |
| Default Route | 0.0.0.0/0 → Internet Gateway 또는 NAT Gateway |
VPC 서브넷 설계 예시
| 서브넷 | CIDR | 용도 | 인터넷 연결 |
|---|---|---|---|
| Public Subnet | 10.0.1.0/24 | ALB, Bastion Host | Internet Gateway (직접) |
| Private Subnet | 10.0.2.0/24 | EC2 앱 서버, RDS | NAT Gateway (간접) |
정리
| 개념 | 핵심 |
|---|---|
| IPv4 | 32 bit, 네트워크 + 호스트 주소 |
| CIDR | /숫자로 서브넷 크기 표현, AWS VPC 필수 개념 |
| 사설 IP | 10.x / 172.16-31.x / 192.168.x — 외부 직접 통신 불가 |
| NAT | 사설 IP ↔ 공인 IP 변환, AWS NAT Gateway 동일 원리 |
| DHCP | IP 자동 할당 (Discover → Offer → Request → ACK) |
| 라우팅 | 최적 경로 결정, 라우팅 테이블 참조 |
| ARP | IP → MAC 주소 변환 |
다음 포스트: 전송 계층 — TCP, UDP, 3-way Handshake, 혼잡 제어