본문으로 건너뛰기
김신건의 로그

[Network] IP: IPv4, IPv6, CIDR

· 수정 · 📖 약 3분 · 1,206자/단어 #network #ip #ipv4 #ipv6 #cidr
network-ip, IP address, IP 주소, IPv4, IPv6, CIDR notation, IP

정의

IP (Internet Protocol) 주소 는 인터넷에서 노드를 식별하는 논리 주소다. IPv4 (32bit) 와 IPv6 (128bit) 두 버전이 현재 병존한다.

IP 는 OSI 7 Layer 의 L3 (Network Layer) 에서 동작하며, 라우터가 패킷을 목적지까지 전달하는 기반이 된다.

IPv4

4 개 8bit 옥텟: 192.168.1.1. 총 2^32 (약 43억 개), 이미 고갈 상태.

주소 구조 (CIDR)

IP:      192  .  168  .   1   .   1
Binary: 11000000.10101000.00000001.00000001
        |<--- 네트워크 부분 (prefix) --->| 호스트|

192.168.1.0/24 표기에서 /24 는 앞 24 bit 가 네트워크 식별자, 뒤 8 bit 가 호스트 주소임을 의미한다.

특수 주소 범위

범위CIDR용도
사설 A10.0.0.0/8대규모 사내망
사설 B172.16.0.0/12중규모 네트워크
사설 C192.168.0.0/16홈 라우터 기본
루프백127.0.0.0/8localhost
링크 로컬169.254.0.0/16APIPA (DHCP 실패 시 자동 할당)
멀티캐스트224.0.0.0/4그룹 전송
브로드캐스트255.255.255.255/32서브넷 전체 전송

CIDR 서브넷 계산

CIDR서브넷 마스크호스트 수용도
/8255.0.0.016,777,214대형 사내망 (Class A)
/16255.255.0.065,534중형 사내망 (Class B)
/24255.255.255.0254일반 서브넷 (Class C)
/28255.255.255.24014소형 서브넷
/30255.255.255.2522P2P 링크
/32255.255.255.2551단일 호스트

IMPORTANT

/24 서브넷에서 256개 IP 중 254개만 사용 가능하다. 첫 주소(192.168.1.0)는 네트워크 주소, 마지막 주소(192.168.1.255)는 브로드캐스트 주소로 예약된다.

서브넷 계산 예시

VPC 10.0.0.0/16 분할:
  Public subnet:  10.0.1.0/24   → 254 호스트
  Private subnet: 10.0.2.0/24   → 254 호스트
  DB subnet:      10.0.3.0/24   → 254 호스트
  Reserved:       10.0.4.0/24 ~ 10.0.255.0/24

IPv6

128bit 주소, 16진수 8 그룹으로 표기: 2001:0db8:85a3:0000:0000:8a2e:0370:7334

연속된 0 그룹 축약: 2001:db8:85a3::8a2e:370:7334

IPv4 vs IPv6 비교

특성IPv4IPv6
비트 수32128
주소 수약 43억약 3.4 x 10^38
표기점 표기 192.168.1.1콜론 16진수 ::1
헤더 크기20 byte (가변)40 byte (고정)
NAT 필요필수 (주소 부족)불필요
서브넷 기본가변/64 (LAN 하나)
체크섬헤더에 포함제거됨 (상위 계층 위임)

IPv6 특수 주소

주소의미
::1loopback (IPv4 의 127.0.0.1)
fe80::/10link-local (라우터를 넘지 않음)
fc00::/7unique local (사설 주소, IPv4 의 10.0.0.0/8 유사)
ff00::/8멀티캐스트
2000::/3글로벌 유니캐스트 (공인 주소)

Public vs Private

flowchart LR
    subgraph LAN["사내 / 가정 LAN (사설 IP)"]
        PC1["PC1: 192.168.1.10"]
        PC2["PC2: 192.168.1.11"]
        Phone["모바일: 192.168.1.50"]
    end
    NAT["NAT 라우터\n공인: 203.0.113.5"]
    Internet["인터넷"]
    PC1 --> NAT
    PC2 --> NAT
    Phone --> NAT
    NAT --> Internet

Public IP: 인터넷에서 직접 라우팅 가능. ISP 가 할당.

Private IP: 로컬 네트워크 전용. 외부에서 직접 접근 불가. NAT 를 통해 공인 IP 와 매핑.

NAT (Network Address Translation)

IPv4 고갈 문제를 보완하기 위해 라우터가 내부 사설 주소를 외부 공인 주소로 변환한다.

sequenceDiagram
    participant PC as PC192168110
    participant R as RouterNAT
    participant S as WebServer
    PC->>R: SRC=192.168.1.10:4000 DST=1.2.3.4:80
    R->>S: SRC=203.0.113.5:12345 DST=1.2.3.4:80
    note over R: NAT 테이블에 매핑 기록
    S->>R: SRC=1.2.3.4:80 DST=203.0.113.5:12345
    R->>PC: SRC=1.2.3.4:80 DST=192.168.1.10:4000

NAT 는 연결 추적(connection tracking) 이 필요하며, Stateful Firewall 과 함께 동작한다.

자세한 내용: NAT.

DHCP

동적 IP 할당 프로토콜. 4단계 DORA 플로우:

sequenceDiagram
    participant C as Client
    participant D as DHCPServer
    C->>D: DHCPDISCOVER (broadcast)
    D->>C: DHCPOFFER (IP 제안, lease 시간)
    C->>D: DHCPREQUEST (제안 수락)
    D->>C: DHCPACK (확정, lease 시작)
    note over C,D: IP 임차 기간 만료 전 갱신 필요
  • Discover: 클라이언트가 브로드캐스트로 DHCP 서버 탐색
  • Offer: 서버가 사용 가능한 IP 와 임차 기간 제안
  • Request: 클라이언트가 특정 IP 를 요청
  • Acknowledge: 서버가 IP 할당 확정

