본문으로 건너뛰기
김신건의 로그

TCP

· 수정 · 📖 약 1분 · 436자/단어 #network #protocol #transport-layer
Transmission Control Protocol, tcp

정의

TCP (Transmission Control Protocol)는 신뢰성 있는 연결 지향 전송 계층 프로토콜이다. RFC 9293 으로 정의되어 있다. HTTP/1.1·2, SMTP, SSH, FTP 등 인터넷의 대부분의 응용 프로토콜이 TCP 위에서 동작한다.

UDP 와 대비된다, UDP 가 “보내고 잊는” 방식이라면 TCP 는 “확실히 도착한 순서대로 전달”.

핵심 특성

  • 연결 지향(Connection-oriented): 통신 전에 3-way handshake 로 연결 확립
  • 순서 보장(In-order delivery): 패킷에 sequence number 부여, 수신측에서 재정렬
  • 신뢰성(Reliable): ACK 미수신 시 재전송, 손실 자동 복구
  • 흐름 제어(Flow Control): receiver window 로 수신측 처리 속도 맞춤
  • 혼잡 제어(Congestion Control): 네트워크 혼잡 시 송신 속도 조절 (TCP Reno, Cubic, BBR 등)

3-way Handshake (연결 수립)

1 RTT 소요. TLS 까지 추가하면 보통 2-3 RTT.

Client                          Server
   │── SYN  (seq=x)  ────────────→ │
   │ ←──── SYN-ACK (seq=y, ack=x+1) ─── │
   │── ACK (ack=y+1) ────────────→ │
   ←── 데이터 송수신 가능 ──→

4-way Handshake (연결 종료)

각 방향 (C→S, S→C)을 독립적으로 종료하므로 4단계가 필요. Client 는 마지막에 TIME_WAIT 상태로 2×MSL 동안 대기, 지연 패킷이 새 연결을 오염시키지 않게 하기 위함.

TCP 의 한계

문제설명해결 시도
연결 비용매번 3-way handshakeHTTP keep-alive
Head-of-Line Blocking한 패킷 손실이 같은 연결의 모든 stream 영향HTTP/2 가 부분 해결, QUIC 가 완전 해결
연결 변경 시 끊김IP/Port 바뀌면 새 연결QUIC Connection Migration
커널 종속OS 업데이트 없이는 개선 불가QUIC 사용자 영역 구현

사용처

  • HTTP/1.1, HTTP/2 (HTTPS 포함)
  • WebSocket (HTTP Upgrade 후 TCP 그대로 사용)
  • SSH, SMTP, FTP
  • Database 프로토콜 대부분 (PostgreSQL, MySQL wire protocol)
이 글의 용어 (4개)
[Network] HTTP/3: QUIC 위의 HTTP, 0-RTT, connection migrationnetwork
정의 HTTP/3 (2022, RFC 9114) 는 HTTP 의 전송 레이어를 TCP → QUIC 으로 교체한 버전. UDP 위에 QUIC, QUIC 위에 HTTP. 핵심 동기:…
Head-of-Line Blockingnetwork
정의 Head-of-Line Blocking (HOLB) 은 처리 순서가 정해진 큐에서 맨 앞 항목의 지연이 그 뒤 항목 전체의 지연으로 전파되는 현상이다. 네트워크 프로토콜에서…
TLS / SSLnetwork
정의 TLS (Transport Layer Security)는 (또는 위 ) 위에서 동작하는 암호화·인증 프로토콜이다. SSL 은 TLS 의 전신 (Netscape 1995, 더…
UDPnetwork
정의 UDP (User Datagram Protocol)는 비연결·비신뢰 전송 계층 프로토콜이다. RFC 768 (1980) 로 정의되었다. 와 대비된다. "보내고 잊는다(fir…

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기