전송 제어 프로토콜(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 방식을 채택하였는데 그 이유에 대해서는 차차 알아보도록 하겠다.