3 way handshake: 연결 시도
TCP는 신뢰성 있게 정확한 전송을 보장해야 한다.
따라서 통신하기에 앞서, 논리적인 접속을 성립하기 위해 3 way handsake 과정을 진행한다.

- 클라이언트가 서버에게 SYN 패킷을 보냄
- 서버가 SYN을 받고, 클라이언트로 받았다는 신호인 ACK와 SYN 패킷을 보냄
- 클라이언트는 서버의 응답은 ACK와 SYN 패킷을 받고, ACK를 서버로 보냄
3 way handshake 완료되면 연결이 완료된다.
4 way handshake: 연결 해제
연결 성공 후, 모든 통신이 끝났다면 연결을 해제해야 한다.

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