TCP/IP 방식의 4계층에서 쓰이는 주요 프로토콜 중 하나입니다. (TCP, UDP)
4계층은 데이터가 도달함을 보장하는 신뢰성을 제공하는 계층으로, TCP는 에러 복구
, 흐름제어
, 애플리케이션 식별
등을 수행합니다.
애플리케이션(Application)
은, 통신에서 데이터를 주고 받는 컴퓨터 소프트웨어를 말합니다.TCP에서의 데이터 전송에는 커넥션(Connection)의 확립이 필요합니다.
커넥션(Connection)
이란, 애플리케이션 간의 송수신을 하는 데이터 통로를 의미하며 실제 케이블로 연결된 개념이 아닌 가상의 통신로를 의미합니다.TCP의 헤더(Header) 부분은 20옥텟(1옥텟=8bits)으로 이루어져 있으며, 이 중 제어 6비트의 제어 비트(플래그)가 TCP 데이터의 의미를 나타냅니다.
아래 그림에서 예약 비트 옆에 있는 URG, ACK, PSH, RST, SYN, FIN이 플래그에 해당합니다.
🔥 ACK : 상대의 통신 응답을 나타냅니다.
🔥 SYN : 상대에 대한 접속 요청을 나타냅니다.
🔥 FIN : 접속을 종료하는 것을 나타냅니다.
송신처(Client)
는 수신처(Server)
로 확립 요청(SYN)을 보냅니다.수신처(Serve)
는 송신처(Client)
로 부터 수신한 확립 요청(SYN)에 대한 커넥션 확립 응답(ACK)과 함께, 송신처(Client)
에 대한 확립 요청(SYN)을 함께 보냅니다.수신처(Client)
는 송신처(Server)
로 부터 받은 확립 요청(SYN)에 대한 커넥션 확립 응답(ACK)을 보냅니다.아래는 3-way handshake(커넥션 확립)와 4-way handshake(연결 종료 확립) 과정을 나타낸 것입니다.
Terminating Connection도 마찬가지로 종료를 위해 4번의 신호 전달이 필요하기 때문에 4-way handshake라고 부릅니다.
상태값 설명 :
(SYN(a))
(SYN(a+1), ACK(b))
(ACK(b+1))
패킷에 담아 보내는 시퀀스 번호(Sequence Number)
는 순차적인 번호가 아닌 난수인데, 이는 포트가 재사용된 가능성이 있으므로 이전 connection과 구분해 오류를 줄이기 위해서입니다.