TCP(Transmission Control Protocol)는 신뢰성 있는 데이터 전송을 보장하는 연결 지향 전송 계층 프로토콜입니다.
3-Way Handshake를 통해 연결을 수립하고, 4-Way Handshake를 통해 연결을 종료합니다.
수신 측이 데이터를 받으면 ACK(확인 응답)을 보냅니다. 송신 측은 ACK를 받지 못하면 재전송합니다.
각 바이트에 일련번호(Sequence Number)를 부여합니다. 패킷이 순서 없이 도착하더라도 수신 측에서 올바른 순서로 재조립합니다.
수신 측이 처리할 수 있는 양을 윈도우 크기(Window Size)로 송신 측에 알립니다. 송신 측은 이 범위 안에서만 데이터를 전송하여 수신 버퍼 오버플로를 방지합니다.
패킷 손실이 감지되면 전송 속도를 낮춥니다. 슬로우 스타트, 혼잡 회피, 빠른 재전송 등의 알고리즘을 사용합니다.
| 필드 | 설명 |
|---|---|
| 출발지 포트 | 송신 애플리케이션의 포트 번호 |
| 목적지 포트 | 수신 애플리케이션의 포트 번호 |
| 시퀀스 번호 | 이 세그먼트의 첫 번째 바이트 번호 |
| 확인 응답 번호 | 다음에 받기를 기대하는 바이트 번호 |
| 윈도우 크기 | 수신 가능한 데이터 양 |
| 플래그 | SYN, ACK, FIN, RST 등 제어 비트 |
| 플래그 | 의미 |
|---|---|
| SYN | 연결 요청 |
| ACK | 수신 확인 |
| FIN | 연결 종료 요청 |
| RST | 연결 강제 리셋 |
| PSH | 데이터 즉시 전달 요청 |
데이터 손실이 허용되지 않는 모든 상황에서 TCP를 사용합니다. 단, 연결 수립과 신뢰성 보장에 따른 오버헤드가 있어 실시간 스트리밍에는 적합하지 않습니다.