Эффективное программирование TCP-IP


         

Алгоритм избежания синдрома SWS на


Алгоритм избежания синдрома SWS на получающем конце не позволяет объявлять об обновлении окна, если объем буферной памяти значительно не увеличился. В RFC 1122 «значительно» - это на размер полного сегмента или более чем на половину максимального размера окна. В реализациях, производных от BSD, требуется увеличение на два полных сегмента или на половину максималь­ного размера окна.

Может показаться, что избежание SWS со стороны получателя излишне (поскольку отправителю не разрешено посылать маленькие сегменты), но в действи­тельности это защита от тех стеков TCP/IP, в которых алгоритм Нейгла не реали­зован или отключен приложением (совет 24). RFC 1122 требует от реализаций TCP, удовлетворяющих стандарту, осуществлять избежание SWS на обоих концах.

На основе этой информации теперь можно сформулировать стратегию отправ­ки, принятую в реализациях TCP, производных от BSD. В других реализациях стратегия может быть несколько иной, но основные принципы сохраняются.

При каждом вызове процедуры вывода TCP вычисляет объем данных, кото­рые можно послать. Это минимальное значение количества данных в буфере пере­дачи, размера окон передачи и перегрузки и MSS. Данные отправляются при выполнении хотя бы одного из следующих условий:

  • можно послать полный сегмент размером MSS;


  • соединение простаивает, и можно опустошить буфер передачи;


  • алгоритм Нейгла отключен, и можно опустошить буфер передачи;


  • есть срочные данные для отправки;


  • есть маленький сегмент, но его отправка уже задержана на достаточно дли тельное время;


  • Примечание: Если у TCP есть маленький сегмент, который запрещено посылать, то он взводит таймер на то время, которое потребовалось бы для ожидания АСК перед повторной передачей (но в пределах 5-60 с). Иными словами, устанавливается тайм-аут ретрансмиссии (RТО). Если этот таймер, называемый таймером терпения (persist timer), срабатывает, то TCP все-таки посылает сегмент при условии, что это не противоречит ограничениям, которые накладывают окна передачи и перегрузки. Даже если получатель объявляет окно размером нуль байт, TCP все равно попытается послать один байт. Это делается для того, чтобы потерянное обновление окна не привело к тупиковой ситуации.

  • окно приема, объявленное хостом на другом конце, открыто не менее чем на­половину;


  • необходимо повторно передать сегмент;


  • требуется послать АСК на принятые данные;


  • нужно объявить об обновлении окна.



  • Содержание  Назад  Вперед





    Forekc.ru
    Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий