윈도우 슬라이딩과 naggle 알고리즘에 관련해서

supple의 이미지

안녕하세요 정말 궁금해서 죽겠습니다 궁금증을 풀어주셨으면 정말 너무 감사하겠습니다(__)

일단 슬라이딩윈도우란것이 수신쪽의 윈도우 수신사이즈를 바탕으로해서 그만큼의 패킷을 상대방에게보낸다는것인데..

물론 ack 를 받고 이 ack는 연속된 패킷이 2개이상일경우 에 수신측에서 전송을 하면 그전송된 패킷은 버리고 그만큼 슬라이딩을 하는기법이구요

궁금한것은.. 만약 연결과정에서 상대방의 수신 윈도우사이즈가 8kbyte 이고 mss를 1kbyte라고 가정을 하면 총 15kbyte를 보내야한다면

우선 15kbyte를 1kbyte씩 15개를 나누고 각 1번씩 15번까지 번호를 부여한후에 송신측은 먼저 1번부터 8번까지 전송을 할것인데 궁금한것은

이것을 한꺼번에 8개를 다 전송시켜버리는건가요? 이더리얼로 파일을 다운받는것을 캡쳐해보면 2개를 보낸후에 응답을 주고 항상 2개를 보낸후에

응답을 주고 다음으로 넘어가고 그랬습니다 원래대로라면.... 1번부터 8번까지 다보냈기때문에 응답에 관계없이 다음에 보내야할것은 9번부터

보내야하는것인데...단지 응답받은만큼 슬라이딩만 시켜주면될뿐....

2개를 받은후에 응답을 받아야지만 다음패킷을 보낼수 있는건가요? 슬라이딩윈도우라면 응답에 관계없이 윈도우사이즈범위안의 패킷은 보낼수 있는걸로 알고있습니다만...

하긴 그렇게 하면 무지 비효율적이긴한거 같네요 차라리 2개를 받은후에 응답을 받아야지 보낸다고하면.. 만약 상대방이 놓쳤을경우에 재전송해야하는데 드는 노력을

덜수 있으니까요;;-_-;;; 근데왜!-_-;

소켓프로그래밍을 할때 소켓의 송신버퍼사이즈는 상대방의 수신윈도우 사이즈로 맞춰지는건가요?

인터넷상의 다운로드 받는 프로그램들.... 가령 (프루나,엔디스크,위디스크 등등..)에서 파일을보내주는 송신자측의 송신버퍼는 어느정도가 돼고

그버퍼는 어떤유형인가요? 가령 (큐 라던지 스택이라던지...등등)

제가 허접하게 생각한거는;;; write 나 send 등의 전송함수에서 사이즈는 mss사이즈만큼을 전송해주는거고 송신버퍼의 양은 상대방의 수신윈도우 사이즈 만큼이구요

가령 mss는 1460 수신윈도우사이즈는 65535 라고하면 write함수로 1460만큼 보내면 송신버퍼에서 쌓이다가 1460씩 나갑니다 버퍼의 유형은 큐이고 fifo방식이고

1460씩 나갈때마다 버퍼가 그만큼 비니깐 빈만큼 write함수를 호출해서 계속 큐를 채워주면서 데이터를 전송한다라고 이게 맞는건가요-_ㅜ;;

어떤식으로 돼는것인지 가르쳐주셨으면 합니다-_ㅜ 긴 글읽어주시느라 너무 수고하셨구요 정말 알고싶습니다 -_ㅜ 많은 답변해주세요-_ㅜ 감사합니다 정말-_ㅜ