Не могли бы вы объяснить пример алгоритма Nagle в tcp / ip на примере?
Я думаю Википедия отлично справляется со своим вступительным пунктом.
В документе Нэгла «Контроль перегрузки в межсетевых сетях IP / TCP» (RFC 896) описывается то, что он назвал «проблемой небольших пакетов», когда приложение постоянно выдает данные небольшими порциями, часто размером всего 1 байт. Поскольку TCP-пакеты имеют 40-байтовый заголовок (20 байт для TCP, 20 байт для IPv4), это приводит к 41-байтовому пакету на 1 байт полезной информации, что приводит к огромным накладным расходам. Такая ситуация часто возникает в сеансах Telnet, где большинство нажатий клавиш генерируют один байт данных, который передается немедленно. Хуже того, по медленным каналам связи многие такие пакеты могут передаваться одновременно, что может привести к коллапсу заторов. Алгоритм Нэгла работает путем объединения количество небольших исходящих сообщений и отправив их все сразу. В частности, пока есть отправленный пакет, для которого отправитель не получил подтверждения, отправитель следует продолжать буферизовать свой вывод до у него полная стоимость пакета вывод, так что вывод можно отправить всем сразу.
В документе Нэгла «Контроль перегрузки в межсетевых сетях IP / TCP» (RFC 896) описывается то, что он назвал «проблемой небольших пакетов», когда приложение постоянно выдает данные небольшими порциями, часто размером всего 1 байт. Поскольку TCP-пакеты имеют 40-байтовый заголовок (20 байт для TCP, 20 байт для IPv4), это приводит к 41-байтовому пакету на 1 байт полезной информации, что приводит к огромным накладным расходам. Такая ситуация часто возникает в сеансах Telnet, где большинство нажатий клавиш генерируют один байт данных, который передается немедленно. Хуже того, по медленным каналам связи многие такие пакеты могут передаваться одновременно, что может привести к коллапсу заторов.
Алгоритм Нэгла работает путем объединения количество небольших исходящих сообщений и отправив их все сразу. В частности, пока есть отправленный пакет, для которого отправитель не получил подтверждения, отправитель следует продолжать буферизовать свой вывод до у него полная стоимость пакета вывод, так что вывод можно отправить всем сразу.