일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- LDAP
- RegEnumKeyA
- C 언어
- 사진 화질 개선
- 해설
- Kotlin
- OSI 7계층
- GDI+
- CISCO #TALOS
- Python
- 기초 C
- C언어
- EAPHost
- 딥 러닝
- Win32 #API
- FTZ
- Win32 apps
- 새로운 언어
- RegEnumKeyExA
- 풀이
- 한국 진출
- 최신 버전
- hackerschool
- Challenge
- 이미지 화질 개선
- 컴포넌트
- S시리즈
- Bionic Beaver
- 프로그래밍
- 18.04
- Today
- Total
하나 하나 알아가는 프로그래밍
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));
TCP TIME-WAIT 상태 이해하기
TCP TIME-WAIT 상태 이해하기 참조 : 인터넷 여기저기 작성 : 몽키몽키(cache798@naver.com) T...
blog.naver.com
상기 코드를 사용하면, TIME_WAIT 상태의 소켓도 바로 바인딩을 하여 사용할 수 있습니다.
위 코드에서 SO_REUSEADDR 옵션은 같은 포트에 다른 소켓이 bind()되는것을 허락해 주는 설정입니다.
'네트워크' 카테고리의 다른 글
RADIUS 인증 서버 패킷 필드 관련. (0) | 2020.11.02 |
---|---|
Wi-Fi 6 (0) | 2020.10.06 |
wpa_supplicant (0) | 2020.09.25 |
EAPHost의 컴포넌트 (구성요소)들 (0) | 2020.09.24 |
OSI 모형 계층 1 : 물리 계층 (0) | 2019.03.10 |