네트워크의 규칙 - 프로토콜

네트워크의 규칙 - 프로토콜

네트워크의 규칙 - 프로토콜

1. 프로토콜 (Protocol) 이란?

정의

  • 통신을 위한 규칙이나 약속
  • 서로 다른 시스템 간에 데이터를 주고받기 위해 미리 정해놓은 규약
  • 인간의 언어와 같은 역할 (같은 언어를 사용해야 소통 가능)

일상생활의 프로토콜 비유

전화 통화 프로토콜:
1. 발신자: 전화 걸기 (연결 요청)
2. 수신자: "여보세요?" (연결 수락)
3. 발신자: "안녕하세요, 저는 OOO입니다" (신원 확인)
4. 대화 진행 (데이터 전송)
5. "그럼 끊을게요" - "네, 안녕히 계세요" (연결 종료)

네트워크 통신도 이와 같은 정해진 절차를 따름

프로토콜이 정의하는 것

요소설명예시
구문 (Syntax)데이터 형식, 구조헤더 형식, 필드 순서
의미 (Semantics)각 부분의 의미오류 처리, 제어 정보
타이밍 (Timing)전송 속도, 순서언제 데이터를 보낼지

2. 프로토콜의 필요성

왜 프로토콜이 필요한가?

프로토콜이 없다면:

컴퓨터 A                              컴퓨터 B
[데이터: 10101100...]  ──────────→   [???]
                                     "이게 뭐지?"
                                     "어디서부터 어디까지가 데이터?"
                                     "어떤 형식?"

프로토콜이 있다면:

컴퓨터 A                              컴퓨터 B
[HTTP 요청]           ──────────→   [HTTP 응답]
"GET /index.html"                    "200 OK, 여기 데이터야"

프로토콜이 해결하는 문제

  1. 호환성: 서로 다른 제조사의 장비 간 통신 가능
  2. 신뢰성: 데이터가 손상/유실되었는지 확인
  3. 순서 보장: 데이터가 올바른 순서로 도착
  4. 오류 처리: 문제 발생 시 복구 방법 정의
  5. 흐름 제어: 송수신 속도 조절

3. 프로토콜의 표준화

표준화 기관

기관정식명칭역할
IETFInternet Engineering Task Force인터넷 표준 (RFC 문서)
IEEEInstitute of Electrical and Electronics Engineers이더넷, Wi-Fi 표준
ISOInternational Organization for StandardizationOSI 모델 정의
ITUInternational Telecommunication Union통신 표준
W3CWorld 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 - DNS

4. 주요 네트워크 프로토콜

계층별 프로토콜 분류

┌─────────────────────────────────────────────────────────────┐
│  응용 계층 (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=117

ARP (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 -a

7. 프로토콜 번호와 포트 번호

IP 프로토콜 번호

번호프로토콜
1ICMP
6TCP
17UDP
50ESP (IPsec)
51AH (IPsec)

잘 알려진 포트 (Well-Known Ports: 0-1023)

포트프로토콜용도
20, 21FTP파일 전송
22SSH보안 원격 접속
23Telnet원격 접속 (비암호화)
25SMTP메일 발송
53DNS도메인 이름 해석
80HTTP
110POP3메일 수신
143IMAP메일 동기화
443HTTPS보안 웹
3306MySQL데이터베이스
3389RDP원격 데스크톱

핵심 정리

개념설명
프로토콜통신을 위한 규칙이나 약속
구문/의미/타이밍프로토콜이 정의하는 세 가지 요소
RFC인터넷 표준 문서 (IETF 발행)
TCP연결 지향, 신뢰성 보장 프로토콜
UDP비연결형, 빠른 전송 프로토콜
IP패킷을 목적지까지 전달하는 프로토콜
HTTP웹 페이지 전송 프로토콜
프로토콜 스택계층적으로 쌓인 프로토콜 구조
프로토콜의 핵심 프로토콜은 서로 다른 시스템이 통신하기 위한 “공통 언어"다. 마치 한국인과 미국인이 영어로 소통하듯, 서로 다른 제조사의 컴퓨터도 같은 프로토콜을 사용하면 통신할 수 있다. TCP/IP 프로토콜 스택이 인터넷의 공통 언어 역할을 한다.