본문 바로가기

공부/이모저모 공부

Time wait 상태

반응형

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));

 

출처 : https://m.blog.naver.com/PostView.nhn?blogId=cache798&logNo=130039539454&proxyReferer=https:%2F%2Fwww.google.com%2F

반응형

'공부 > 이모저모 공부' 카테고리의 다른 글

[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