C
네트워크/기초/Lesson 02

네트워크 기초 — IP·DNS·포트·OSI·라우터·NAT

45분·theory

네트워크 기초 — IP·DNS·포트·OSI·라우터·NAT

🎯 이 lesson 을 읽고 나면

이 lesson 을 다 읽고 나면 아래 3가지를 자신 있게 할 수 있습니다.

  • ✅ OSI 7계층 vs TCP/IP 4계층 매핑
  • ✅ IP · Port · Socket 의 정확한 개념
  • ✅ DNS 동작 (Recursive → Root → TLD → 권한)

학습 목표를 체크리스트로 두고 다 답할 수 있게 되면 lesson 을 닫으세요.

네트워크 = 컴퓨터끼리 편지 배달

한 줄: 네트워크 = 전 세계 컴퓨터의 우편 시스템. IP(주소) + DNS(이름) + Port(방번호) + TCP/UDP(전달방식).

4 핵심 요소:

요소비유의미
IP 주소집 주소컴퓨터 식별 (192.168.1.10·2001:db8::1)
DNS전화번호부이름 → IP (codemaster40.com → 1.2.3.4)
Port방 번호어떤 앱? (80=HTTP·443=HTTPS·22=SSH)
TCP/UDP등기·일반우편전달 방식 (보장 vs 빠름)

URL 한 줄의 해부:

code
https://api.codemaster40.com:443/users/42?ref=home
└─ ─┘   └────────────────┬─────────┘ └┬┘ └──┬───┘ └──┬──┘
  │              호스트              포트  경로     쿼리
  └─ 프로토콜 (TCP+TLS=HTTPS)

한 요청이 거치는 길:
1. DNS 조회: codemaster40.com → IP 1.2.3.4
2. TCP 3-way handshake 로 연결
3. TLS 핸드셰이크로 암호화
4. HTTP 요청·응답
5. TCP 4-way handshake 로 종료

IP 주소 + CIDR + NAT

IPv4 (32-bit) — 약 43억 개. 부족!

  • 예: 192.168.1.10 = 4 옥텟 × 8bit
  • 클래스 A·B·C — 옛 방식 (이제 안 씀)
  • CIDR 로 대체

CIDR (Classless Inter-Domain Routing):

code
192.168.1.0/24      → 192.168.1.0 ~ 192.168.1.255 (256 IP)
192.168.0.0/16      → 192.168.0.0 ~ 192.168.255.255 (65,536)
10.0.0.0/8          → 10.0.0.0 ~ 10.255.255.255 (16,777,216)
  • /24 = 앞 24bit 가 네트워크 ID, 나머지 8bit 가 호스트
  • AWS VPC·K8s pod CIDR 등 인프라 기본

Private IP 대역 (인터넷 못 보냄, 사설망용):

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

NAT (Network Address Translation) — IPv4 부족 해결:

  • 사설망의 여러 기기가 공인 IP 1개 공유
  • 라우터(공유기)가 패킷 송신 시 port mapping 기록
  • 응답 패킷이 오면 port → 원래 기기로 전달
code
[내 PC 192.168.1.10:55012] → [공유기 1.2.3.4:55012] → 외부 서버
                                        ↓ NAT 테이블 저장
응답: 외부 → 1.2.3.4:55012 → 192.168.1.10:55012

IPv6 (128-bit) — 사실상 무한 (340조의 1조의 1조...).

  • 2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • IoT·5G 시대 표준. 2025 인터넷 트래픽 50%+ IPv6

DNS + 포트 + OSI 7계층

DNS = 이름 → IP 변환 시스템 (전세계 분산 DB):

조회 흐름:
1. 브라우저 캐시 확인
2. OS 캐시 (/etc/hosts)
3. Local DNS 서버 (ISP·Google 8.8.8.8·Cloudflare 1.1.1.1)
4. Root (.) → .com 어디? → TLD 서버 알려줌
5. TLD (.com)codemaster40.com 어디? → Authoritative 알려줌
6. Authoritative → 실제 IP 반환
7. 결과 캐싱 (TTL 만큼)

DNS 레코드 종류:

  • A — IPv4 매핑 (example.com → 1.2.3.4)
  • AAAA — IPv6
  • CNAME — 다른 이름 alias (www → example.com)
  • MX — 메일 서버
  • TXT — 텍스트 (SPF·DKIM 등 인증)
  • NS — 네임서버

