3way와 4way handshake 과정은 연결을 성립하고 해제하는 과정을 말한다.
3 way handshake = 연결성립
tcp는 정확한 전송을 보장해야한다. 따라서 통신하기에 앞서 논리적인 접속을 성립하기 위해 3way handshake 과정을 진행한다.

- 클라이언트가 서버에게 SYN(sequence:x)패킷을 보낸다.
- 서버에서 SYN(x)를 받고 클라이언트로 받았다는 신호인 ACK와 SYN패킷을 보낸다.(sequence : y, ACK: x+1)
- 클라이언트는 서버의 응답인 ACK(x+1)와 SYN(y)를 받고 ACK(y+1)를 서버로 보낸다.
이렇게 세번의 통신이 완료되면 연결이 성립된다. 3번이라고 해서 3way handshake이라고 한다.
4 way handshake : 연결해제
연결성립 후에 모든 통신이 끝났다면 해제해야한다.

- 클라이언트가 서버에게 연결을 종료한다는 FIN 플래그를 보낸다.
- 서버에서는 FIN을 받고 확인했다는 ACK를 클라이언트에게 보낸다. 이때 모든 데이터를 보내기 위해 CLOSE_WAIT 상태가 된다.
- 데이터를 모두 보냈다면 연결이 종료되었다는 FIN 플래그를 클라이언트에게 보낸다.
- 클라이언트는 FIN을 받고 확인했다는 ACK를 서버에게 보낸다. 아직 서버로부터 받지 못한 데이터가 있을 수 있으므로 TIME_WAIT상태로 기다린다.
서버는 ACK를 받은 이후 소켓을 닫고, TIME_WAIT 시간이 끝나면 클라이언트도 소켓을 닫는다.