본문 바로가기
CS

[TCP] 연결 성립과 해제

by naahy 2024. 7. 1.

3-way HandShake

연결하고자 하는 두 장치(클라이언트, 서버) 간의 논리적 접속을 성립하기 위해 사용하는 연결 확인 방식

TCP/IP 프로토콜을 이용해 통신하는 응용 프로그램이 정확한 전송을 보장하기 위해 데이터 전송 전에 상대 컴퓨터와 사전에 세션을 수립함

TCP 연결을 초기화 할 때 사용

 

  1. 클라이언트가 서버에 연결 요청 (SYN)
  2. 서버가 연결 허락 (SYN + ACK)
  3. 클라이언트-서버 연결 설정(ACK)

 

4-way HandShake

데이터 송수신이 완료되고 TCP 연결을 해제하는 과정

세션을 종료하기 위해 수행되는 절차

 

  1. 클라이언트가 서버에 종료 요청(FIN)
  2. 서버가 클라이언트에게 확인 메시지(ACK)를 보내고 자신의 통신이 끝날 때까지 기다림(CLOSE_WAIT)
    1. 추가로 전송할 패킷이 남아있으면 이어서 전송
  3. 서버가 최종 패킷을 전달하면 클라이언트에게 연결 종료 알림(FIN)
  4. 클라이언트가 서버에게 확인 알림(ACK)을 보내고 일정 시간동안 기다림(TIME_WAIT)
  5. 클라이언트 종료 (CLOSED)

 

 

📌 TIME_WAIT
서버에서 FIN 전송 전 보낸 데이터 패킷이 FIN 패킷보다 늦게 도착하면(지연 패킷이 발생하면) 해당 패킷은 드랍되고 데이터는 유실된다.
이를 막기 위해, 즉 데이터 무결성을 위해 클라이언트는 서버로부터 FIN을 수신해도 일정 시간동안 세션을 남겨놓고 잉여 패킷을 기다린다.
연결을 올바르게 닫힌 상태로 만들기 위해 존재

 


 

✨ 참고

https://mindnet.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-22%ED%8E%B8-TCP-3-WayHandshake-4-WayHandshake

댓글