반응형
TCP 상태의 가장 마지막 단계로 소켓을 close()로 소멸 시켜도 클라이언트와 미처리된 전문을 마저 처리하기 위해서 커널에서 2~3분 간 유지가 됩니다. 이러한 상태를 TIME_WAIT 상태라고 표현합니다. TIME_WAIT은 꽤나 길게 설정이 되어있어 bind()된 소켓이 죽지 않은 상태에서 같은 주소, 같은 포트로 다른 소켓이 bind() 요청을 하면 에러가 나게됩니다.
TIME_WAIT은 마지막 패킷이 제대로 전송이 되어졌는지를 확인하기 위해서 필요합니다. 만약 TIME_WAIT이 없는 상태에서 바로 응답자가 연결을 끊어버린다면 전송 과정 중 문제가 생길 수 있고, 제대로 종료되지 않을 수 있습니다.
간단히 한줄로 이야기 하자면, 혹시 모를 패킷 전송 실패에 대비하기 위해 TIME-WAIT 이 존재하는 것입니다.
serv_sock=socket(PF_INET, SOCK_STREAM, 0);
optlen = sizeof(option);
option = TRUE; // #define TRUE 1
setsockopt(serv_sock, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option));
반응형
'공부 > 이모저모 공부' 카테고리의 다른 글
[Cookie] Session이 끊기는 이슈 (0) | 2024.07.11 |
---|---|
구글 맵 오류 (0) | 2023.06.27 |
git log 128 에러 (0) | 2023.03.07 |
[서평] 실용 SQL (0) | 2023.01.27 |
메이븐(maven) 그래들(gradle) 차이는? (0) | 2022.07.07 |