SYN :: synchronize sequence number
ACK :: Acknowledgement
TCP Header에는 Code Bit(Flag Bit)라는 부분이 존재한다. 이 부분은 총 6 Bit으로 이루어져 있으며 각각 비트들이 의미를 갖고 잇다. Urg-Ack-Psh-Rst-Syn-Fin 순서로 이루어져 있다. SYN 패킷일 경우에는 000010이 된다.
요청과 응답에 대한 패킷을 주고 받아야 하기 때문에 두 종류이다.
일단 클라이언트가 자신의 목소리가 들리는지 물어본다 (YN). 서버는 클라이언트의 목소리가 들린다고 말한다 (SYN + 1). 그리고 자신의 목소리가 들리는지 물어본다 (ACK). 클라이언트는 서버의 목소리가 들린다고 말한다 (ACK + 1). TCP connection은 양방향성이다. 클라이언트에서 서버에게 패킷을 보내듯, 서버에서도 클라이언트에게 패킷을 보낼 수 있어야하기 때문에 3-way다.
처음 클라이언트에서 SYN 패킷을 보낼 때 Sequence Number에는 랜덤한 숫자가 담겨진다. 초기 sequence number를 ISN이러고 한다. ISN은 0이 아닌 난수를 이용하는데, port는 시간이 지남에 따라 재사용된다. 따라서 두 통신 호스트가 과거에 사용된 포트 번호 쌍을 사용하는 가능성이 존재한다. 서버 측에서는 패킷의 SYN을 보고 구분하는데, 난수가 아닌 순차적인 number를 전송하면 이전의 connection과 헷갈릴 수 있다.