이 과정 중 가장 눈여겨봐야 할 것은 TIME_WAIT입니다. 그냥 연결을 닫으면 되지 왜 굳이 일정 시간 뒤에 닫을까요?
첫 번째는 지연 패킷이 발생할 경우를 대비하기 위함입니다. 패킷이 뒤늦게 도달하고 이를 처리하지 못한다면 데이터 무결성 문제가 발생합니다.
두 번째는 두 장치가 연결이 닫혔는지 확인하기 위해서입니다. 만약 LAST_ACK 상태에서 닫히게 되면 다시 새로운 연결을 하려고 할 때 장치는 줄곧 LAST_ACK로 되어 있기 때문에 접속 오류가 나타나게 될 것입니다.
이러한 이유로 TIME_WAIT라는 잠시 기다릴 시간이 필요합니다.
용어
––– TIME_WAIT
소켓이 바로 소멸되지 않고 일정 시간 유지되는 상태를 말하며 지연 패킷 등의 문제점을 해결하는 데 쓰인다. CentOS6, 우분투에는 60초로 설정되어 있으며 윈도우는 4분으로 설정되어 있다. 즉, OS마다 조금씩 다를 수 있다.
––– 데이터 무결성(data integrity)
데이터의 정확성과 일관성을 유지하고 보증하는 것