10.13.2 Синдром "бестолкового окна"

10.13.2 Синдром "бестолкового окна"

В первых реализациях TCP/IP разработчики столкнулись с феноменом синдрома "бестолкового окна" (Silly Window Syndrome — SWS), который проявлялся достаточно часто. Для понимания происходящих событий рассмотрим следующий сценарий, приводящий к нежелательным последствиям, но вполне возможный:

1. Передающее приложение быстро отсылает данные.

2. Принимающее приложение читает из входного буфера по 1 байту данных (т.е. медленно).

3. Входной буфер после чтения быстро заполняется.

4. Принимающее приложение читает 1 байт, и TCP отправляет ACK, означающий "Я имею свободное место для 1 байта данных".

5. Передающее приложение отправляет по сети пакет TCP из 1 байта.

6. Принимающий TCP посылает ACK, означающий "Спасибо. Я получил пакет и не имею больше свободного места".

7. Принимающее приложение опять читает 1 байт и отправляет ACK, и весь процесс повторяется.

Медленное принимающее приложение долго ожидает поступления данных и постоянно подталкивает полученную информацию к левому краю окна, выполняя совершенно бесполезную операцию, порождающую дополнительный трафик в сети.

Реальные ситуации, конечно, не столь экстремальны. Быстрый отправитель и медленный получатель будут обмениваться небольшими (относительно максимального размера сегмента) кусками данных и переключаться по почти заполненному приемному окну. На рис. 10.18 показаны условия для появления синдрома "бестолкового окна".

Рис. 10.18. Буфер приемного окно с очень малым размером свободного пространства

Решить эту проблему несложно. Как только приемное окно сокращается на длину, меньшую чем данный целевой размер, TCP начинает обманывать отправителя. В этой ситуации TCP не должен указывать отправителю на дополнительное пространство в окне, когда принимающее приложение читает данные из буфера небольшими порциями. Вместо этого нужно держать освобождающиеся ресурсы в секрете от отправителя до тех пор, пока их не будет достаточное количество. Рекомендуется размер в один сегмент, кроме случаев, когда весь входной буфер хранит единственный сегмент (в последнем случае используется размер, равный половине буфера). Целевой размер, о котором должен сообщать TCP, можно выразить как:

minimum(1/2 входного буфера, Максимальный размер сегмента)

TCP начинает обманывать, когда размер окна станет меньше этого размера, и скажет правду, когда размер окна не меньше, чем получаемая по формуле величина. Отметим, что для отправителя нет никакого ущерба, поскольку принимающее приложение все равно не смогло бы обработать большую часть данных, которых оно ожидает.

Предложенное решение легко проверить в рассмотренном выше случае с выводом ACK для каждого из полученных байтов. Этот же способ пригоден и для случая, когда входной буфер может хранить несколько сегментов (как часто бывает на практике). Быстрый отправитель заполнит входной буфер, но приемник укажет, что не имеет свободного места для размещения информации, и не откроет этот ресурс, пока его размер не достигнет целого сегмента.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Синдром фальшивых данных

Из книги Все под контролем: Кто и как следит за тобой автора Гарфинкель Симеон

Синдром фальшивых данных Еще одна коварная проблема с океаном информации – это то, что я называю «синдром фальшивых данных» [false data syndrom]. Поскольку большинство данных в этом океане информации корректно, мы все предрасположены верить, что они корректны полностью –


Синдром запястного канала

Из книги Как справиться с компьютерной зависимостью автора Краснова С В

Синдром запястного канала Синдром запястного канала в целом является травмой запястья. Для распознавания его сущности, разберемся в физиологии. Запястье — это место соединения лучевой и локтевой костей (костей предплечья) и восьми костей кисти (мелких костей ладони).


Синдром компьютерных игр

Из книги Защита вашего компьютера автора Яремчук Сергей Акимович

Синдром компьютерных игр Целью покупки большинства домашних компьютеров является использование их в качестве развлекательной платформы. В первую очередь это игры. Синдром зависимости от компьютерных игр до сих пор не исследован, и при его изучении можно столкнуться с


Компьютерный зрительный синдром

