TCP: 신뢰성 있는 데이터 전송을 만드는 전송 계층 프로토콜

TCP의 연결 지향 통신, 순서 보장, 재전송, 흐름·혼잡 제어와 UDP 차이, 웹·이메일·파일 전송 활용을 정리한다.

2026-08-14 · 최초 발행 2025-08-10

인터넷 전송을 지탱하는 TCP

TCP는 OSI 7계층 모델의 전송 계층에서 동작하며, 송신자와 수신자 사이에 데이터를 세그먼트 단위로 전달하는 통신 규약이다. TCP/IP 스택에서 사실상 표준으로 자리 잡았고, 서로 다른 기기가 데이터를 주고받는 인터넷 기반 기술로 쓰인다.

TCP를 선택하는 이유는 단순히 데이터를 보내기 위해서가 아니다. 데이터가 누락되거나 중복되지 않고, 보낸 순서대로 도착해야 하는 통신에 연결 상태와 제어 정보를 제공한다.

연결을 만들고 유지하는 방식

TCP는 데이터를 보내기 전에 3-Way Handshaking으로 연결을 맺고, 전송이 끝나면 4-Way Handshaking 절차로 연결을 종료한다. 통신 중에는 세션의 상태 정보를 유지한다.

ServerClientServerClient3-Way Handshaking (연결 설정)데이터 전송4-Way Handshaking (연결 종료)SYN (seq=x)SYN-ACK (seq=y, ack=x+1)ACK (ack=y+1)DATAACKFINACKFINACK

이 연결 지향성 위에서 TCP는 손실, 중복, 순서 오류를 감지하고 복구한다. 순서 번호와 확인 응답으로 전송 상태를 추적하고, 체크섬으로 데이터 무결성을 확인한다. 손실된 데이터는 타임아웃과 재전송으로 복구하며, 흐름 제어와 혼잡 제어도 함께 적용한다.

하나의 IP 주소에서 여러 서비스를 운영할 수 있는 것도 포트 번호 덕분이다. 포트 번호는 클라이언트와 서버 사이의 여러 연결을 구분하고, 하나의 물리적 네트워크 연결을 여러 논리적 연결로 나눠 활용하게 한다. 포트는 Well-known 포트(0-1023), Registered 포트(1024-49151), Dynamic 포트(49152-65535)로 구분된다.

전송 상태를 담는 TCP 헤더

TCP 헤더에는 데이터 전송을 제어하는 필드가 들어간다.

TCP 헤더 (20-60 바이트)출발지 포트 (16비트)목적지 포트 (16비트)순서 번호 (32비트)확인 응답 번호 (32비트)헤더 길이 (4비트)예약 필드 (6비트)제어 플래그 (6비트)윈도우 크기 (16비트)체크섬 (16비트)긴급 포인터 (16비트)옵션 (가변 길이)

출발지 포트와 목적지 포트는 애플리케이션을 식별한다. 순서 번호는 세그먼트 순서를 보장하고, 확인 응답 번호는 수신 상태와 다음에 예상하는 바이트 위치를 나타낸다.

SYN, ACK, FIN, RST, PSH, URG 같은 제어 플래그는 연결과 데이터 전달 상태를 제어한다. 윈도우 크기는 흐름 제어를 위한 수신 버퍼 크기이며, 체크섬은 데이터 무결성을 검증한다.

ACK, 재전송, 윈도우가 신뢰성을 만드는 과정

수신 측은 세그먼트를 정상적으로 받으면 ACK 메시지로 응답한다. 송신 측은 ACK를 받지 못한 세그먼트를 다시 보내며, 누적 확인 방식으로 특정 순서 번호까지의 모든 데이터 수신을 확인한다.

송신 측은 세그먼트를 보낸 뒤 타이머를 시작한다. 타임아웃이 발생하면 해당 세그먼트를 재전송하고, RTT(Round Trip Time) 측정값으로 타임아웃을 동적으로 조정한다. 중복 ACK를 받았을 때 즉시 재전송하는 빠른 재전송 알고리즘도 사용한다.

