Исходный порядковый номер (англ. initial sequence number, ISN) для потока начинается не с нуля. Он генерируется специальным алгоритмом, который инкрементирует ISN, назначенный новому соединению (чтобы старые сегменты из предыдущих соединений не могли быть перепутаны с новыми). Данный алгоритм генерирует сложноугадываемый номер ISN. Это 32-разрядное число, сбрасываемое к нулю при достижении максимального значения.
Управление потоком
Механизм управления потоком позволяет избежать ситуаций, когда быстрый отправитель «забрасывает» пакетами медленного получателя. Для его реализации в протоколе TCP предусмотрен буфер, который хранит входящие данные (каждая сторона TCP-соединения сообщает размер своего буфера в момент подключения). По мере передачи данные накапливаются в этом буфере и удаляются из него, когда приложение их считывает. Вместе с каждым подтверждением получатель шлет отправителю сведения о том, сколько свободного места осталось во входящем буфере (то есть сколько байтов отправитель может передать). Механизм управления потоком в протоколе TCP задействует так называемый
Получатель может переопределить стандартный размер входящего буфера, используя параметр сокета SO_RCVBUF (см. страницу socket(7) руководства).
Контроль над перегрузкой: алгоритмы замедленного старта и предотвращения перегрузки
Алгоритмы такого контроля, применяющиеся в TCP, предназначены для того, чтобы не дать быстрому отправителю переполнить сеть. Если отправляющая сторона передает пакеты быстрее, чем промежуточный маршрутизатор может их перенаправить, то это приводит к потере пакетов. Такая ситуация, в свою очередь, может вызвать серьезное ухудшение производительности, если отправляющая сторона продолжит передавать данные с той же скоростью. Алгоритмы контроля над перегрузкой играют важную роль в двух случаях.
•
•
Стратегия контроля над перегрузкой в протоколе TCP состоит из двух алгоритмов: замедленного старта и предотвращения перегрузки.
Когда включено предотвращение перегрузки, отправитель сразу после установки соединения начинает с небольшого
Сочетание этих двух алгоритмов позволяет отправителю быстро увеличивать скорость передачи, используя всю доступную пропускную способность сети, но не превышая ее. В результате удается быстро достичь состояния равновесия, когда отправитель передает пакеты с той же скоростью, с которой он получает подтверждение от получателя.