네트워크의 규칙 - 프로토콜
네트워크의 규칙 - 프로토콜
1. 프로토콜 (Protocol) 이란?
정의
- 통신을 위한 규칙이나 약속
- 서로 다른 시스템 간에 데이터를 주고받기 위해 미리 정해놓은 규약
- 인간의 언어와 같은 역할 (같은 언어를 사용해야 소통 가능)
일상생활의 프로토콜 비유
전화 통화 프로토콜:
1. 발신자: 전화 걸기 (연결 요청)
2. 수신자: "여보세요?" (연결 수락)
3. 발신자: "안녕하세요, 저는 OOO입니다" (신원 확인)
4. 대화 진행 (데이터 전송)
5. "그럼 끊을게요" - "네, 안녕히 계세요" (연결 종료)
네트워크 통신도 이와 같은 정해진 절차를 따름프로토콜이 정의하는 것
| 요소 | 설명 | 예시 |
|---|---|---|
| 구문 (Syntax) | 데이터 형식, 구조 | 헤더 형식, 필드 순서 |
| 의미 (Semantics) | 각 부분의 의미 | 오류 처리, 제어 정보 |
| 타이밍 (Timing) | 전송 속도, 순서 | 언제 데이터를 보낼지 |
2. 프로토콜의 필요성
왜 프로토콜이 필요한가?
프로토콜이 없다면:
컴퓨터 A 컴퓨터 B
[데이터: 10101100...] ──────────→ [???]
"이게 뭐지?"
"어디서부터 어디까지가 데이터?"
"어떤 형식?"
프로토콜이 있다면:
컴퓨터 A 컴퓨터 B
[HTTP 요청] ──────────→ [HTTP 응답]
"GET /index.html" "200 OK, 여기 데이터야"프로토콜이 해결하는 문제
- 호환성: 서로 다른 제조사의 장비 간 통신 가능
- 신뢰성: 데이터가 손상/유실되었는지 확인
- 순서 보장: 데이터가 올바른 순서로 도착
- 오류 처리: 문제 발생 시 복구 방법 정의
- 흐름 제어: 송수신 속도 조절
3. 프로토콜의 표준화
표준화 기관
| 기관 | 정식명칭 | 역할 |
|---|---|---|
| IETF | Internet Engineering Task Force | 인터넷 표준 (RFC 문서) |
| IEEE | Institute of Electrical and Electronics Engineers | 이더넷, Wi-Fi 표준 |
| ISO | International Organization for Standardization | OSI 모델 정의 |
| ITU | International Telecommunication Union | 통신 표준 |
| W3C | World Wide Web Consortium | 웹 표준 (HTML, CSS) |
RFC (Request for Comments)
- 인터넷 표준 문서
- IETF에서 발행
- 프로토콜 사양을 상세히 기술
주요 RFC 문서:
RFC 791 - IP (Internet Protocol)
RFC 793 - TCP (Transmission Control Protocol)
RFC 768 - UDP (User Datagram Protocol)
RFC 2616 - HTTP/1.1
RFC 7540 - HTTP/2
RFC 5321 - SMTP (메일 전송)
RFC 1035 - DNS4. 주요 네트워크 프로토콜
계층별 프로토콜 분류
┌─────────────────────────────────────────────────────────────┐
│ 응용 계층 (Application Layer) │
│ HTTP, HTTPS, FTP, SMTP, POP3, IMAP, DNS, SSH, Telnet │
├─────────────────────────────────────────────────────────────┤
│ 전송 계층 (Transport Layer) │
│ TCP, UDP │
├─────────────────────────────────────────────────────────────┤
│ 네트워크 계층 (Network Layer) │
│ IP, ICMP, ARP, RARP │
├─────────────────────────────────────────────────────────────┤
│ 데이터 링크 계층 (Data Link Layer) │
│ Ethernet, Wi-Fi (802.11), PPP │
├─────────────────────────────────────────────────────────────┤
│ 물리 계층 (Physical Layer) │
│ 전기 신호, 광신호, 케이블 규격 │
└─────────────────────────────────────────────────────────────┘응용 계층 프로토콜
HTTP (HyperText Transfer Protocol)
- 용도: 웹 페이지 전송
- 포트: 80 (HTTP), 443 (HTTPS)
- 특징: 요청-응답 방식, 무상태(Stateless)
HTTP 요청 예시:
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
HTTP 응답 예시:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
<html>...</html>FTP (File Transfer Protocol)
- 용도: 파일 전송
- 포트: 20 (데이터), 21 (제어)
- 특징: 인증 기반, 대용량 파일 전송
SMTP/POP3/IMAP (메일 프로토콜)
| 프로토콜 | 용도 | 포트 |
|---|---|---|
| SMTP | 메일 발송 | 25, 587 |
| POP3 | 메일 수신 (다운로드) | 110 |
| IMAP | 메일 수신 (동기화) | 143 |
DNS (Domain Name System)
- 용도: 도메인 이름 → IP 주소 변환
- 포트: 53
- 특징: 분산 데이터베이스 구조
DNS 조회 과정:
www.google.com → DNS 서버 → 142.250.196.100전송 계층 프로토콜
TCP (Transmission Control Protocol)
- 특징: 연결 지향, 신뢰성 보장
- 용도: 웹, 이메일, 파일 전송 등 신뢰성이 중요한 통신
TCP 3-Way Handshake (연결 수립):
클라이언트 서버
│ │
│ ─── SYN ───────────────→ │ 1. 연결 요청
│ │
│ ←── SYN + ACK ────────── │ 2. 요청 수락 + 확인
│ │
│ ─── ACK ───────────────→ │ 3. 확인
│ │
│ [연결 수립 완료] │UDP (User Datagram Protocol)
- 특징: 비연결형, 신뢰성 없음, 빠름
- 용도: 실시간 스트리밍, 게임, DNS 조회
TCP vs UDP 비교:
TCP (택배): UDP (방송):
┌─────────────────┐ ┌─────────────────┐
│ 수신 확인 있음 │ │ 수신 확인 없음 │
│ 순서 보장 │ │ 순서 보장 안됨 │
│ 재전송 있음 │ │ 재전송 없음 │
│ 느림 │ │ 빠름 │
│ │ │ │
│ 웹, 이메일, FTP │ │ 스트리밍, 게임 │
└─────────────────┘ └─────────────────┘네트워크 계층 프로토콜
IP (Internet Protocol)
- 역할: 패킷을 목적지까지 전달
- 버전: IPv4 (32비트), IPv6 (128비트)
IPv4 헤더 구조 (간략화):
┌────────┬────────┬────────────────────────┐
│ 버전 │ 헤더길이│ 서비스 타입 │
├────────┴────────┴────────────────────────┤
│ 전체 길이 │
├──────────────────────────────────────────┤
│ 식별자 │ 플래그 │ 프래그먼트 오프셋 │
├──────────────────────────────────────────┤
│ TTL │ 프로토콜 │ 헤더 체크섬 │
├──────────────────────────────────────────┤
│ 출발지 IP 주소 │
├──────────────────────────────────────────┤
│ 목적지 IP 주소 │
└──────────────────────────────────────────┘ICMP (Internet Control Message Protocol)
- 역할: 네트워크 상태 진단, 오류 보고
- 용도: ping, traceroute 명령
# ping 명령 (ICMP Echo Request/Reply)
> ping google.com
Reply from 142.250.196.100: bytes=32 time=10ms TTL=117ARP (Address Resolution Protocol)
- 역할: IP 주소 → MAC 주소 변환
- 동작: 같은 네트워크 내에서 동작
ARP 동작 과정:
1. "192.168.0.5의 MAC 주소가 뭐야?" (브로드캐스트)
2. 192.168.0.5: "내 MAC은 AA:BB:CC:DD:EE:FF야" (유니캐스트)데이터 링크 계층 프로토콜
Ethernet (이더넷)
- 역할: 유선 LAN 통신 규격
- 표준: IEEE 802.3
- 속도: 10Mbps ~ 400Gbps
Wi-Fi (무선 LAN)
- 역할: 무선 LAN 통신 규격
- 표준: IEEE 802.11
5. 프로토콜 스택 (Protocol Stack)
개념
- 여러 프로토콜이 계층적으로 쌓여있는 구조
- 각 계층이 협력하여 통신 수행
웹 페이지 요청 시 프로토콜 동작
웹 브라우저에서 www.example.com 접속 시:
┌─────────────────────────────────────────────────────────────┐
│ 1. [DNS] www.example.com → 93.184.216.34 (IP 주소 조회) │
├─────────────────────────────────────────────────────────────┤
│ 2. [TCP] 3-Way Handshake로 연결 수립 │
├─────────────────────────────────────────────────────────────┤
│ 3. [HTTP] GET /index.html 요청 전송 │
├─────────────────────────────────────────────────────────────┤
│ 4. [IP] 패킷에 출발지/목적지 IP 주소 추가 │
├─────────────────────────────────────────────────────────────┤
│ 5. [Ethernet] 프레임에 MAC 주소 추가, 물리적 전송 │
└─────────────────────────────────────────────────────────────┘데이터 캡슐화 과정
데이터가 네트워크를 통해 전송될 때:
응용 계층 [ 데이터 ]
전송 계층 [TCP 헤더][ 데이터 ] ← 세그먼트
네트워크 계층 [IP 헤더][TCP][ 데이터 ] ← 패킷
데이터링크 [ETH 헤더][IP][TCP][데이터][ETH 트레일러] ← 프레임
물리 계층 101010101010101010101010... ← 비트6. 프로토콜 분석 도구
Wireshark
- 네트워크 패킷 캡처 및 분석 도구
- 모든 계층의 프로토콜 확인 가능
Wireshark로 HTTP 요청 분석 예시:
Frame 1: 74 bytes on wire
Ethernet II, Src: aa:bb:cc:dd:ee:ff, Dst: 11:22:33:44:55:66
Internet Protocol Version 4, Src: 192.168.0.10, Dst: 93.184.216.34
Transmission Control Protocol, Src Port: 54321, Dst Port: 80
Hypertext Transfer Protocol
GET /index.html HTTP/1.1
Host: www.example.com명령줄 도구
# 네트워크 연결 상태 확인
netstat -an
# 경로 추적
tracert www.google.com # Windows
traceroute www.google.com # Linux/Mac
# DNS 조회
nslookup www.google.com
# 연결 테스트
ping www.google.com
# ARP 테이블 확인
arp -a7. 프로토콜 번호와 포트 번호
IP 프로토콜 번호
| 번호 | 프로토콜 |
|---|---|
| 1 | ICMP |
| 6 | TCP |
| 17 | UDP |
| 50 | ESP (IPsec) |
| 51 | AH (IPsec) |
잘 알려진 포트 (Well-Known Ports: 0-1023)
| 포트 | 프로토콜 | 용도 |
|---|---|---|
| 20, 21 | FTP | 파일 전송 |
| 22 | SSH | 보안 원격 접속 |
| 23 | Telnet | 원격 접속 (비암호화) |
| 25 | SMTP | 메일 발송 |
| 53 | DNS | 도메인 이름 해석 |
| 80 | HTTP | 웹 |
| 110 | POP3 | 메일 수신 |
| 143 | IMAP | 메일 동기화 |
| 443 | HTTPS | 보안 웹 |
| 3306 | MySQL | 데이터베이스 |
| 3389 | RDP | 원격 데스크톱 |
핵심 정리
| 개념 | 설명 |
|---|---|
| 프로토콜 | 통신을 위한 규칙이나 약속 |
| 구문/의미/타이밍 | 프로토콜이 정의하는 세 가지 요소 |
| RFC | 인터넷 표준 문서 (IETF 발행) |
| TCP | 연결 지향, 신뢰성 보장 프로토콜 |
| UDP | 비연결형, 빠른 전송 프로토콜 |
| IP | 패킷을 목적지까지 전달하는 프로토콜 |
| HTTP | 웹 페이지 전송 프로토콜 |
| 프로토콜 스택 | 계층적으로 쌓인 프로토콜 구조 |
프로토콜의 핵심
프로토콜은 서로 다른 시스템이 통신하기 위한 “공통 언어"다. 마치 한국인과 미국인이 영어로 소통하듯, 서로 다른 제조사의 컴퓨터도 같은 프로토콜을 사용하면 통신할 수 있다. TCP/IP 프로토콜 스택이 인터넷의 공통 언어 역할을 한다.