10. IP 주소 (IPv4 / IPv6 & 서브넷)

📌 IP 주소 개념

Internet Protocol Address
- 네트워크에서 장치를 식별하는 고유 주소
- 데이터를 올바른 목적지로 전달

🔵 IPv4 (Internet Protocol version 4)

구조

32비트 주소 체계
- 4개 옥텟 (8비트씩)
- 점(.)으로 구분
- 0~255 범위

예:
192.168.1.1

2진수:
11000000.10101000.00000001.00000001

총 개수:
2^32 = 약 43억 개

IPv4 클래스

Class A:
0.0.0.0 ~ 127.255.255.255
첫 비트: 0
네트워크: 8비트
호스트: 24비트
용도: 대규모 네트워크

Class B:
128.0.0.0 ~ 191.255.255.255
첫 2비트: 10
네트워크: 16비트
호스트: 16비트
용도: 중규모 네트워크

Class C:
192.0.0.0 ~ 223.255.255.255
첫 3비트: 110
네트워크: 24비트
호스트: 8비트
용도: 소규모 네트워크

Class D:
224.0.0.0 ~ 239.255.255.255
멀티캐스트용

Class E:
240.0.0.0 ~ 255.255.255.255
예약됨 (실험용)

특수 IP 주소

사설 IP (Private IP):
- Class A: 10.0.0.0 ~ 10.255.255.255
- Class B: 172.16.0.0 ~ 172.31.255.255
- Class C: 192.168.0.0 ~ 192.168.255.255
용도: 내부 네트워크

공인 IP (Public IP):
- 인터넷에서 사용
- 전 세계적으로 유일
- ISP가 할당

Loopback:
- 127.0.0.1 (localhost)
- 자기 자신을 가리킴
- 테스트용

Broadcast:
- 255.255.255.255
- 네트워크 내 모든 장치

예약 IP:
- 0.0.0.0: 모든 네트워크
- 169.254.0.0/16: APIPA (자동 할당 실패 시)

🌐 서브넷 (Subnet)

개념

큰 네트워크를 작은 네트워크로 분할
- 효율적인 IP 관리
- 보안 향상
- 브로드캐스트 도메인 분리

서브넷 마스크 (Subnet Mask)

네트워크 부분과 호스트 부분을 구분

예: 255.255.255.0

2진수:
11111111.11111111.11111111.00000000
└─────────────┬───────────┘└───┬───┘
        네트워크 부분      호스트 부분

1: 네트워크 비트
0: 호스트 비트

CIDR 표기법

Classless Inter-Domain Routing

192.168.1.0/24
            └─ 네트워크 비트 수

/24 = 255.255.255.0
/16 = 255.255.0.0
/8 = 255.0.0.0

계산:
/24 → 24비트 네트워크, 8비트 호스트
호스트 수 = 2^8 - 2 = 254개
(-2는 네트워크 주소와 브로드캐스트 주소)

서브넷 계산 예시

네트워크: 192.168.1.0/24

네트워크 주소: 192.168.1.0
첫 호스트: 192.168.1.1
마지막 호스트: 192.168.1.254
브로드캐스트: 192.168.1.255
사용 가능 호스트: 254개

서브네팅 예시

원본: 192.168.1.0/24 (254 호스트)

2개로 분할 (/25):
- 192.168.1.0/25 (126 호스트)
  범위: 192.168.1.1 ~ 192.168.1.126
- 192.168.1.128/25 (126 호스트)
  범위: 192.168.1.129 ~ 192.168.1.254

4개로 분할 (/26):
- 192.168.1.0/26 (62 호스트)
- 192.168.1.64/26 (62 호스트)
- 192.168.1.128/26 (62 호스트)
- 192.168.1.192/26 (62 호스트)

서브넷 마스크 표

CIDR | 서브넷 마스크      | 호스트 수
-----|-------------------|----------
/8   | 255.0.0.0         | 16,777,214
/16  | 255.255.0.0       | 65,534
/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   | 0 (P2P 전용)
/32  | 255.255.255.255   | 1 (단일 호스트)

🔷 IPv6 (Internet Protocol version 6)

등장 배경

IPv4 고갈 문제:
- 43억 개 주소 부족
- IoT 기기 증가
- 모바일 기기 증가

