TCP의 연결 해제 : 4-way 핸드세이크와 TIME_WAIT

이강용·2024년 6월 10일
0

CS

목록 보기
48/109

TCP의 연결 해제 과정

4-WAY 핸드세이크 과정

1.	클라이언트 -> 서버: FIN
	•	클라이언트 상태: ESTABLISHED -> FIN_WAIT_1
	•	클라이언트가 연결 종료를 요청하는 FIN 패킷을 서버에 보냅니다. 이 패킷은 더 이상 데이터를 보내지 않겠다는 의사를 표시합니다.
	•	서버 상태: ESTABLISHED -> CLOSE_WAIT
	•	서버가 클라이언트의 FIN 패킷을 수신하고, 더 이상 데이터를 받을 준비를 합니다.
2.	서버 -> 클라이언트: ACK
	•	클라이언트 상태: FIN_WAIT_1 -> FIN_WAIT_2
	•	서버가 클라이언트의 FIN 패킷을 수신한 후, 확인 응답(ACK) 패킷을 클라이언트에 보냅니다.
	•	서버 상태: CLOSE_WAIT
	•	서버는 ACK 패킷을 보내고, 여전히 클라이언트로 데이터를 보낼 수 있는 상태를 유지합니다.
3.	서버 -> 클라이언트: FIN
	•	서버 상태: CLOSE_WAIT -> LAST_ACK
	•	서버가 자신의 데이터 전송을 완료한 후, 연결을 종료하겠다는 FIN 패킷을 클라이언트에 보냅니다.
	•	클라이언트 상태: FIN_WAIT_2 -> TIME_WAIT
	•	클라이언트는 서버의 FIN 패킷을 수신하고, 연결 종료를 확인합니다.
4.	클라이언트 -> 서버: ACK
	•	서버 상태: LAST_ACK -> CLOSED
	•	클라이언트가 서버의 FIN 패킷에 대한 확인 응답(ACK) 패킷을 서버에 보냅니다. 이로써 서버는 연결이 종료됨을 확인하고, 상태를 CLOSED로 변경합니다.
	•	클라이언트 상태: TIME_WAIT -> CLOSED
	•	클라이언트는 일정 시간 동안 TIME-WAIT 상태에 머무른 후, 연결이 완전히 종료됩니다.

TIME_WAIT 상태

  • 클라이언트가 서버의 마지막 FIN 패킷에 대한 ACK 패킷을 보낸 후 일정 시간 동안 연결을 유지하는 상태
  1. 지연된 패킷 처리 :
  • 네트워크 지연으로 인해 아직 전달되지 않은 패킷이 있을 수 있음
    • TIME_WAIT 상태는 이러한 패킷들이 모두 네트워크에서 사라질 때까지 기다림
  1. 연결 재사용 방지 :
  • 동일한 소스 포트와 목적지 포트를 사용하는 새로운 연결이 이전 연결의 잔여 패킷과 혼동되지 않도록 방지
    • TIME_WAIT 기간 동안 해당 포트 번호는 재사용되지 않음
  1. 중복 FIN 패킷 처리 :
  • 클라이언트가 보낸 마지막 ACK 패킷이 서버에 도달하지 않은 경우 서버는 FIN 패킷을 다시 보낼 수 있음
    • TIME_WAIT 상태에서 클라이언트는 이러한 중복 FIN 패킷에 대해 ACK 응답을 다시 보낼 수 있음

TIME_WAIT 상태를 두는 이유?

  • 데이터 무결성 보장 :
    • TIME_WAIT 상태를 유지함으로써 네트워크 지연으로 인해 발생할 수 있는 데이터 손실이나 중복을 방지하여 데이터의 무결성을 보장
  • 신뢰성 유지 :
    • 네트워크 통신의 신뢰성을 유지하고 데이터 전송 과정에서 발생할 수 있는 여러 문제를 해결

TIME_WAIT 지속 시간

  • TIME_WAIT 상태의 지속 시간은 운영 체제에 따라 다를 수 있지만 일반적으로 최대 세그먼트 수명(MSL, Maximum Segment Lifetime)의 두배로 설정
    • MSL은 네트워크에서 패킷이 살아남을 수 있는 최대 시간을 의미
profile
HW + SW = 1

0개의 댓글