TCP(Transmission Control Protocol)는 신뢰성 있는 데이터 전송을 보장하는 프로토콜로, 데이터를 안전하게 송·수신하는 여러 메커니즘을 포함하고 있다.
TCP는 연결이 성립된 후 다음과 같은 방식으로 데이터를 전송한다.
TCP 데이터 전송은 크게 다섯 단계로 나눌 수 있따.
1. 연결 설정 (3-Way Handshake)
2. 데이터 분할 및 캡슐화
3. 전송 및 흐름 제어
4. 데이터 수신 및 확인 응답 (ACK)
5. 연결 종료 (4-Way Handshake)
TCP는 데이터 전송 전에 연결을 설정해야 한다.
이 과정은 3-Way Handshake라고 하며, 클라이언트와 서버가 서로 SYN- SYN-ACK, ACK 패킷을 교환하면서 연결을 확립한다.
SYN=1, SEQ=1000SYN=1, ACK=1001, SEQ=2000ACK=2001, SEQ=1001이제 데이터를 주고받을 준비가 완료된다.
애플리케이션 계층에서 생성된 데이터를 전송하기 전에 TCP는 이를 세그먼트(Segment) 단위로 나누고, 헤더를 추가하여 캡슐화한다.
| 필드 | 설명 |
|---|---|
| 출발지/목적지 포트 번호 | 어떤 애플리케이션과 통신하는지 지정 |
| Sequence Number (SEQ) | 데이터의 순서를 나타냄 |
| Acknowledgement Number (ACK) | 받은 데이터에 대한 확인 응답 |
| 플래그 (SYN, ACK, FIN 등) | 연결 설정, 종료 등을 위한 제어 비트 |
| 윈도우 크기 (Window Size) | 흐름 제어를 위한 데이터 수신 가능 크기 |
이렇게 만들어진 TCP 세그먼트는 IP 패킷에 포함되어 전송된다.
TCP는 네트워크 상태에 따라 송신 속도를 조절하여 과부하를 방지한다. 이를 흐름 제어라고 한다.
TCP는 데이터가 정상적으로 전달되었는지 확인하기 위해 ACK(Acknowledgement)를 사용한다.
SEQ=1000, 데이터=500바이트ACK=1500 (1000 + 500, 다음에 받을 데이터 위치)만약 패킷이 손실되거나 순서가 틀리면 재전송이 이루어진다.
데이터 전송이 끝나면, TCP 연결을 해제하기 위해 4-Way Handshake가 수행된다.
FIN (연결 종료 요청)ACK (요청 확인)FIN (서버도 연결 종료 요청)ACK (요청 확인, 연결 해제)이후 일정 시간이 지나면 연결이 완전히 종료된다.
TCP는 신뢰성을 보장하기 위해 다양한 기술을 사용한다.
네트워크에 과부하가 발생하면 속도를 조절하여 네트워크 혼잡을 방지한다.