흐름 제어는 수신 측이 감당할 수 있는 양만큼만 데이터를 보내기 위한 장치다. 슬라이딩 윈도우를 사용하고, 수신 버퍼 크기를 송신 측에 전달해 과부하를 막는다. 제로 윈도우가 발생하면 송신은 일시 중지된다.

전송수신윈도우 크기 피드백송신 버퍼네트워크수신 버퍼

혼잡 제어는 네트워크 자체의 혼잡을 감지해 전송량을 조절한다. 느린 시작(Slow Start), 혼잡 회피(Congestion Avoidance), 빠른 회복(Fast Recovery)이 주요 알고리즘이며, CWND(Congestion Window)를 통해 전송량을 동적으로 조절한다. TCP는 패킷 손실을 혼잡 신호로 보고 윈도우 크기를 조정하며, TCP Tahoe, TCP Reno, TCP Vegas 등 다양한 혼잡 제어 알고리즘이 개발됐다.

UDP와 비교할 때의 선택 기준

특성 TCP UDP
연결 방식 연결 지향(Connection-Oriented) 비연결형(Connectionless)
신뢰성 높음 (데이터 손실 복구) 낮음 (데이터 손실 복구 없음)
순서 보장 O X
속도 상대적으로 느림 상대적으로 빠름
헤더 크기 20-60 바이트 8 바이트
흐름/혼잡 제어 O X
사용 사례 웹, 이메일, 파일 전송 스트리밍, 게임, DNS, VoIP

TCP는 데이터 손실 복구와 순서 보장이 필요한 경우에 맞고, UDP는 상대적으로 빠른 전송이 필요한 스트리밍, 게임, DNS, VoIP에 사용된다.

신뢰성 있는 전달이 필요한 서비스

웹 페이지를 불러올 때 HTTP/HTTPS는 TCP를 기반으로 동작한다. 브라우저와 웹 서버는 신뢰성 있게 데이터를 교환하며, HTTP/1.1은 연결 유지(Keep-Alive)로 여러 요청을 처리한다. HTTP/2는 단일 TCP 연결에서 다중 스트림을 지원한다.

이메일 전송 프로토콜인 SMTP는 TCP 포트 25를 사용한다. POP3와 IMAP도 TCP 기반이며, 메시지 손실 없는 안정적인 이메일 전달에 맞춰져 있다.

대용량 파일 전송에서는 데이터 무결성이 중요하다. FTP는 제어용(21)과 데이터용(20)으로 두 개의 TCP 연결을 사용하고, SFTP는 SSH 프로토콜 안에서 TCP 연결을 활용한다.

원격 접속에서도 TCP의 연결 지향성은 중요하다. SSH(포트 22)는 보안이 강화된 원격 접속을 제공하며, 명령어 입력과 응답의 정확한 전달, 세션 유지, 인증 정보 보호에 TCP 특성을 활용한다. Telnet 역시 원격 접속에 사용된다.

TCP가 맞지 않는 상황과 보완 기술

TCP는 실시간 통신에서 지연이 발생할 수 있고, 헤드 오브 라인 블로킹(Head-of-Line Blocking) 문제가 있다. 3-Way Handshaking은 연결 설정 지연을 만들 수 있으며, 모바일 네트워크에서는 효율성이 저하될 가능성도 있다.

이 한계에 대응하는 기술로 QUIC(Quick UDP Internet Connections), TCP Fast Open, 멀티패스 TCP(MPTCP)가 있다. QUIC은 TCP의 대안으로 거론되며, TCP Fast Open은 연결 설정 시간을 줄이고, MPTCP는 다중 경로를 활용한다. TLS 1.3과 결합해 보안성과 효율성을 개선하는 방식도 사용된다.

TCP는 연결 지향성, 순서 보장, 오류 검출과 복구를 통해 데이터 무결성을 유지한다. 흐름 제어와 혼잡 제어는 수신 측과 네트워크 상태를 함께 고려하게 하며, 웹·이메일·파일 전송처럼 신뢰성이 필요한 인터넷 서비스의 기반으로 남아 있다.

TCP전송 계층네트워크흐름 제어혼잡 제어