Читаем Linux API. Исчерпывающее руководство полностью

Исходный порядковый номер (англ. initial sequence number, ISN) для потока начинается не с нуля. Он генерируется специальным алгоритмом, который инкрементирует ISN, назначенный новому соединению (чтобы старые сегменты из предыдущих соединений не могли быть перепутаны с новыми). Данный алгоритм генерирует сложноугадываемый номер ISN. Это 32-разрядное число, сбрасываемое к нулю при достижении максимального значения.

Управление потоком

Механизм управления потоком позволяет избежать ситуаций, когда быстрый отправитель «забрасывает» пакетами медленного получателя. Для его реализации в протоколе TCP предусмотрен буфер, который хранит входящие данные (каждая сторона TCP-соединения сообщает размер своего буфера в момент подключения). По мере передачи данные накапливаются в этом буфере и удаляются из него, когда приложение их считывает. Вместе с каждым подтверждением получатель шлет отправителю сведения о том, сколько свободного места осталось во входящем буфере (то есть сколько байтов отправитель может передать). Механизм управления потоком в протоколе TCP задействует так называемый алгоритм скользящего окна, который следит за тем, чтобы общий объем неподтвержденных сегментов между отправителем и получателем не превышал N байтов (предложенный размер окна). Если входящий буфер получателя полностью заполняется, то окно считается закрытым, а отправляющая сторона останавливает передачу.

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

Контроль над перегрузкой: алгоритмы замедленного старта и предотвращения перегрузки

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

• После установки соединения. На данном этапе (или когда возобновляется передача информации в ранее неактивном соединении) отправитель мог бы сразу послать максимальное количество сегментов, которое влезет в окно, афишируемое получателем (на самом деле именно это и делали ранние реализации протокола TCP). Но если сеть не может справиться с таким потоком сегментов, то отправитель сразу же рискует переполнить сеть.

• При обнаружении перегрузки. При обнаружении отправителем перегрузки он должен снизить скорость передачи. Это обнаружение основывается на предположении о том, что процент потери пакетов в результате ошибок передачи является крайне низким; следовательно, если пакет утерян, то в качестве причины подразумевается перегрузка.

Стратегия контроля над перегрузкой в протоколе TCP состоит из двух алгоритмов: замедленного старта и предотвращения перегрузки.

Алгоритм замедленного старта заставляет TCP начинать передачу данных на низкой скорости, но позволяет экспоненциально увеличивать ее по мере получения подтверждений от принимающей стороны. За счет медленного начала протокол TCP пытается избежать переполнения сети слишком быстрым отправителем. Но если не контролировать экспоненциальный рост скорости передачи, то отправитель рано или поздно получит возможность перегрузить сеть. Чтобы этого избежать и ограничить потенциальный рост скорости, протокол TCP использует алгоритм предотвращения перегрузки.

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

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

54.7. Документы, выносимые на рассмотрение (RFC)
Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных