전송(Transport)계층에서 서버와 클라이언트간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜로, 데이터를 전송하기 전에 데이터 전송을 위한 연결을 만드는 연결지향적인 특성이 있다.
Why? 장치들 사이에 논리적인 접속(session)을 성립하기 위해!
 
SYN 패킷을 보낸다. (sequence : x)ACK와 SYN 패킷을 보낸다. (sequence : y, ACK : x + 1)ACK(y+1)를 서버로 보내면 연결이 이루어진다.SYN: synchronize sequence numbersACK: acknowledgmentWhy? 세션을 종료하기 위해!

FIN 플래그를 보낸다.FIN을 받고, 확인했다는 ACK를 클라이언트에게 보낸다. (이때 모든 데이터를 보내기 위해 CLOSE_WAIT 상태가 된다)FIN 플래그를 클라이언트에게 보낸다.FIN을 받고, 확인했다는 ACK를 서버에게 보낸다. (단, 아직 서버로부터 받지 못한 데이터가 있을 수 있으므로 TIME_WAIT을 통해 기다린다)ACK를 받은 이후 소켓을 닫는다 (Closed)TIME_WAIT: Client가 Server로부터 FIN을 수신하더라도 일정시간(디폴트 240초)동안 세션을 남겨놓고 잉여 패킷을 기다리는 과정https://bangu4.tistory.com/74
https://github.com/haewon-park/csStudy/blob/main/Network/TCP%203-way%20%26%204-way%20Handshake.md