전송 제어 프로토콜(Transmission Control Protocol, TCP)은 인터넷 프로토콜 스위트(IP)의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로도 널리 불린다.
TCP 프로토콜의 작동은 크게 세 가지 흐름으로 구분한다.
SYN-ACK : 서버가 클라이언트에게 SYN-ACK 메시지로 응답한다. 시퀀스 번호는 서버가 임의로 설정한 값 B, 응답 번호는 (A + 1)
ACK : 클라이언트가 서버에게 ACK 메시지를 보낸다. 이 메시지에 포함된 응답 번호는 (B + 1)
이를 통해 서버와 클라이언트를 논리적으로 연결하므로 IP 프로토콜의 한계인 비연결성을 해결할 수 있다.
(논리적 연결이 실제 물리적 연결을 뜻하지 않음. 즉, 실제 연결을 보장하는 상태가 아님)
TCP 세그먼트는 다음 그림과 같이 IP 패킷에 캡슐화되어 상대방과 주고받게 된다.
![]()
TCP 세그먼트에 PORT, 순서 정보들을 포함하므로 IP 프로토콜의 한계인 비신뢰성과 프로그램 구분 또한 해결할 수 있다.
하얀 도화지에 비유될 정도로 기능이 거의 없다.
IP 주소와 차이점은 PORT만을 제공한다.
거의 대부분 TCP 통신을 사용하지만, HTTP3에서 UDP 방식을 채택하였는데 그 이유에 대해서는 차차 알아보도록 하겠다.