Tan Kim

TCP (Transmission Control Protocol)

신뢰성 있는 연결 지향 전송 계층 프로토콜. 데이터의 순서 보장, 손실 재전송, 흐름 제어를 제공한다.

TCP vs UDP

항목 TCP UDP
연결 연결 지향 (3-way handshake) 비연결
신뢰성 보장 (재전송, 순서 보장) 미보장
속도 느림 빠름
사용 HTTP, FTP, SSH, DB DNS, 스트리밍, 게임

3-Way Handshake (연결)

Client              Server
  │── SYN ────────▶│  (연결 요청)
  │◀── SYN-ACK ────│  (요청 수락)
  │── ACK ────────▶│  (확인)
  │═══ 연결 수립 ═══│

4-Way Handshake (종료)

Client              Server
  │── FIN ────────▶│  (종료 요청)
  │◀── ACK ────────│  (확인)
  │◀── FIN ────────│  (서버도 종료)
  │── ACK ────────▶│  (최종 확인)
  │═══ 연결 종료 ═══│

TCP 헤더 주요 필드

필드 설명
Source/Dest Port 출발지/목적지 포트
Sequence Number 데이터 순서 번호
Acknowledgment Number 다음에 받을 데이터 번호
Flags SYN, ACK, FIN, RST, PSH
Window Size 수신 버퍼 크기 (흐름 제어)

흐름 제어 & 혼잡 제어

기능 설명
흐름 제어 Window Size로 수신 측 버퍼 초과 방지
혼잡 제어 네트워크 혼잡 감지 시 전송 속도 감소
슬라이딩 윈도우 ACK 없이 여러 패킷 연속 전송 가능

주요 포트

포트 프로토콜
22 SSH
80 HTTP
443 HTTPS
3306 MySQL
5432 PostgreSQL
6379 Redis
27017 MongoDB

메모