해결:
- IPv6 도입 (340간 개 주소)
- 2^128 = 약 340,282,366,920,938,463,463,374,607,431,768,211,456개

구조

128비트 주소 체계
- 8개 그룹 (16비트씩)
- 콜론(:)으로 구분
- 16진수 표기

예:
2001:0db8:85a3:0000:0000:8a2e:0370:7334

IPv6 표기 규칙

1. 앞의 0 생략:
2001:0db8:0000:0042:0000:8a2e:0370:7334
↓
2001:db8:0:42:0:8a2e:370:7334

2. 연속된 0 생략 (::):
2001:0db8:0000:0000:0000:0000:0000:0001
↓
2001:db8::1

주의: ::는 한 번만 사용 가능

잘못된 예:
2001::85a3::7334 ✘

올바른 예:
2001:0:0:0:85a3:0:0:7334
↓
2001::85a3:0:0:7334
또는
2001:0:0:0:85a3::7334

특수 IPv6 주소

Loopback:
::1 (IPv4의 127.0.0.1)

Unspecified:
:: (모든 비트가 0)

Link-Local:
fe80::/10
자동 구성, 로컬 네트워크에서만

Unique Local:
fc00::/7 ~ fdff::/7
사설 IP (IPv4의 192.168.x.x)

Multicast:
ff00::/8
그룹 통신

Global Unicast:
2000::/3
인터넷 라우팅 가능

IPv6 vs IPv4 비교

| 항목 | IPv4 | IPv6 |
|------|------|------|
| 주소 길이 | 32비트 | 128비트 |
| 표기 | 10진수 | 16진수 |
| 주소 개수 | 43억 | 340간 |
| 헤더 크기 | 20~60바이트 | 40바이트(고정) |
| Checksum | 있음 | 없음 |
| Broadcast | 있음 | 없음(Multicast) |
| NAT | 필요 | 불필요 |
| 보안 | 선택 | 필수(IPSec) |
| 자동 구성 | DHCP | SLAAC + DHCPv6 |

🔀 NAT (Network Address Translation)

개념

사설 IP ↔ 공인 IP 변환
- IPv4 주소 부족 해결
- 보안 (내부 IP 숨김)

동작 과정

내부 네트워크 (사설 IP)
[PC1: 192.168.1.10]
[PC2: 192.168.1.20]
[PC3: 192.168.1.30]
        ↓
    [NAT Router]
    공인 IP: 203.0.113.5
        ↓
    인터넷

1. PC1 → 인터넷 (192.168.1.10 → 203.0.113.5)
2. 인터넷 → PC1 (203.0.113.5 → 192.168.1.10)

외부에서는 203.0.113.5만 보임 ✔

NAT 종류

1. Static NAT (1:1):
   사설 IP 1개 ↔ 공인 IP 1개
   192.168.1.10 ↔ 203.0.113.10

2. Dynamic NAT:
   사설 IP 여러 개 ↔ 공인 IP 풀

3. PAT (Port Address Translation) / NAPT:
   사설 IP 여러 개 ↔ 공인 IP 1개 + Port
   
   예:
   192.168.1.10:50000 ↔ 203.0.113.5:50000
   192.168.1.20:50001 ↔ 203.0.113.5:50001
   192.168.1.30:50002 ↔ 203.0.113.5:50002
   
   가장 많이 사용 (가정, 회사) ✔

NAT 테이블

NAT 라우터가 변환 정보 저장

내부 IP:Port | 외부 IP:Port | 목적지
-------------|--------------|--------
192.168.1.10:50000 | 203.0.113.5:50000 | 8.8.8.8:80
192.168.1.20:50001 | 203.0.113.5:50001 | 1.1.1.1:443
192.168.1.30:50002 | 203.0.113.5:50002 | 8.8.8.8:80

패킷 변환:
출발: 192.168.1.10:50000 → 8.8.8.8:80
NAT 후: 203.0.113.5:50000 → 8.8.8.8:80

응답: 8.8.8.8:80 → 203.0.113.5:50000
NAT 후: 8.8.8.8:80 → 192.168.1.10:50000

NAT 장단점

장점:
✔ IPv4 주소 절약
✔ 보안 (내부 IP 숨김)
✔ 내부 네트워크 유연성

단점:
✘ P2P 통신 어려움
✘ 일부 프로토콜 문제 (FTP, SIP)
✘ End-to-End 연결 불가
✘ 성능 오버헤드

