전송 제어 프로토콜 (TCP; Transmission Control Protocol)은 인터넷에서 가장 핵심이 되는 전송 계층 프로토콜이다.
TCP는 데이터 누락을 방지하고 전송 순서를 보장하는 연결지향형 프로토콜이다.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
출발지 포트 (Source Port)
목적지 포트 (Dest Port)
순차 번호 (Seq)
확인 번호 (Ack num)
헤더길이 (Data Offset)
플래그 (Flag)
SYN (Synchronization): TCP 연결을 시작하는데 사용ACK (Acknowledgement): ACK 패킷FIN (Finish): TCP 연결을 종료하는데 사용RST (Reset): FIN으로 4-way 핸드쉐이크가 아닌 한 번에 끊거나 비정상적인 세션을 끊을때 사용PSH (Push); 버퍼가 채워지기를 기다리지 않고 데이터를 어플리케이션 계층으로 올려 보낸다URG (Urgent): 긴급 포인터가 유효한 것인지 나타냄윈도우 크기 (Window)
체크섬 (Checksum)
긴급 포인트 (Urgent Pointer)
옵션 (Options)

패딩 (Padding)