[TCP] 3 way handshake & 4 way handshake

호돌·2021년 10월 26일
0

CS - Network

목록 보기
2/8
post-thumbnail

handshake?


연결을 성립하고 해제하는 과정을 말한다.

3 way handshake - 연결 성립


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

SYN: Synchronize Sequence Number
ACK: Acknowledgment


TCP 3-way Handshaking 과정

#1. 클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보낸다. 이때 A클라이언트는 SYN을 보내고 SYN/ACK 응답을 기다리는 SYN_SENT 상태로 전환된다.

#2. 서버는 SYN 요청을 받고 클라이언트에게 요청을 받았다는 ACKSYN flag가 담긴 패킷을 발송하고 클라이언트의 ACK의 응답을 기다린다. 이때 서버는 SYN-RECEIVED 상태로 전환된다.

#3. 클라이언트는 서버에게 ACK를 보내고 가상의 논리적 연결망을 수락하게 된다. 이후 상태는 ESTABLISHED로 변환되게 된다. 최적화를 통해 #3의 과정에서 데이터를 담아 보낼 수 도 있다.

4 way handshake - 연결 해제


연결 성립 후, 모든 통신이 끝났다면 해제해야 한다.

  1. 클라이언트는 서버에게 연결을 종료한다는 FIN 플래그를 보낸다.

  2. 서버는 FIN을 받고, 확인했다는 ACK를 클라이언트에게 보낸다. (이때 모든 데이터를 보내기 위해 CLOSE_WAIT 상태가 된다.)

  3. 데이터를 모두 보냈다면, 연결이 종료되었다는 FIN 플래그를 클라이언트에게 보낸다.

  4. 클라이언트는 FIN을 받고, 확인했다는 ACK를 서버에게 보낸다. (아직 서버로 부터 받지 못한 데이터가 있을 수 있으므로 TIME_WAIT을 통해 기다린다.)

  • 서버는 ACK를 받은 이후 소켓을 닫는다 (Closed)
  • TIME_WAIT 시간이 끝나면 클라이언트도 닫는디 (Closed)

📝 참고


https://gyoogle.dev/blog/computer-science/network/TCP%203%20way%20handshake%20&%204%20way%20handshake.html

profile
저도 모르는데요?, 내가 몰라서 적는 글

0개의 댓글