NAT Traversal

NAT 뒤의 장치가 외부와 통신하는 기술

1. Port Forwarding:
   외부 Port → 내부 IP:Port 매핑
   예: 203.0.113.5:8080 → 192.168.1.10:80

2. UPnP (Universal Plug and Play):
   자동으로 포트 포워딩 설정

3. STUN (Session Traversal Utilities for NAT):
   자신의 공인 IP:Port 확인

4. TURN (Traversal Using Relays around NAT):
   중계 서버 사용

5. ICE (Interactive Connectivity Establishment):
   STUN + TURN 조합
   WebRTC에서 사용

🌐 서브넷 실전 활용

예제 1: 기업 네트워크 설계

회사 IP: 192.168.0.0/24
부서: 영업, 개발, 인사, 관리

요구사항:
- 영업: 50대
- 개발: 100대
- 인사: 20대
- 관리: 10대

설계:
1. 개발팀 (100대 필요 → /25, 126개)
   192.168.0.0/25
   범위: 192.168.0.1 ~ 192.168.0.126

2. 영업팀 (50대 필요 → /26, 62개)
   192.168.0.128/26
   범위: 192.168.0.129 ~ 192.168.0.190

3. 인사팀 (20대 필요 → /27, 30개)
   192.168.0.192/27
   범위: 192.168.0.193 ~ 192.168.0.222

4. 관리팀 (10대 필요 → /28, 14개)
   192.168.0.224/28
   범위: 192.168.0.225 ~ 192.168.0.238

예제 2: 서브넷 계산

문제:
192.168.10.0/24를 4개의 동일한 서브넷으로 분할

풀이:
1. 원래 호스트 비트: 8비트 (24비트 네트워크)
2. 4개 분할: 2^2 = 4 → 2비트 추가
3. 새로운 서브넷: /26 (24 + 2)
4. 각 서브넷 호스트: 2^6 - 2 = 62개

서브넷:
1) 192.168.10.0/26
   네트워크: 192.168.10.0
   범위: 192.168.10.1 ~ 192.168.10.62
   브로드캐스트: 192.168.10.63

2) 192.168.10.64/26
   네트워크: 192.168.10.64
   범위: 192.168.10.65 ~ 192.168.10.126
   브로드캐스트: 192.168.10.127

3) 192.168.10.128/26
   네트워크: 192.168.10.128
   범위: 192.168.10.129 ~ 192.168.10.190
   브로드캐스트: 192.168.10.191

4) 192.168.10.192/26
   네트워크: 192.168.10.192
   범위: 192.168.10.193 ~ 192.168.10.254
   브로드캐스트: 192.168.10.255

예제 3: CIDR 병합

여러 네트워크를 하나로 합치기

네트워크:
192.168.0.0/24
192.168.1.0/24
192.168.2.0/24
192.168.3.0/24

병합:
192.168.0.0/22

계산:
/24 = 256 호스트
4개 = 1024 호스트
2^10 = 1024 → 10비트 호스트
32 - 10 = 22비트 네트워크

범위:
192.168.0.0 ~ 192.168.3.255

📊 IP 주소 할당 방법

1. 정적 할당 (Static IP)

수동으로 IP 주소 설정

설정 예:
IP 주소: 192.168.1.100
서브넷 마스크: 255.255.255.0
게이트웨이: 192.168.1.1
DNS: 8.8.8.8

장점:
✔ IP 주소 고정
✔ 원격 접속 용이
✔ 서버에 적합

단점:
✘ 수동 설정 필요
✘ 관리 어려움
✘ IP 충돌 위험

사용:
- 서버
- 프린터
- 네트워크 장비

2. 동적 할당 (DHCP)

Dynamic Host Configuration Protocol
자동으로 IP 주소 할당

동작 과정:
1. DHCP Discover (브로드캐스트)
   Client: "IP 주소 필요해요!"
   
2. DHCP Offer
   Server: "192.168.1.100 어때요?"
   
3. DHCP Request
   Client: "192.168.1.100 주세요!"
   
4. DHCP Ack
   Server: "192.168.1.100 드립니다!"
   
클라이언트가 IP 주소 사용 ✔

임대 시간 (Lease Time):
- 기본: 24시간
- 갱신: 임대 시간의 50%에 갱신 시도
- 만료: 재할당 필요

