TCP_NODELAY와 CLOSE_WAIT

peccavi의 이미지

안녕하세요.

소켓 프로그램을 짜고 있는데요, 패킷 전송 속도를 최대화 하기 위해서

소켓에 TCO_NODELAY옵션을 주었습니다.(나글 알고리즘을 off 시키는..)

그런데 telnet으로 커넥트를 수십개 만들고 종료시킨 후에 netstat으로 보니

CLOSE_WAIT이 너무 많이 걸려 있네요..

TCP_NODELAY옵션을 안주면 깨끗한데 말이죠..

CLOSE_WAIT이 점점 늘어나면서 서버가 응답이 없어지는 현상은

검색해보니 많은 글들이 있었는데, 다 구조상의 문제였던것 같아서

질문드려 봅니다.

TCP_NODELAY를 사용할때 고려해야할 점이나 주의할점에 대해서

좀 알려주세요.
.
참고로 서버 모델은 스티븐스 책의 poll 구조를 그대로 사용했습니다.

익명 사용자의 이미지

setsockopt()에 보면 많은 것이 있다.
그런데 이 문제에 한해서만 본다면,....
* linger option을 준다. 어떻게?
* graceful disconnection이 뭐지?
읽고서 해보세요.

익명 사용자의 이미지

문제를 풀으셨다면, 하나 더.....
그럼 TIME_WAIT는 또 모지?

익명 사용자의 이미지

아 ~ 모든 것이 3 way handshaking 및 자신이 보낸
IP 패킷에 대한 책임(타임아웃...)에서 유래함까지 깨달았다면, 모든 것이 해결된것입니다.

그럼, 건승하세요.
여기까지가 고기 잡는 법이었습니다.

익명 사용자의 이미지

연결을 끝내는 것에 대한 고찰이 끝났으면, 이제
연결을 시작할때의 문제도.....