Из книги Компьютер и здоровье автора Баловсяк Надежда Васильевна

Компьютерный зрительный синдром Новое в современной медицине заболевание – компьютерный зрительный синдром – уже стало профессиональным для всех, кто проводит за компьютером много часов в день. Глаза, которые практически постоянно смотрят на монитор с небольшого


Синдром хронической усталости

Из книги Google. Прорыв в духе времени автора Малсид Марк

Синдром хронической усталости В последнее время все больше людей, живущих в крупных городах, обращаются к врачам с жалобами на усталость, быструю утомляемость, сонливость и общую слабость. Часто эти ощущения сопровождают расстройства нервной системы, нарушения


Китайский синдром

Из книги ArCon. Дизайн интерьеров и архитектурное моделирование для всех автора Кидрук Максим Иванович

Китайский синдром Летом 2005 года Билл Гейтс и Microsoft готовились к наступлению. Они не могли позволить Google и дальше расти такими же темпами. Гейтс создал в Microsoft группу, члены которой должны были сосредоточиться исключительно на конкуренции с Google. Группа представила


Слуховые окна и окна в крыше

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

Слуховые окна и окна в крыше Фактически наш дом, с конструктивной точки зрения, принял уже вполне законченный вид. Однако попробуем добавить к нему еще некоторые элементы, которые хоть и не обязательны, но нередко встречаются в различных коттеджах. Сначала построим одно


Синдром NIH

Из книги Операционная система UNIX автора Робачевский Андрей М.


Синдром "глупого окна"

Из книги Социальные сети. ВКонтакте, Facebook и другие… автора Леонтьев Виталий Петрович

Синдром "глупого окна" Механизм подтверждения получения данных является ключевым в протоколе TCP. Стандарт указывает, что подтверждение должно быть передано без задержки, но не определяет конкретно, насколько быстро данные должны быть подтверждены, и объем


Синдром Диогена

Из книги автора

Синдром Диогена Этот титан древнегреческой мысли имел обыкновение изредка выбираться из своей обустроенной бочки и шататься с фонарем по местному базару, пугая случайных прохожих дикими воплями «Ищу человека!». Почтенный философ преуспел лишь отчасти – в учебники


Синдром Гриффина

Из книги автора

Синдром Гриффина Почтенный уэллсовский герой, как мы помним, добровольно довел до максимума коэффициент прозрачности собственной шкуры. А впоследствии искренне недоумевал, почему его, такого исключительного и талантливого, окружающий плебс в упор замечать не хочет. «Я


Синдром Демьяна

Из книги автора

Синдром Демьяна Помните «демьянову уху» из басни Крылова? Вроде бы всем хорош был этот супчик… Да вот только с дозировкой достославный кулинар малость перемудрил. Что и привело к вполне понятным последствиям – «синдром отторжения» во всей красе.Мораль сей басни проста


Синдром Торопыжки

Из книги автора

Синдром Торопыжки Древний и очень умный грек Зенон придумал когда-то знаменитый парадокс о быстроногом Ахилле, который никогда не обгонит черепаху, ползущую на метр впереди. Пока обладатель уникальной пяты пробежит этот метр, черепаха проползет полметра, преодолел


Синдром Робинзона

Из книги автора

Синдром Робинзона Душа заброшенного на необитаемый остров моряка взалкала общения – и начал несчастный Робинзон лепить себе друзей. Из того, что было, – от не слишком интеллектуальных попугаев с козами, до подвернувшегося под руку дикаря. Правда, в своем естественном


Синдром Лермонтова

Из книги автора

Синдром Лермонтова Одно из стихотворений классика (из тех, что не проходят в школах) звучит так: Делись со мною тем, что знаешь, И благодарен буду я. Но ты мне душу предлагаешь; На кой мне черт душа твоя!.. Эгоистично? Грубо? Однако именно такой схеме соответствует львиная


Синдром Нео

Из книги автора

Синдром Нео Персонаж культового (хотя почему – непонятно) фильма братьев Вачовски долго и мучительно путал виртуальность с реальностью… Причем запутать он сумел не только себя, но и миллионы следящих за его похождениями зрителей, многие из которых до сих пор