장점:
✔ 자동 할당
✔ 관리 용이
✔ IP 효율적 사용

단점:
✘ IP 주소 변경 가능
✘ DHCP 서버 필요

사용:
- 일반 PC
- 모바일 기기
- 노트북

🔍 IP 주소 확인 및 진단

명령어

# Windows
ipconfig
ipconfig /all         # 상세 정보
ipconfig /release     # IP 해제
ipconfig /renew       # IP 갱신

# Linux / macOS
ifconfig
ip addr show          # IP 주소 확인
ip route show         # 라우팅 테이블

# 공인 IP 확인
curl ifconfig.me
curl icanhazip.com

네트워크 진단

# Ping (연결 테스트)
ping 8.8.8.8
ping google.com

# Traceroute (경로 추적)
tracert google.com    # Windows
traceroute google.com # Linux/macOS

# DNS 조회
nslookup google.com
dig google.com

# 포트 확인
netstat -an           # 모든 연결
telnet google.com 80  # 포트 테스트

🔐 IP 주소 보안

사설 IP 사용

내부 네트워크에 사설 IP 사용

이점:
✔ 외부에서 직접 접근 불가
✔ 보안 향상
✔ IP 주소 절약

권장:
- 내부: 192.168.x.x
- DMZ: 별도 서브넷
- 외부: 방화벽으로 보호

IP Spoofing 방지

IP 주소 위조 공격 방지

대책:
1. Ingress Filtering:
   외부에서 내부 IP로 들어오는 패킷 차단

2. Egress Filtering:
   내부에서 잘못된 출발지 IP 차단

3. Anti-Spoofing 규칙:
   방화벽에서 검증

💬 면접 답변 예시

IPv4 vs IPv6

짧은 답변:

IPv4:
- 32비트 (43억 개)
- 192.168.1.1
- 주소 고갈

IPv6:
- 128비트 (340간 개)
- 2001:db8::1
- 주소 풍부, 보안 강화

IPv4 고갈로 IPv6 전환 중
현재는 듀얼 스택으로 공존

상세 답변:

IPv4 (Internet Protocol version 4):

구조:
- 32비트 주소 체계
- 4개 옥텟 (8비트씩)
- 점(.)으로 구분
- 예: 192.168.1.1

주소 개수:
- 2^32 = 약 43억 개
- 이미 고갈됨

클래스:
- Class A, B, C (네트워크 크기별)
- 사설 IP: 192.168.x.x, 10.x.x.x
- 공인 IP: 전 세계적으로 유일

문제점:
- 주소 고갈
- NAT 필요
- 헤더 복잡
- 보안 선택사항

IPv6 (Internet Protocol version 6):

구조:
- 128비트 주소 체계
- 8개 그룹 (16비트씩)
- 콜론(:)으로 구분
- 예: 2001:0db8::1

주소 개수:
- 2^128 = 약 340간 개
- 사실상 무한대

특징:
- 주소 풍부
- NAT 불필요
- 헤더 단순화 (40바이트 고정)
- IPSec 필수 (보안 강화)
- 자동 구성 (SLAAC)
- Broadcast 없음 (Multicast만)

표기 간소화:
- 앞의 0 생략: 0db8 → db8
- 연속된 0 생략: 0000:0000 → ::

전환:
- 듀얼 스택: IPv4 + IPv6 동시
- 터널링: IPv6를 IPv4로 캡슐화
- NAT64: IPv6 ↔ IPv4 변환

현재 상황:
- 전 세계적으로 전환 중
- 대부분 듀얼 스택 지원
- 모바일/IoT는 IPv6 우선

서브넷

짧은 답변:

서브넷은 큰 네트워크를 작은 
네트워크로 분할하는 기술입니다.

서브넷 마스크:
- 네트워크/호스트 부분 구분
- 예: 255.255.255.0 = /24

이점:
- 효율적 IP 관리
- 보안 향상
- 브로드캐스트 도메인 분리

상세 답변:

서브넷 (Subnet):

정의:
하나의 큰 네트워크를 여러 개의
작은 네트워크로 논리적으로 분할

목적:

1. IP 주소 효율적 관리:
   - 필요한 만큼만 할당
   - 낭비 최소화

