Какая польза предоставляется отметкой времени TCP?
У меня есть поиск сканирования безопасности, направляющий меня отключить временные метки TCP. Я понимаю причины рекомендации: временная метка может использоваться для расчета времени работы сервера, что может быть полезно злоумышленнику (хорошее объяснение в разделе «Временные метки TCP» вhttp://www.silby.com/eurobsdcon05/eurobsdcon_silbersack.pdf).
однако, насколько я понимаю, временные метки TCP предназначены для повышения производительности TCP. Естественно, в цене / выгоде анализ, ухудшение производительности-это большая, возможно, слишком большая стоимость. Мне трудно понять, сколько, если таковые имеются, может стоить производительность. Любые узлы в способности помощи?
5 ответов
конкретное наказание за производительность, которое вы понесете, отключив временные метки, будет зависеть от вашей конкретной серверной операционной системы и того, как вы это сделаете (например, см. Это Psc doc по настройке производительности). Некоторые ОС требуют, чтобы вы включили или отключили все параметры RFC1323 на однажды. другие позволяют выборочно включить параметры RFC 1323.
Если ваша передача данных каким-то образом регулируется вашим виртуальным сервером (возможно, вы только купили дешевый план vhost), то, возможно, вы не могли бы использовать более высокую производительность в любом случае. возможно, стоит отключить их, чтобы попробовать. Если вы это сделаете, обязательно проверьте свою производительность до и после из нескольких разных мест, если это возможно.
Даниэлю и всем, кто хочет разъяснений:
«временные метки TCP используются для обеспечения защиты от обернутых порядковых номеров. Можно рассчитать время работы системы (и время загрузки), проанализировав временные метки TCP (см. ниже). Эти рассчитанные периоды ожидания (и время загрузки) могут помочь в обнаружении скрытых сетевых операционных систем (см. TrueCrypt), связывая поддельные IP-и MAC-адреса вместе, связывая IP-адреса с Ad-Hoc беспроводными APs и т. д.»
это уязвимость низкого риска, обозначенная в соответствии PCI.
почему люди безопасности хотят, чтобы вы отключили временные метки? Какую угрозу может представлять временная метка? Держу пари, команда NTP будет недовольна этим;^)
Я бы не стал этого делать.
без метки времени защита TCP от обернутых порядковых номеров (лапы) механизм не будет работать. Он использует опцию timestamp для определения внезапного и случайного изменения порядкового номера-это обертка (16-битные порядковые номера), а не безумный пакет из другого потока.
Если у вас этого нет, то ваши сеансы TCP будут рыгать время от времени в зависимости от того, как быстро они используют порядковый номер пространство.
возьмите 45Mbps (хорошо в пределах скорости 802.11 n), тогда у нас будет отрыжка каждые
380 секунд. Не ужасно, но раздражает.
почему люди безопасности хотят, чтобы вы отключили временные метки? Какую угрозу может представлять временная метка? Держу пари, команда NTP будет недовольна этим;^)
хмммм, я читал что-то об использовании временных меток TCP, чтобы угадать тактовую частоту отправителя? Может быть, это то, что они боятся? Я не знаю ;^)
временные метки менее важны для оценки RTT, чем вы думаете. Мне они нравятся, потому что они полезны при определении RTT в приемнике или промежуточном ящике. Однако, согласно пушке TCP, только отправитель нуждается в таких запрещенных знаниях;^)
отправителю не нужны временные метки для вычисления RTT. t1 = метка времени, когда я отправил пакет, t2 = метка времени, когда я получил ACK. RTT = t2-t1. Do a немного сглаживания на этом, и вы хорошо идти!
сегодня мне задали аналогичный вопрос по этой теме. Мое мнение таково:
перевернув вопрос с ног на голову, рассмотрим сценарий решения, использующего TCP метки времени для идентификации хостов в вашей сети, которые имеют самое длинное время простоя. Как правило, это наиболее уязвимые системы. Используйте эту информацию для приоритизации исправления, чтобы гарантировать, что ваша сеть остается защищенной.
Не забывайте, что такая информация, как uptime, также может быть полезна для код системные администраторы. 🙂
Пробив анонимности: Чей сейчас ход — спецслужб или хакеров?
Широкое распространение анонимных сетей повлекло за собой массу проблем — спамеры, фишеры, кардеры и прочие «кибер-преступники» получили небывалую возможность скрывать следы своих действий в сети.
Широкое распространение анонимных сетей повлекло за собой массу проблем — спамеры, фишеры, кардеры и прочие «кибер-преступники» получили небывалую возможность скрывать следы своих действий в сети. Разумеется, у анонимных сетей есть и другая, более «светлая» сторона — жители стран с тоталитарным режимом получили возможность свободно общаться в сети без риска быть пойманными.
Но в этой статье речь пойдет не о политике и нравственности 😉
Цели атаки
В статье будут рассмотрены атаки на шифрующие анонимные сети — сеть Tor и коммерческие решения на базе VPN. В статье НЕ будут рассмотрены атаки на такие сети, как I2P, Freenet, сети из анонимных прокси и др.
Выбор Tor обусловлен повышением роста популярности данной сети; коммерческих VPN — распространенностью среди «кибер-преступников».
Задачи атаки
Основные задачи всех атак, рассмотренных далее — раскрытие реального IP-адреса пользователя анонимной сети и подтверждение того, что трафик, исходящий ОТ выходного узла анонимной сети принадлежит исследуемому («подозреваемому») компьютеру. В статье НЕ будут рассмотрены атаки на криптографическую часть (криптоанализ).
Ранее известные атаки (кратко)
Тайминг-атака
Шансы атакующего на успех при использовании данной атаки могут быть увеличены, если у него есть доступ к серверу, к которому подключается анонимный пользователь. Атакующий может, например, заставить веб-сервер отправлять браузеру данные с определенными задержками (к примеру, атакующий может выставить разные интервалы задержек для ответа веб-сервера на запросы индексной страницы, картинок и таблиц стилей). Разумеется, можно отправлять браузеру не ожидаемый ответ, а «пачки» случайных данных с задержками. Это позволит обнаружить в зашифрованном трафике анонимной сети «шаблоны» задержек и, таким образом, с определенной вероятностью ответить на вопрос о принадлежности выходного трафика анонимной сети «подозреваемому» пользователю.
Атака на отпечатки
Атакующий может создать большую базу данных популярных веб-сайтов, которая будет содержать в себе определенные параметры индексных страниц (например, размер главной страницы Google.com в байтах). Это позволит «угадать» сайт, который посещает пользователь, путем анализа количества переданного на входной узел анонимной сети зашифрованного трафика.
Ассоциация анонимного и псевдонимного трафика
Атакующий может ассоциировать анонимный трафик с «подозреваемым» узлом в определенных случаях. Например, Tor направляет все соединения, установленные в определенном временом промежутке, в одну цепочку узлов. Таким образом, можно ассоциировать псевдонимные соединения с анонимными, если они были установлены практически одновременно. Например, при одновременной отправке файла по протоколу FTP (анонимное соединение) и соединением с ICQ (псевдонимное соединение) будет использована одна цепочка серверов сети Tor (следовательно, будет использован один выходной узел). В этом случае атакующий может догадаться, что оба соединения были установлены с одного компьютера и попытаться получить дополнительную информацию о пользователе, который передает файл, по номеру ICQ.
Атака на TCP timestamp
Опция TCP timestamp используется для обеспечения повышенной безопасности TCP-соединений. В большинстве дистрибутивов GNU/Linux она включена по-умолчанию. Атака заключается в том, что значение TCP timestamp изменяется на фиксированное значение в единицу времени и в большинстве случаев различается у двух разных компьютеров (т. к. начальное значение в большинстве случаев одинаково и, таким образом, TCP timestamp представляет собой аптайм компьютера).
Атакующий может прослушивать трафик VPN-сервиса и записывать переданные значения TCP timestamp. Поскольку VPN осуществляет передачу IP-пакетов, то система, установившая VPN-соединение, будет передавать TCP timestamp в инкапсулированных пакетах. Примерная схема атаки:
Аналогичная атака возможна и на скрытые сервисы сети Tor. В этом случае в анонимной сети передаются только TCP данные, однако «исследуемый» узел может передавать TCP timestamp, например, в соединениях по локальной сети. Атака заключается в том, что мы можем вызвать определенные отклонения в значениях счетчиков TCP timestamp (например, нагревом процессора путем DoS атаки). Примерная схема атаки:
Применимость данной атаки на скрытые сервисы Tor до сих пор стоит под вопросом.
Существует множество других атак, которые направлены на конкретные приложения, использующие анонимную сеть, например:
Атаки на TLS
В этом разделе будут рассмотрены потенциальные атаки на реализацию TLS ( Transport Layer Security ) в большинстве приложений, которые позволят в определенных случаях следить за пользователями любых анонимных сетей.
Протокол TLS описан в следующих RFC: 2246 (версия 1.0), 4346 (версия 1.1). Также в описании атаки будет затронут популярный протокол синхронизации времени NTP, который определен в RFC 1305 (3 версия).
Атака на реализацию TLS в Firefox, Thunderbird
Данная атака позволяет следить за пользователями популярных приложений Mozilla Firefox и Mozilla Thunderbird (а также некоторых сторонних сборок). Она заключается в том, что при реализации протокола TLS были допущены отклонения от RFC, которые никак не влияют на работу протокола. Секция RFC 7.4.1.2 Client Hello описывает следующую структуру:
Гдеgmt_unix_time — текущее дата и время в стандартном формате UNIX.
Данная структура является частью пакета Client Hello, который отправляет приложение для установки защищенного соединения.
Firefox и Thunderbird в этом поле отправляют аптайм системы (время работы компьютера в секундах), тем самым позволяя атакующему сопоставить трафик, выходящий из анонимной сети, с не анонимным трафиком (например, трафиком локальной сети). Также возможно сопоставление аптайма, полученного описанным выше путем, с аптаймом, который был получен путем анализа TCP timestamp (например, при помощи сканера nmap).
Атака на реализацию TLS в общем случае
С помощью данной атаки можно сопоставить трафик, выходящий из анонимной сети, с исследуемым компьютером. Особенность данной атаки — необходимо физическое вмешательство в процесс обмена данными исследуемого компьютера.
В «более корректных» реализациях TLS в поле gmt_unix_time передается текущее системное время (к которому, однако, не предъявляются требования высокой точности). Атака заключается в том, что можно, вмешавшись в процесс синхронизации времени с NTP-сервером и сдвинув передаваемое «точное» время на определенное число секунд вперед, изменить системное время «подозреваемого» компьютера. Подобное изменение системного времени будет зафиксировано в TLS-соединениях, выходящих из анонимной сети.
Примерная схема атаки:
36 секунд вперед будет говорить о том, что защищенное соединение установил третий компьютер в группе).
При помощи вставок переходов HTTPS в незащищенное соединение данную атаку можно применить и к сервисам HTTP.
Атака на скрытые сервисы HTTP/HTTPS
Атаку, аналогичную описанной выше, можно применить и для сопоставления скрытых сервисов с «подозреваемыми» узлами. Для проведения данной атаки необходимо получить текущее время сервера (после его изменения в процессе синхронизации) и сопоставить отклонения системного времени с отклонениями, внесенными атакующим.
Положение существенно упрощает то, что протокол HTTP обязывает большинство серверов отправлять системное время в поле Date (пример поля: Date: Tue, 15 Nov 1994 08:12:31 GMT).
Таким образом, отклонив системное время исследуемого узла и отправив на скрытый веб-сервер GET запрос, можно сопоставить полученные значения времени и проанализировать их на отклонения.
Заключение
Стоит отметить, что две последние атаки не позволяют проводить массовое сопоставление трафика пользователей анонимных сетей. В современных условиях это означает то, что вышеописанные атаки идеально подходят для правоохранительных органов, которым необходимо сопоставить трафик конкретного пользователя с выходным трафиком анонимной сети, и, следовательно, не предназначены для массового ограничения свободы слова путем поиска и наказания «неугодных». С другой стороны, атаки на TLS в общем случае затрагивают большинство современных ОС (включая Windows XP, Windows Vista, различные дистрибутивы GNU/Linux и т. д.) из-за их направленности на протокол, а не на ошибки в конкретной реализации, которые могут быть исправлены «завтра-послезавтра».
Описание Windows TCP
В этой статье описываются функции TCP в Windows.
Применяется к: Windows 10 — все выпуски, Windows Server 2012 R2
Исходный номер КБ: 224829
Сводка
В этой статье описываются следующие функции TCP в Windows:
Функции TCP можно изменить, изменив записи в реестре.
В следующих разделах, методах или задачах содержатся действия, которые содержат информацию о том, как изменить реестр. Однако неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому следует в точности выполнять приведенные инструкции. Для дополнительной защиты создайте резервную копию реестра, прежде чем редактировать его. Так вы сможете восстановить реестр, если возникнет проблема. Дополнительные сведения о том, как создать и восстановить реестр, щелкните следующий номер статьи, чтобы просмотреть статью в базе знаний Майкрософт:
322756 Создание резервной копии и восстановление реестра Windows
Размер окна TCP
Размер окна получения TCP — это объем получаемой информации (в bytes), который можно буферить во время подключения. Отправитель может отправлять только такой объем данных, прежде чем ждать подтверждения и обновления окна от принимающего хоста. Стек Windows TCP/IP предназначен для самонастройки в большинстве сред и использует более крупные размеры окон по умолчанию, чем предыдущие версии.
Вместо использования жестко закодируемого по умолчанию размера окна TCP настраивается даже на приращения максимального размера сегмента (MSS). MsS обсуждается во время установки подключения. Настройка окна получения даже с увеличением msS увеличивает процент полноразмысных сегментов TCP, используемых при массовой передаче данных.
Размер окна получения определяется следующим образом:
См. раздел «Windows масштабирование».
Для подключений Ethernet размер окна обычно устанавливается до 17 520 bytes (16K округляется до двенадцати сегментов 1460-byte). Размер окна может уменьшаться при подключении к компьютеру, поддерживаюшем расширенные параметры головы TCP, например селективные подтверждения (SACKS) и Timestamps. Эти два параметра увеличивают размер заготавлика TCP более чем до 20 bytes, что приводит к меньшему объему данных.
В предыдущих версиях Windows NT размер окна для подключения Ethernet был 8760 bytes, или шесть сегментов 1460-byte.
Чтобы установить размер окна получения к определенному значению, добавьте значение TcpWindowSize в подзарядку реестра, определенную вашей версии Windows. Для этого выполните указанные ниже действия.
Выберите > запуск, Regedit введите, а затем выберите ОК.
Развяжите подкайку реестра, специфическая для вашей версии Windows:
В Windows 2000 г. развяжите следующую подкайку: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
Для Windows Server 2003 развяжите следующую подкайку: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
В меню Редактирование указать значение New, а затем выберите значение DWORD.
Введите TcpWindowSize поле «Новое значение» и нажмите кнопку Ввод
Выберите Изменение в меню Изменить.
Введите нужный размер окна в поле данных Value.
Допустимый диапазон для размера окна — 0-0x3FFFC000 hexadecimal.
Это значение по умолчанию не присутствует. При добавлении значения TcpWindowSize оно переопределяет алгоритм размера окна по умолчанию, рассмотренный выше.
TcpWindowSize также можно добавить в ключ Параметры, чтобы глобально установить размер окна для всех интерфейсов.
Параметры TCP теперь поддерживаются
Ранее параметры TCP использовались в основном для ведения переговоров о максимальных размерах сегмента. В Windows параметры TCP используются для масштабирования окон, штампа времени и выборочного ACK.
Существует два типа параметров TCP:
В следующем списке показаны вид, длина, имя и описание каждого варианта TCP.
Вид: 0
Длина: 1
Вариант: Конец списка опций
Описание. Используется при заполнении последнего параметра TCP.
Вид: 1
Длина: 1
Параметр: Без операции
Описание. Используется при необходимости заполнения, и в одном пакете следуют дополнительные параметры TCP.
Вид: 2
Длина: 4
Параметр: Максимальный размер сегмента
Описание. Указывает максимальный размер сегмента TCP, который можно отправить по сети.
Вид: 3
Длина: 3
Параметр: Параметр масштабирования окна
Описание. Определяет фактор масштабирования, который будет использоваться при использовании размеров окна больше 64k.
Вид: 8
Длина: 10
Параметр: Параметр «Печать времени»
Описание. Используется для вычисления времени круговой поездки (RTT) передаваемых пакетов.
Вид: 4
Длина: 2
Вариант: разрешенО TCP SACK
Описание. Информирует других хостов о том, что разрешены выборочные Acks.
Вид: 5
Длина: изменяется
Вариант: параметр TCP SACK
Описание. Используется хостами для определения того, были ли получены неупорядоченные пакеты.
Windows масштабирование
Для более эффективного использования сетей с высокой пропускной способностью можно использовать больший размер окна TCP. Поле размеров окна TCP управляет потоком данных и ограничено 2-ми bytes или размером окна 65 535 bytes.
Так как поле размеров не может быть расширено, используется фактор масштабирования. Шкала окна TCP — это параметр, используемый для увеличения максимального размера окна с 65 535 бет до 1 гигабайта.
Параметр масштабирования окна используется только при трехшаговом рукопожатии TCP. Значение масштабирования окна представляет количество битов для переноса влево 16-битного поля размера окна. Значение масштабирования окна можно установить с 0 (без переноса) до 14.
Чтобы вычислить истинный размер окна, умножьте размер окна на 2^S, где S — это значение масштабирования.
Если размер окна 65 535 bytes с коэффициентом масштабирования окна 3.
True window size = 65535*2^3
Истинный размер окна = 524280
Следующий след сетевого монитора показывает, как используется параметр масштабирования окна:
Размер окна, используемый в фактическом трехшаговом рукопожатии, не является масштабным размером окна в разделе 2.2 RFC 1323:
«Поле Окно в syn (например, сегмент [SYN] или [SYN,ACK]) никогда не масштабируется».
Это означает, что первый пакет данных, отправленный после трехнаправного рукопожатия, является фактическим размером окна. Если есть фактор масштабирования, всегда используется начальный размер окна в 65 535 bytes. Затем размер окна умножается на коэффициент масштабирования, идентифицированный в трехшаговом рукопожатии. В таблице ниже представлены границы коэффициента масштабирования для различных размеров окна.
| Фактор масштабирования | Масштабное значение | Начальное окно | Масштабировать окно |
|---|---|---|---|
| 0 | 1 | 65535 или менее | 65535 или менее |
| 1 | 2 | 65535 | 131,070 |
| 2 | 4 | 65535 | 262,140 |
| 3 | 8 | 65535 | 524,280 |
| 4 | 16 | 65535 | 1,048,560 |
| 5 | 32 | 65535 | 2,097,120 |
| 6 | 64 | 65535 | 4,194,240 |
| 7 | 128 | 65535 | 8,388,480 |
| 8 | 256 | 65535 | 16,776,960 |
| 9 | 512 | 65535 | 33,553,920 |
| 10 | 1024 | 65535 | 67,107,840 |
| 11 | 2048 | 65535 | 134,215,680 |
| 12 | 4096 | 65535 | 268,431,360 |
| 13 | 8192 | 65535 | 536,862,720 |
| 14 | 16384 | 65535 | 1,073,725,440 |
Если размер окна в реестре вошел как 2690000000 (269M) в десятичной, то коэффициент масштабирования при трехстолевом рукопожатии составляет 13. Коэффициент масштабирования 12 позволяет только размер окна до 268 431 360 bytes (268M).
Начальный размер окна в этом примере будет вычисляться следующим образом:
65 535 bytes с коэффициентом масштабирования окна 13.
True window size = 65535*2^13
True window size = 536,862,720
Когда значение для размера окна добавляется в реестр и его размер превышает значение по умолчанию, Windows использовать значение масштабирования, которое вмещает новый размер окна.
Значение Tcp1323Opts в следующем ключе реестра можно добавить для управления масштабированием окон и временем:
На панели инструментов выберите Запуск запуска и введите для > Regedit запуска редактора реестра.
В редакторе реестра выберите Изменить, указать на Новое, а затем выбрать значение DWORD.
В поле «Новое значение» введите кнопку ВВОД, а затем в Tcp1323Opts меню Изменить выберите Изменение.
Допустимый диапазон: 0, 1, 2 или 3, где:
0 (отключить параметры RFC 1323)
1 (только включена шкала окна)
2 (только включено время)
3 (включено оба варианта)
Эта запись реестра управляет 1323 разами RFC и параметрами масштабирования окон. Время и масштабирование окна включены по умолчанию, но ими можно управлять с помощью битов флага. Bit 0 управляет масштабированием окон. Bit 1 управляет временем.
Timestamps
Ранее в Стеке TCP/IP использовался один пример на окно данных, отправленных для вычисления времени в пути (RTT). При отправлении пакета был задат timer (retransmit timer) до тех пор, пока не будет получено подтверждение. Например, если размер окна в сети Ethernet составляет 64 240 bytes (44 полных сегмента), для пересчета времени в обратном пути использовался только один из 44 пакетов. С максимальным размером окна 65 535 bytes, этого коэффициента выборки было достаточно. С помощью масштабирования окна и максимального размера окна в 1 гигабайт этот показатель выборки RTT является недостаточным.
Теперь параметр TCP Timestamp можно использовать в сегментах (данные и ACK), которые считаются подходящими для стека, для операций, таких как:
С помощью этих данных RTT можно точно рассчитать с помощью больших размеров окна. RTT используется для вычисления интервалов ретрансмиссии. Для оптимальной пропускной способности необходимы точные перерывы в RTT и ретрансмиссии.
Когда в сеансе TCP используется штамп времени TCP, отправитель сеанса отправляет параметр в своем первом пакете трехсторонней рукопожатия TCP (пакет SYN). Затем любая сторона может использовать параметр TCP во время сеанса.
TCP Timestamps Option (TSopt):
| Вид = 8 | Длина = 10 | TS Value (Tsval) | TS Echo Reply (Tsecr) |
|---|---|---|---|
| 1 байт | 1 байт | 4 байта | 4 байта |
Поле параметра timestamp можно просмотреть в следе сетевого монитора, расширив поле параметров TCP, как показано ниже:
Защита от завернутой последовательности номеров (PAWS)
Поле номеров последовательности TCP ограничено 32 битами, что ограничивает количество доступных номеров последовательности. С высокой пропускной способностью сетей и большой передачи данных, можно обернуть номера последовательности, прежде чем пакет проходит по сети. Если отправлять данные по одной сети Giga-byte в секунду (Gbps), номера последовательности могут обертывание всего за 34 секунды. Если пакет задерживается, потенциально может существовать другой пакет с одинаковым номером последовательности. Чтобы избежать путаницы с дублирующими номерами последовательности, timestamp TCP используется в качестве расширения к номеру последовательности. Пакеты имеют текущие и прогрессивные отметки времени. Старый пакет имеет более старый штамп времени и удаляется.
Селективные подтверждения (SACKs)
Windows представляет поддержку функции производительности, известной как Селективное подтверждение или SACK. SACK особенно важен для подключений с большими размерами окна TCP. Перед SACK приемник мог подтвердить только последний номер последовательности полученного потока данных или «левый край» окна получения. С включенной поддержкой SACK приемник продолжает использовать номер ACK для подтверждения левого края окна получения, но он также может признавать другие блоки полученных данных по отдельности. SACK использует параметры загона TCP, как показано ниже.
SACK использует два типа TCP Options.
Параметр TCP Sack-Permitted используется только в пакете SYN (во время создания подключения TCP), чтобы указать, что он может делать выборочный ACK.
Второй параметр TCP — TCP Sack Option — содержит подтверждение для одного или нескольких блоков данных. Блоки данных идентифицированы с помощью номера последовательности в начале и в конце этого блока данных. Он также известен как левый и правый край блока данных.
Kind 4 — это параметр TCP Sack-Permitted. Вид 5 — это параметр TCP Sack. Длина — это длина в bytes этого параметра TCP.
Tcp SACK разрешено:
| Вид = 4 | Длина = 2 |
|---|---|
| 1 байт | 1 байт |
| Вид = 5 | Длина = переменная |
|---|---|
| 1 байт | Левый край первого блока до правого края первого блока . Левый край блока Nth к правому краю блока Nth |
С включенной поддержкой SACK (по умолчанию) пакет или серия пакетов могут быть отброшены. Приемник сообщает отправителю, какие данные получены и где могут быть «дыры» в данных. Затем отправитель может выборочно перенаправить недостающие данные без повторной передачи уже успешно полученных блоков данных. SACK контролируется параметром реестра SackOpts.
Значение SackOpts в следующем ключе реестра можно изменить, чтобы контролировать использование селективных подтверждений:
Следующий след сетевого монитора показывает, как хост подтверждает все данные до номера последовательности 54857341, а также данные из последовательности номер 54858789-54861685. Отсутствующие данные от 54857341 до 54858788.
Поведение ретрансмиссии TCP и быстрая перетрансмиссия
Ретрансмиссия TCP
В качестве обзора нормального поведения ретрансмиссии TCP запускает ретрансмиссию, когда каждый исходящие сегменты передаются в Протокол Интернета (IP). Если подтверждения данных в данном сегменте до истечения срока действия времени не получено, сегмент повторно передается.
Время перерасчета (RTO) непрерывно корректируется в соответствие с характеристиками подключения с помощью расчетов Сглаженное время в пути (SRTT), как описано в RFC 793. После каждой повторной передачи этого сегмента время от времени для данного сегмента удваивается. С помощью этого алгоритма TCP настраивает себя на нормальную задержку подключения.
Быстрый перетрансмит
TCP повторно передает данные до истечения срока действия времени ретрансмиссии при некоторых обстоятельствах. Наиболее распространенной причиной является функция, известная как быстрая перенаторка. Когда приемник, который поддерживает быстрый перетрансмит, получает данные с номером последовательности, превысят текущий ожидаемый, некоторые данные, скорее всего, будут отброшены. Чтобы сообщить отправительу об этом событии, приемник немедленно отправляет ACK с номером ACK на ожидаемом номере последовательности. Он будет продолжать делать это для каждого дополнительного сегмента TCP, который приходит. Когда отправитель начинает получать поток acKs с одним и тем же номером последовательности, сегмент может быть отброшен. Отправитель немедленно повторно отправляет сегмент, который ожидает приемник, не дожидаясь истечения срока действия времени ретрансмиссии. Эта оптимизация значительно повышает производительность при частом сбросе пакетов.
По умолчанию Windows в следующих условиях:
Это поведение можно контролировать с помощью TcpMaxDupAcks параметра реестра.
Значение TcpMaxDupAcks в следующем ключе реестра можно изменить, чтобы контролировать количество acKs, необходимых для запуска быстрых переадтрансмитов:
Допустимый диапазон 1-3, значение по умолчанию — 2.
Этот параметр определяет количество дубликатов acKs, которые должны быть получены для того же количества отправленных данных последовательности, прежде чем запускается для повторного повторного запуска сегмента, который был отброшен fast retransmit в пути.