WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Вопрос по TCP/IP

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Вопрос по TCP/IP
Flex Ferrum опубликован 04-05-2001 15:53 MSK   Click Here to See the Profile for Flex Ferrum   Click Here to Email Flex Ferrum  
Значит, ситуевина следующая. Я открываю соединение с каким либо веб-сервером и запрашиваю оттуда страницу. Предположим, что при этом страница имеет размер 512К. Из них я посредством функции recv читаю только половину (т.е. 256К). Вопрос в следующем: какой будет при этом входящий траффик на мой локальный хост?
OlegN опубликован 04-05-2001 16:07 MSK     Click Here to See the Profile for OlegN  Click Here to Email OlegN     
Вопрос конечно интерестный :-))
Скорее всего если соединение после recv не закрыто то winsock может получить остальные пакеты, если они вообще доберутся до хоста. А если соединение закрыто после
recv то остальные пакеты до тебя не доберутся, это точно.
Flex Ferrum опубликован 04-05-2001 16:10 MSK     Click Here to See the Profile for Flex Ferrum  Click Here to Email Flex Ferrum     
Как раз в том-то вся и фишка, что соединение закрывается не сразу.
OlegN опубликован 04-05-2001 17:09 MSK     Click Here to See the Profile for OlegN  Click Here to Email OlegN     
Насколько я понимаю механизм,
winsock получает пакеты, записывает их
во входящую очередь (input queue),
затем посылает нотификацию приложению что данные пришли, а функция recv копирует
полученные пакеты из очерди в твой буффер.
Исходя из этих соображений, если ты не
закрываешь соединение то твой хост получит
все данные, которые ты запрашиваешь по GET-у,
если не произошло ошибки при передаче данных.
Ведь в отличие от FTP протокола в HTTP нет
возможности оборвать текущую команду,
можно только закрыть соединение, в этом случае http сервер в свою очередь должен корректно обработать закрытие сокета и прервать передачу.
Flex Ferrum опубликован 04-05-2001 17:33 MSK     Click Here to See the Profile for Flex Ferrum  Click Here to Email Flex Ferrum     
То есть получается так: если я запрашиваю страничку размером порядка 10-20 МБ, то winsock должен отвести у себя буфер соответсвующего объема под входящие пакеты? Не уверен, что подобная реализация протокола эффективна. А не может локальный хост посылать пакет обратно пакет, информирующий о том, что готов принять очередную порцию данных? Тогда, в принципи, локальный входящий траффик будет равен сумме уже прочитанного объема данных и размера внутреннего буффера winsock.
OlegN опубликован 04-05-2001 17:46 MSK     Click Here to See the Profile for OlegN  Click Here to Email OlegN     
В такие тонкости я не вникал,
но скорее всего если входящая очередь
переполнена, то winsock выдаст нотификацию
об ошибке, и не запишет новые данные в очередь.
purpe опубликован 04-05-2001 19:10 MSK     Click Here to See the Profile for purpe  Click Here to Email purpe     
дествительно у винсока есть какой-то буфер определённого размера и по моим наблюдения порядка 20-30 кб
наблюдения основываются на том, что когда через IE запрашиваешь файл со странички (через http) то высвечивается окошко - с каким именем сохранить ентот файл, ну и пока набираешь имя для файла, то проходит какое-то время.
ТАК ВОТ ПОДМЕЧЕНО! если файлик размером до ~25кб то после нажатия на "OK" он сразу же оказывается на винте, если размер файла больше, то мопед начинает отправлять в сеть запросы на продолжение передачи файла.

2Flex Ferrum
думаю, что входящий трафик будет примерно:
(помоему величина пакета 256 байт)
256Кб + размер заголовка пакета * кол-во пакетов)
ну а кол-во пакетов вроде не трудно вычислить ...


вопчим енто всё мои догадки и на доказательство теоремы не претендуют :)

server_mouse опубликован 08-05-2001 10:09 MSK     Click Here to See the Profile for server_mouse  Click Here to Email server_mouse     
Есть такая штука -- снифером зовётся....
;-))

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.