Nagle 알고리즘에 대한 질문입니다.
글쓴이: kernelbomb / 작성시간: 수, 2003/10/01 - 11:50오전
안녕하세요?
한가지 질문이 있는데요.
fork();로 클라이언트 구현시 입/출력 프로세스를 따로 두게 되면
Nagle 알고리즘을 OFF한 결과와 같다는 생각이 문득 들거든요.
Nagle 알고리즘은 ACK(확인번호)를 수신측에서 확인하지
않고 바로 데이터를 보내는 방식으로 알고 있는데요.
그러니깐, Nagle 알고리즘 OFF(setsockopt();함수로) 시, ACK를
수신 받지 않고 바로 데이터를 보내버리는것 같은데, 이럴경우, ACK와 함께
전달되어 오는 window size는 어떻게 되는 것인가요?
TCP 입/출력 버퍼의 디폴트 값을 사용하게 되는 것인가요?
또한 입/출력 프로세스를 분리하게 되면 Nagle 알고리즘과 같게
되는거 같은데, 여기서도 클라이언트는 ACK를 수신받지 않고
데이터를 전송하게 되는것 아닌가요? 여기서도 window size를
무시하고 전송하게 되는 것인가요?
제가 초보라서 좀 이해가 안가고 헷갈리네요. 어떤 책을 보다보니
Nagle 알고리즘 설명한 그림과, 입/출력 프로세스를 분리한 그림이
같게 그려져 있어서 이런 궁금증이 생기네요. ㅜㅜ;
Forums:
*참고다음사이트로 가셔서(저도 1년에 한번 이상은 꼭 가봅니다)
*참고
다음사이트로 가셔서(저도 1년에 한번 이상은 꼭 가봅니다)
http://tangentsoft.net/wskfaq/
2개의 절을 읽어보세요.
3.16 - What is the Nagle algorithm?
3.17 - When should I turn off the Nagle algorithm?
Winsock FAQ이지만, 유닉스기종에도 공통사항이 많습니다.
말그래로 FAQ사이트라서 ......
그리고, 처음부터 끝까지 읽다가보면, 좋은 지식을 많이 습득할 수
있을것입니다.
아울러, 자신의 지식정도를 파악하는 도구로 사용할 수도 있겠지요.
* 제가 보기에는 추천할만한 good 사이트입니다.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
....
Nagle 알고리즘은 프로세스가 아닌 커널의 TCP 모듈이 실행하는 알고리즘
입니다.
프로세스가 단순히 출력만 담당한다고 해서 .. 실제로 그 아래 레이어인 TCP 가
데이터를 전송할때 ACK 를 받지 않고 데이터를 보낸다는 의미는 아닙니다.
음... 그렇다면...
setsockopt(); 함수로 Nagle OFF 설정으로 할 수 있다고 알고
있는데요. 당연히 이 함수를 호출하면 커널에서 TCP 모듈을
Nagle OFF로 설정하는 것으로 이해를 하고 있습니다.
그렇다면 이렇게 셋팅을 하면 ACK를 못받게 되는데, 이때의
윈도우즈 싸이즈는 송신측에서 어떻게 알고 패킷을 보내게
될까요?
제가 위에서 말했듯이 TCP레이어를 셋팅하는것이 아닌지요?
초보라서 많이 부족합니다. *^^* 틀렸다면 지적과 함께 이해를...
당신들을 사랑합니다.
댓글 달기