2. 보안 향상:
   - 부서별 네트워크 분리
   - 접근 제어 용이

3. 성능 개선:
   - 브로드캐스트 도메인 축소
   - 트래픽 격리

4. 관리 편의성:
   - 네트워크 구조화
   - 문제 격리

서브넷 마스크:

역할:
- IP 주소의 네트워크/호스트 부분 구분
- AND 연산으로 네트워크 주소 계산

예:
IP: 192.168.1.100
Mask: 255.255.255.0 (/24)
→ 네트워크: 192.168.1.0
→ 호스트: 100

CIDR 표기:
/24 = 255.255.255.0
/16 = 255.255.0.0
/8 = 255.0.0.0

계산:
/24 → 24비트 네트워크, 8비트 호스트
호스트 수 = 2^8 - 2 = 254개
(-2: 네트워크 주소, 브로드캐스트 주소)

서브네팅 예시:

원본: 192.168.1.0/24

2개로 분할 (/25):
- 192.168.1.0/25 (126 호스트)
- 192.168.1.128/25 (126 호스트)

4개로 분할 (/26):
- 192.168.1.0/26 (62 호스트)
- 192.168.1.64/26
- 192.168.1.128/26
- 192.168.1.192/26

VLSM (Variable Length Subnet Mask):
- 서브넷마다 다른 크기
- 필요에 맞게 최적화
- 예: 영업 /26, 개발 /25, 인사 /27

실무 활용:
- 기업 네트워크 설계
- 데이터센터 구성
- 클라우드 VPC 설계
- 보안 구역 분리 (DMZ 등)

NAT

짧은 답변:

NAT는 사설 IP와 공인 IP를 
변환하는 기술입니다.

동작:
내부 (192.168.1.10)
  ↓ NAT
외부 (203.0.113.5)

이점:
- IPv4 주소 절약
- 보안 (내부 IP 숨김)

단점:
- P2P 통신 어려움

상세 답변:

NAT (Network Address Translation):

정의:
사설 IP 주소와 공인 IP 주소 간 변환
- IP 주소 부족 문제 해결
- 네트워크 보안 강화

배경:
- IPv4 주소 고갈 (43억 개)
- 모든 장치에 공인 IP 불가능
- 사설 IP로 내부 네트워크 구성

동작:

내부 → 외부:
1. PC (192.168.1.10) → 인터넷
2. NAT 라우터가 출발지 IP 변경
3. 192.168.1.10 → 203.0.113.5
4. NAT 테이블에 기록

외부 → 내부:
1. 인터넷 → 203.0.113.5
2. NAT 테이블 조회
3. 203.0.113.5 → 192.168.1.10
4. 내부 PC로 전달

NAT 종류:

1. Static NAT (1:1):
   - 사설 IP 1개 ↔ 공인 IP 1개
   - 서버용

2. Dynamic NAT:
   - 사설 IP 여러 개 ↔ 공인 IP 풀
   - 순차 할당

3. PAT (Port Address Translation):
   - 사설 IP 여러 개 ↔ 공인 IP 1개 + Port
   - 가장 많이 사용 (가정, 회사)
   - 포트 번호로 구분

장점:
✔ IPv4 주소 절약
✔ 보안 강화 (내부 IP 숨김)
✔ 내부 네트워크 유연성

단점:
✘ P2P 통신 어려움
✘ 일부 프로토콜 문제
✘ End-to-End 연결 불가
✘ 성능 오버헤드

NAT Traversal:
- Port Forwarding: 특정 포트 매핑
- UPnP: 자동 설정
- STUN: 공인 IP 확인
- TURN: 중계 서버 사용
- ICE: STUN + TURN

IPv6에서:
- NAT 불필요 (주소 충분)
- End-to-End 연결 복원
- 하지만 전환 중에는 NAT64 사용

📝 핵심 정리

IP 주소 요약

IPv4:
- 32비트, 43억 개
- 192.168.1.1
- 클래스 A, B, C
- 사설 IP + NAT

IPv6:
- 128비트, 340간 개
- 2001:db8::1
- 주소 풍부
- 보안 강화

서브넷:
- 네트워크 분할
- /24 = 254 호스트
- CIDR 표기
- VLSM 활용

NAT:
- 사설 ↔ 공인 변환
- 주소 절약
- 보안 향상
- PAT 가장 많이 사용