포트 (Port) — 0~65535 (16-bit):

  • Well-known (0-1023): 22 (SSH)·25 (SMTP)·53 (DNS)·80 (HTTP)·443 (HTTPS)
  • Registered (1024-49151): 3000 (Node)·8080 (대안 HTTP)·5432 (Postgres)
  • Dynamic (49152-65535): OS 가 임시 할당

OSI 7계층 — 통신을 7개 추상화 층으로 나눔:

계층이름역할
7응용사용자 인터페이스HTTP·SMTP·DNS
6표현인코딩·암호화TLS·JSON·UTF-8
5세션연결 관리(현대 거의 통합)
4전송종단간 신뢰성TCP·UDP
3네트워크라우팅IP
2데이터링크같은 망 내 전달Ethernet·Wi-Fi
1물리신호케이블·전파

실용 모델 (TCP/IP 4계층):

  • Application = OSI 5+6+7
  • Transport = 4
  • Internet = 3
  • Network Access = 1+2

> 💡 외울 필요 X. "어느 계층 문제냐?" 질문할 때 사용.

DNS 동작 — Recursive → Root → TLD → 권한

example.com 을 입력하면 무슨 일이 일어나나

0. 브라우저 캐시 → OS 캐시 → 라우터 캐시

가장 먼저 본인 컴퓨터의 캐시 확인. 있으면 즉시 IP 반환. 없으면 다음 단계.

1. Recursive DNS (ISP 또는 8.8.8.8)

사용자가 직접 묻는 첫 서버. ISP 가 운영하거나 Google 8.8.8.8 / Cloudflare 1.1.1.1.

code
[내 컴퓨터] → "example.com 의 IP?" → [Recursive DNS]

Recursive 서버가 나머지 단계를 대신 처리.

2. Root DNS 서버

전 세계 13개 IP 그룹. ".com TLD 서버가 어디 있는지" 알려줌.

code
[Recursive] → "com 의 권위 서버?" → [Root]
[Root] → "com 은 a.gtld-servers.net 등이 담당"

3. TLD (Top-Level Domain) 서버

.com / .net / .kr 등 도메인 확장자별. "example.com 의 권위 서버" 가 누구인지 알려줌.

code
[Recursive] → "example.com 의 권위 서버?" → [.com TLD]
[.com TLD] → "ns1.example.com / ns2.example.com"

4. Authoritative (권위) 서버

도메인 소유자가 운영하는 실제 DNS 서버. "example.com 의 IP" 를 실제로 알고 있음.

code
[Recursive] → "example.com 의 IP?" → [ns1.example.com]
[권위 서버] → "93.184.216.34"

5. 캐시 후 반환

Recursive 가 결과를 캐시 (TTL 만큼). 다음 요청은 바로 응답. 그래서 DNS 변경이 전 세계 반영에 시간 걸립니다 (TTL 만료까지).

DNS 레코드 5종

타입의미
AIPv4 주소
AAAAIPv6 주소
CNAME다른 도메인의 별칭
MX메일 서버
TXT텍스트 (SPF·도메인 소유 인증)
code
# example.com 의 레코드
A       93.184.216.34
AAAA    2606:2800:220:1:248:1893:25c8:1946
CNAME   www → example.com
MX      10 mail.example.com
TXT     "v=spf1 include:_spf.google.com ~all"

TTL — 얼마나 캐시할까

code
example.com.    300    IN    A    93.184.216.34
                ^^^
                TTL 초
  • 짧은 TTL (60~300초): 변경이 빠르게 반영. 부하 ↑
  • 긴 TTL (24시간): 캐시 효율 ↑. 변경 반영 느림

마이그레이션 전엔 TTL 짧게 (5분), 안정화 후 길게 (1시간).

DNS 확인 명령어

bash
# Mac/Linux
dig example.com A
dig example.com NS
dig +trace example.com    # 전체 위임 체인 추적

nslookup example.com 8.8.8.8

# Windows
nslookup example.com

DNS 와 CDN

Cloudflare 같은 CDN 사용 시:

code
example.com → CNAME → example.com.cdn.cloudflare.net → 가장 가까운 엣지 IP

지역별로 다른 IP 반환 → 사용자가 가까운 서버 사용 → 지연 감소.

🤖 AI 에게 이렇게 요청해보세요

  • "내 도메인을 Cloudflare 로 옮기는 DNS 설정 가이드 알려줘"
  • "dig example.com A 결과를 해석해줘"
  • "DNS TTL 을 마이그레이션 전엔 60초로, 끝나면 3600 으로 바꾸는 시점 알려줘"
네트워크 기초 — IP·DNS·포트·OSI - 네트워크