- Published on
연결지향형 TCP 프로토콜 - OSI 7계층 4계층 TCP
- Authors
- Name
- Bora Choi
TCP 프로토콜
TCP가 하는 일
전송 제어 프로토콜(Transmission Control Protocol, TCP)은 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 통신을 안정적으로, 순서대로, 에러없이 교환할 수 있게 한다.
TCP의 안정성을 필요로 하지 않는 애플리케이션의 경우 일반적으로 TCP 대신 비접속형 사용자 데이터그램 프로토콜(User Datagram Protocol)을 사용한다.
TCP는 UDP보다 안전하지만 느리다.
TCP 프로토콜의 구조
-
source port :출발지 포트
-
destination port : 도착지 포트
-
sequence Number : 데이터의 순서를 표시
-
Acknownledgment Number : 수시한 데이터의 바로 다음 데이터의 순서 번호
-
Offset : 헤더의 길이
-
Reserved : 미래를 위해 예약된 필드. 항상 0
-
TCP flags : 연결 데이터의 상태
-
Window :자신이 수용하는 한 버퍼의 크기를 byte 단위로 나타낸다.
-
Checksum : 데이터가 전송중 손실되지 않고 원본과 동일한지 검사
-
Urgent Pointer : urgent flag 설정시 urgent 데이터의 마지막 byte 의 일련번호를 저장한다.
-
TCP Options (variable length, optional) : 4byte 씩 붙는다 최대 40 byte까지
⇒ 헤더길이는 최소 20byte 부터 최대 60byte
TCP 플래그
TCP 플래그의 종류
- CWR
- ECE
- URG
- ACK
- PSH
- RST
- SYN
- FIN
각 플래그의 기능
- URG (Urgent) : urgent point 필드와 함께 사용되고 플래그 설정시 해당 세그먼트를 전송 큐 제일 앞으로 보낸다.
- ACK (Acknowlegment) : SYN에 대한 확인의 의미.
- PSH (Push) : 모든 데이터를 전송하고 마지막에 보내는 신호
- RST (Reset) : 유효하지 않는 연결을 시도할때 거부하는데 이용된다.
- SYN (Sync) : 통신 시작 시 연결을 요청하고 ISN을 교환한다.
- FIN (Finish) : 데이터 전송을 종료한다.
TCP를 이용한 통신과정
연결 수립 과정
TCP를 이용한 데이터 통신을 할 때 프로세스와 프로세스를 연결하기 위해 가장 먼저 수행되는 과정
- 클라이언트가 서버에게 요청 패킷을 보내고
- 서버가 클라이언트의 요청을 받아들이는 패킷을 보내고
- 클라이언트는 이를 최종적으로 수락하는 패킷을 보낸다.
⇒ 위의 3개의 과정을 3Way Handshake라고 부른다.
TCP 3Way Handshake
데이터 송수신 과정
TCP를 이용한 데이터 통신을 할 때 단순히 TCP 패킷만을 캡슐화해서 통신하는 것이 아닌 페이로드를 포함한 패킷을 주고 받을 때의 일정한 규칙
-
보낸 쪽에서 또 보낼 때는 SEQ번호와 ACK번호가 그대로다.
-
받는 쪽에서 SEQ번호는 받은 ACK번호가 된다.
-
받는 쪽에서 ACK번호는 받은 SEQ번호 + 데이터의 크기
TCP 상태전이도
TCP 연결 상태의 변화

-
실선 - 클라이언트
-
점선 - 서버
-
LISTEN : 서버가 클라이언트 요청을 항상 듣고 있는 상태
-
ESTABLISHED : 연결이 서로 수립된 상태 (3Way-Handshake)가 끝난 상태
연결을 수립하는 3Way-Handshake 과정에서의 상태 변화
TCP패킷을 캡쳐해서 분석해보자!
TCP 3way handshake