IP 패킷 구조 (IPv4)

 0       4       8      16      24      32 bit
 +-------+-------+-------+-------+-------+
 |Version|  IHL  |  ToS  |    Total Len  |
 +-------+-------+-------+---------------+
 |     Identification    |Flags|Frag Offs|
 +-------+-------+-------+-------+-------+
 |   TTL |Protocol|    Header Checksum   |
 +-------+-------+-------+-------+-------+
 |           Source Address              |
 +-------+-------+-------+-------+-------+
 |        Destination Address            |
 +-------+-------+-------+-------+-------+
 |         Options (optional)            |
 +-------+-------+-------+-------+-------+

주요 필드:

  • TTL (Time to Live): 라우터 통과 시마다 1 감소. 0 이 되면 패킷 폐기하고 ICMP Time Exceeded 전송 (루프 방지, traceroute 원리)
  • Protocol: 상위 계층 식별 (TCP=6, UDP=17, ICMP=1)
  • Flags + Fragment Offset: MTU 초과 패킷을 단편화 (분할) 하기 위한 필드

실전 예시

AWS VPC 서브넷 설계

VPC:            10.0.0.0/16       (65,534 개 IP)
  Public AZ-a:  10.0.1.0/24       (254 개, 인터넷 게이트웨이)
  Public AZ-b:  10.0.2.0/24       (254 개, 인터넷 게이트웨이)
  Private AZ-a: 10.0.11.0/24      (254 개, NAT 게이트웨이)
  Private AZ-b: 10.0.12.0/24      (254 개, NAT 게이트웨이)
  DB AZ-a:      10.0.21.0/24      (254 개, 외부 접근 불가)
  DB AZ-b:      10.0.22.0/24      (254 개, 외부 접근 불가)

IPv4/IPv6 이중 스택 (Dual Stack)

현재 인터넷은 IPv4 와 IPv6 를 동시 운용한다. 서버는 두 주소 모두 수신하고, 클라이언트는 Happy Eyeballs (RFC 8305) 로 더 빠른 쪽을 선택한다.

# 서버 측 이중 스택 리슨 확인
ss -tn -l '( sport = :80 or sport = :443 )'
# IPv6 형식으로 IPv4 도 포함: ::ffff:0.0.0.0

# IPv6 연결 확인
curl -6 https://ipv6.google.com

네트워크 디버깅 커맨드

# IP 주소 확인
ip addr show           # Linux
ifconfig               # macOS / 구형

# 라우팅 테이블
ip route show
route -n               # 구형

# ICMP ping (L3 연결성)
ping 1.1.1.1
ping6 2606:4700:4700::1111   # IPv6

# 경로 추적 (TTL 활용)
traceroute 1.1.1.1

함정

WARNING

  1. /24 = 256개 호스트? 네트워크 주소와 브로드캐스트 주소를 빼면 254개.
  2. Private IP = 보안? NAT 뒤라도 내부 네트워크에서는 직접 접근 가능. 방화벽 별도 필수.
  3. IPv6 에는 NAT 불필요 = 모든 디바이스가 공인 IP. 기존 NAT 기반 보안 정책을 IPv6 에 그대로 적용하면 외부 노출 위험.
  4. /32 는 단일 호스트, /0 은 모든 IP. 라우팅 테이블이나 ACL 작성 시 혼동 주의.
  5. 172.16.0.0/12 = 172.16.0.0 ~ 172.31.255.255. 12bit prefix 라 172.16~172.31 범위. 직관적이지 않으므로 주의.

참고

관련 위키

이 글의 용어 (7개)
[Network] CIDR와 Subnettingnetwork
정의 CIDR (Classless Inter-Domain Routing) 은 IPv4 / IPv6 주소를 prefix length 로 표기하는 표준. 1993년 등장 (RFC 1…
[Network] DNS: 도메인 이름 해석network
정의 DNS (Domain Name System) 는 도메인 이름 ( ) 을 IP 주소 ( ) 로 변환하는 분산 데이터베이스. 인터넷의 가장 중요한 인프라. 기본 동작: 1. 클…
[Network] NAT: Network Address Translationnetwork
정의 NAT (Network Address Translation) 는 IP 패킷의 헤더에서 소스 또는 목적지 IP 주소(포트 포함)를 변환하는 기법이다. 주로 사설 IP와 공인 …
[Network] OSI 7 Layer: 각 계층의 의미와 실전 매핑network
정의 OSI 7 Layer 모델 은 네트워크 통신을 7 계층으로 추상화 한 ITU-T 표준 (1984). 실제 인터넷은 TCP/IP 4-5 계층 이지만, OSI 의 개념적 분리 …
Stateful vs Stateless Firewallnetwork
정의 방화벽 (Firewall) 은 네트워크 트래픽을 정책에 따라 허용/차단 하는 보안 장치. 상태 관리 방식으로 두 유형이 있습니다. - Stateless (상태 비저장): 각…
TCPnetwork
정의 TCP (Transmission Control Protocol) 는 신뢰성 있는 연결 지향 전송 계층 프로토콜이다. RFC 9293 으로 정의되어 있다. HTTP/1.1·2…
UDPnetwork
정의 UDP (User Datagram Protocol)는 비연결·비신뢰 전송 계층 프로토콜이다. RFC 768 (1980) 로 정의되었다. TCP 와 대비된다. "보내고 잊는다…

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기