작성한 질문수
외워서 끝내는 네트워크 핵심이론 - 기초
TCP 연결종료 및 상태변화
해결된 질문
작성
·
625
0
서버로부터 FIN + ACK을 수신 후, 최종 ACK를 서버로 다시 전달한 다음, TIME_WAIT 상태로 넘어가고, 일정 시간이 지난 다음 Close 처리가 된다는 설명에서,
TIME_WAIT 시간은 정해진 값이 있는 것인지? 아니면 소켓 프로그래밍 시 따로 정해주는 것인지?
바로 CLOSED하지 않고, TIME_WAIT을 하는 이유(목적)는 무엇인지?
질문의 드립니다. :) 널널한개발자님 답변 부탁 드립니다!!
답변 1
3
네, 표준에서 정한 값이 있습니다. 참고로 2MSL(Maximum Segment Lifetime) 입니다.
가장 큰 이유는 지연 문제 때문입니다. 데이터가 늦게 올 수 있을 가능성을 고려하는 것이죠. 해서 해당 소켓이 즉시 재사용되지 못하도록 막는 것입니다. 그리고 마지막 ACK가 손실될 경우 종료과정에 문제가 발생합니다. 이러한 경우를 막기 위한 것으로 이해하면 되겠습니다.
감사합니다.