Tcp против udp или будущее сетевых протоколов

ИСПРАВЛЕНО: Microsoft Edge Content использует слишком много CPU

  1. Очистить кеш браузера
  2. Сканирование на наличие вредоносных программ
  3. Run Edge без расширений
  4. Отключить встроенный Flash Player
  5. Попробуйте очевидные или менее очевидные альтернативы

Решение 1 – Очистить кеш браузера

Все мы знаем, что Edge был намерением Microsoft бросить вызов Chrome и Firefox в отношении скорости и меньшего потребления ресурсов. Первоначально это было сделано, но обновления и многофункциональные дополнения, которые идут с ними, отняли много его легкого характера. Теперь даже локально сохраненный кеш может вызывать нештатные перепады памяти и процессора, даже если открыта только одна вкладка.

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

Вот как можно очистить данные из браузера Edge:

Решение 2 – Сканирование на наличие вредоносных программ

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

Чтобы избежать этого, мы советуем сканировать на наличие вредоносных программ и, кроме того, использовать специализированный анти-PuP инструмент под названием AdwCleaner от Malwarebytes.

Вот вся процедура для комбинации Защитника Windows и AdwCleaner:

Решение 3 – Run Edge без расширений

Дополнения или расширения для браузера имеют первостепенное значение для многих пользователей. Начиная с блокировщиков рекламы и переходя к различным полезным утилитам – каждый серьезный разработчик браузера должен сделать их доступными. Edge начинался без расширений, но теперь, когда они есть, пользователи вполне удовлетворены тем, что может предложить новый браузер Microsoft.

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

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

Вот как отключить расширения в Microsoft Edge:

  1. Откройте Край.
  2. Нажмите на трехточечное меню и откройте Расширения из меню.
  3. Отключите все расширения по отдельности и перезапустите браузер.

Решение 4 – Отключить встроенный Flash Player

Несмотря на то, что мы работаем над расширениями, сторонние флэш-плееры становятся популярными с тех пор, что в наши дни почти в каждом браузере есть встроенный флэш-плеер.И, судя по некоторым отчетам, этот проигрыватель Flash является виновником ненормального использования процессором процесса Content. Что вам нужно сделать, это временно отключить его и искать изменения в диспетчере задач.

Если проблема не устранена, мы вряд ли сможем помочь. Но, если загрузка ЦП процесса Content падает, мы советуем отключить встроенный флеш-плеер навсегда и перейти на сторонние альтернативы.

Вот где отключить встроенный флеш-плеер в Microsoft Edge:

  1. Откройте Edge.
  2. Нажмите на меню из трех точек и выберите вкладку Дополнительно на левой панели.
  3. В Adobe Flash отключите параметр « Использовать Adobe Flash Player ».
  4. Перезапустите браузер и установите сторонний флеш-плеер.

Решение 5 – Попробуйте очевидные или менее очевидные альтернативы

Наконец, до тех пор, пока Microsoft не предоставит надежное и постоянное решение для рассматриваемой проблемы, вы можете использовать Google Chrome, Mozilla Firefox, Opera или любой другой браузер. Существует причина, по которой Edge по-прежнему сильно отстает от Chrome на мировом рынке браузеров, несмотря на все добавления и обновления функций.

Вы также можете извлечь все закладки в новый браузер и существенно ускорить переход. Вот как это сделать:

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

AIMD

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

  • Где a — максимальный размер сегмента (MSS);
  • b- 1/2.

 Размер окна AIMD

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

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

1. WebRTC

WebRTC — это проект с открытым исходным кодом. , позволяющий веб-сайтам осуществлять аудио- и видеосвязь в режиме реального времени с использованием одноранговой (P2P) связи. Консорциум World Wide Web (W3C) отвечает за его стандартизацию.

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

С точки зрения потребителя, у него есть один недостаток. По умолчанию ваш IP-адрес виден всем, кто к вам подключен.

Если вы перейдете в « Настройки разработчика»> «Скрыть мой локальный IP-адрес по соединениям WebRTC» , вы можете быстро исправить ошибку.

Ссылки [ править ]

  1. ^ Керриск, Майкл (2012-08-01). «TCP Fast Open: ускорение работы веб-служб» . LWN.net .
  2. Перейти ↑ Radhakrishnan S, Cheng Y, Chu J, Jain A, Raghavan B (2011-12-06). «TCP Fast Open» . ACM CONEXT.
  3. ^ a b Yuchung Cheng; Джерри Чу; Шивасанкар Радхакришнан и Арвинд Джайн (декабрь 2014 г.). «TCP Fast Open» . IETF . Проверено 10 января 2015 года .
  4. ^ Керриск, Майкл (2012-08-01). «TCP Fast Open: ускорение работы веб-служб» . LWN.net. Поддержка на стороне клиента была объединена для Linux 3.6.
  5. Перейти ↑ Vaughan-Nichols, Steven J (2012-12-11). «Прибывает Linux 3.7, радуются разработчики ARM» . Linux и открытый исходный код . ZDNet. Linux 3.7. TCP Fast Open теперь будет поддерживаться на серверах
  6. ^ «Ядро Linux 3.13, раздел 1.10. TCP Fast Open включен по умолчанию» . kernelnewbies.org . 19 января 2014 . Проверено 11 февраля 2014 .
  7. ^ «Linux Kernel 3.16, раздел 1.4. TCP Fast Open server mode с поддержкой IPv6» . kernelnewbies.org . 3 августа 2014 . Проверено 14 сентября 2014 года .
  8. ^ «Реализация серверного TCP Fast Open (TFO) : MFC в стабильную ветку / 10» . 2015-12-28.
  9. ^ «Это реализация клиентской части TCP Fast Open (TFO) » . 2018-02-26.
  10. ^ «Включить TCP_FASTOPEN по умолчанию для FreeBSD 12» . 2018-06-24.
  11. ^ «1188435 — Поддержка TCP Fast Open» . 2017-05-05.
  12. ^ «1398201 — Отключить TCP Fast Open для 57» . 2017-09-10.
  13. ^ «1689604 — Удалить TCP FastOpen» . 2021-03-23.
  14. ^ «Exim 4.88 выпущен» . 2016-12-25.
  15. ^ «Несвязанный 1.5.10» . Проверено 5 декабря 2017 .
  16. ^ «Примечания к выпуску для BIND версии 9.11.0» . 2016-10-05.
  17. ^ «Узел DNS 2.6.0» . 2017-09-29.
  18. ^ «Ваше приложение и сети нового поколения» . Apple Inc., 2015 г.
  19. ^ «Windows 10 build 14352 — Новые возможности веб-платформы» . Microsoft . Проверено 27 мая 2016 .
  20. ^ «Изменения для 4.1.x» . PowerDNS. 2017-12-04.
  21. ^ Келли, Саймон (2019-03-10). «Поддержка TCP fastopen для входящих и исходящих соединений» .

Установление соединения TCP

Давайте теперь посмотрим, как устанавливается TCP-соединения. Предположим, что процесс, работающий на одном хосте, хочет установить соединение с другим процессом на другом хосте. Напомним, что хост, который инициирует соединение называется «клиентом», в то время как другой узел называется «сервером».

Перед началом передачи каких-либо данных, согласно протоколу TCP, стороны должны установить соединение. Соединение устанавливается в три этапа (процесс «трёхкратного рукопожатия» TCP).

  • Запрашивающая сторона (которая, как правило, называется клиент) отправляет SYN сегмент, указывая номер порта сервера, к которому клиент хочет подсоединиться, и исходный номер последовательности клиента (ISN).
  • Сервер отвечает своим сегментом SYN, содержащим исходный номер последовательности сервера. Сервер также подтверждает приход SYN клиента с использованием ACK (ISN + 1). На SYN используется один номер последовательности.
  • Клиент должен подтвердить приход SYN от сервера своим сегментов SYN, содержащий исходный номер последовательности клиента (ISN+1) и с использованием ACK (ISN+1). Бит SYN установлен в 0, так как соединение установлено.

После установления соединения TCP, эти два хоста могут передавать данные друг другу, так как TCP-соединение является полнодуплексным, они могут передавать данные одновременно.

Методы решения ошибки INET_E_RESOURCE_NOT_FOUND в Windows

Отключение функции TCP Fast Open в браузере Edge

Если в вашем Microsoft Edge включена функция TCP Fast Open, отвечающая за ускорение загрузки страниц, то ее отключение может помочь убрать проблему. По крайней мере, это помогло некоторым пользователям в сети.

  • Запустите Microsoft Edge и впишите в адресную строку about:flags.
  • Опуститесь в самый низ открывшейся вкладки и найдите секцию «Сеть».
  • Уберите галочку напротив опции «TCP Fast Open».
  • Перезагрузите браузер Microsoft Edge.

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

Переустановка Microsoft Edge

Если вышеуказанный метод не смог решить проблему, хотя бы в какой-то степени, то можно также попробовать выполнить переустановку Microsoft Edge. Опять-таки, некоторым пользователям помог данный шаг:

  • Нажмите Win+R.
  • Впишите в пустую строку %LocalAppData%→Packages→Microsoft. MicrosoftEdge_8wekyb3d8bbwe→AC→MicrosoftEdge→User→Default и нажмите Enter.
  • Скопируйте папку DataStore.
  • Вставьте скопированную папку на Рабочий стол. Следующие шаги объяснят вам, как выполнить бэкап ваших данных. Как только закончите с ними, выполните следующие шаги для переустановки Microsoft Edge.
  • Закройте браузер и откройте Проводник Windows 10.
  • Кликните на вид и включите показ скрытых элементов в папках.
  • Пройдите в директорию C:→Users→имя вашей учетки→AppData→Local→Packages
  • Удалите папку Microsoft. MicrosoftEdge_8wekyb3d8bbwe.
  • Как только закончите с удалением этой папки, перезагрузите свой компьютер.
  • Нажмите Win+S и введите PowerShell.
  • Кликните на результат ПКМ и запустите PowerShell от имени Администратора.
  • Введите cd C:\users\имя вашей учетки
  • Впишите
  • Как только завершится выполнение команды, закройте PowerShell и перезагрузите компьютер.

Создание базовой базы

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

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

  • Сети источника и назначения
  • Задержка и количество переходов между этими сетями
  • Возможности и конфигурация процессора и интерфейса
  • Сроки тестов (рабочие часы/нерабо-часы/часы пик)
  • Версии ОС
  • Нажатие тяги и пропускной способности пропускной способности

Примечание

Создайте базовую линию с одинаковыми моделями серверов (одинаковое количество карт NIC и емкость процессора), чтобы производительность обработки была почти равной.

Следите за буфером и отслеживайте количество транспортных сеансов, созданных с помощью средств тестирования. Четыре одновременных транспортных сеанса TCP могут оценивать использование ЦП вчетвером с включенной поддержкой RSS.

Ниже параметров для измерения пропускной способности и создания базового плана:

  1. Скачайте средство ctsTraffic. Ниже описаны некоторые параметры средства ctsTraffic.

    Параметр Описание
    Этот параметр используется для прослушивания порта на серверах. Если указано, средство ctsTraffic прослушивает все IP-адреса, доступные на этом компьютере. Например, .
    Этот параметр используется для клиентов и указывает IP-адрес сервера, на котором ctsTraffic.exe запущен и находится в состоянии прослушивания. Например, .
    Средство CtsTraffic по умолчанию использует шаблон Push. Это означает, что данные отправляются от клиента на сервер. Когда этот переключатель используется как на клиенте, так и на сервере, данные получаются на клиенте. Не используйте этот параметр при выполнении push-теста.
    Этот параметр указывает количество подключений TCP. Одновременно с клиентом будут создаваться розетки TCP. Восьмерка обычно используется в качестве очередей RSS на сетевых картах средней сети 8. Например, .
    Этот параметр указывает умноженное количество подключений в . Например, . С 10 итерациями клиент будет пытаться 80 подключений в общей сложности. Если этот параметр не указан, клиент будет продолжать попытки 8 подключений до 1000 подключений.
    Используйте этот параметр, чтобы смыть параметр консоли уровня 1 в файл, совместимый с Microsoft Excel.
    Используйте этот параметр, чтобы смыть подробные сведения. Например, сведения о уровне розетки, например время, заданная каждой розеткой для передачи данных. Вы можете проверить, есть ли какие-либо ошибки или дополнительные устранения неполадок с помощью этого параметра.
    Этот параметр указывает представление или выход на мониторе во время тестирования. Например, .
  2. Open Resource Monitor на стороне приема. Например, если вы используете, откройте его на клиенте, в противном случае откройте его на сервере.

  3. Запустите средство ctsTraffic на сервере и запустите следующую команду:

  4. Запустите средство ctsTraffic на клиенте и запустите следующую команду:

  5. Убедитесь, что процессоры приемной стороны используются в 10 раз. Если они не работают, проверьте проблему с RSS, чтобы узнать, какой из них работает не так, как ожидалось.

  6. Вычислять пропускную способность в битах в секунду в зависимости от результата на клиенте. Обратитесь к примеру на следующем скриншоте:

    В этом примере пропускная способность составляет почти 19 Гб/с и рассчитывается следующим образом:

    (85 899 349 200 bytes/36.678 seconds) * 8 = 18 735 885 097.33355 (биты/секунда)

Узкие места для пропускной способности TCP

Не используйте сетевой монитор и не принимайте журналы уровня пакетов сети во время тестов пропускной способности TCP. Фильтры мониторинга спецификации интерфейса сетевого драйвера (NDIS) добавляют задержку для отправителям и приемникам при каждом записи пакета. Эта операция требует ресурсов ЦП и создает множество IOs хранилища. Производительность снижается при взятии журналов уровня пакетов, так как TCP пытается восстановиться после потери пакета.

Добавление безопасности имеет собственные проблемы с затратами и производительностью. Протоколы безопасности, такие как безопасность протокола Интернета (IPsec), должны быть накладные и дополнительные требования к обработке. Сравнивая защиту данных с целостностью данных, режим целостности IPsec должен быть предпочтительным для меньших затрат на обработку. Программное обеспечение безопасности также имеет огромные затраты на обработку пакетов, что приведет к более медленным выводам.

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

Проверив проблемы с производительностью TCP, проверьте связанные протоколы верхнего уровня, такие как протоколы файловой системы (Блок сообщений сервера (SMB) или Network File System (NFS)). Эти протоколы требуют ресурсов процессора и IOs диска. Медленная скорость вызвана неисправным драйвером или оборудованием, высокой отложенной очередью вызова процедуры (DPC) или/и медленными IOs диска. Выяснить, какой компонент в ОС вызывает высокие показатели DPCs, сложно, так как для этого требуется анализ с помощью журнала Xperf/Windows Performance Recorder (WPR) (CPU). Поиск проблем, связанных с диском, относительно проще. Дополнительные сведения см. в дополнительных сведениях в examining and Tuning Disk Performance.

Во время тестирования приложения тестирования (клиентские и серверные приложения) могут быть настроены на использование нескольких потоков с достаточно высокими значениями буфера, чтобы достичь максимальной пропускной способности. Однако это может не отражать фактические условия, так как количество потоков и буфера, которые может использовать каждый вызов API, ограничено в зависимости от программирования. Кроме того, протокол уровня приложений (SMB или Common Internet File System (CIFS)) имеет собственный буфер и оптимизацию(Настройка производительности для серверов файлов или SMB: Руководствопо устранению неполадок). Если приложение работает не так, как ожидалось для базового уровня, работайте со специалистом по приложениям, чтобы найти узкий место.

Поведение ретрансмиссии TCP и быстрая перетрансмиссия

Ретрансмиссия TCP

В качестве обзора нормального поведения ретрансмиссии TCP запускает ретрансмиссию, когда каждый исходящие сегменты передаются в Протокол Интернета (IP). Если подтверждения данных в данном сегменте до истечения срока действия времени не получено, сегмент повторно передается.

Время перерасчета (RTO) непрерывно корректируется в соответствие с характеристиками подключения с помощью расчетов Сглаженное время в пути (SRTT), как описано в RFC 793. После каждой повторной передачи этого сегмента время от времени для данного сегмента удваивается. С помощью этого алгоритма TCP настраивает себя на нормальную задержку подключения.

Быстрый перетрансмит

TCP повторно передает данные до истечения срока действия времени ретрансмиссии при некоторых обстоятельствах. Наиболее распространенной причиной является функция, известная как быстрая перенаторка. Когда приемник, который поддерживает быстрый перетрансмит, получает данные с номером последовательности, превысят текущий ожидаемый, некоторые данные, скорее всего, будут отброшены. Чтобы сообщить отправительу об этом событии, приемник немедленно отправляет ACK с номером ACK на ожидаемом номере последовательности. Он будет продолжать делать это для каждого дополнительного сегмента TCP, который приходит. Когда отправитель начинает получать поток acKs с одним и тем же номером последовательности, сегмент может быть отброшен. Отправитель немедленно повторно отправляет сегмент, который ожидает приемник, не дожидаясь истечения срока действия времени ретрансмиссии. Эта оптимизация значительно повышает производительность при частом сбросе пакетов.

По умолчанию Windows в следующих условиях:

  • Он получает три acKs для одного номера последовательности: один ACK и два дубликата.
  • Номер последовательности отстает от текущего.

Это поведение можно контролировать с помощью параметра реестра.

Значение TcpMaxDupAcks в следующем ключе реестра можно изменить, чтобы контролировать количество acKs, необходимых для запуска быстрых переадтрансмитов:

  1. На панели инструментов выберите Запуск запуска и введите для > запуска редактора реестра.
  2. Найдите и выберите вышеуказанный ключ в редакторе реестра, а затем выберите Изменение в меню Редактирование.
  3. Введите нужное значение в поле данных Value.

Примечание

Допустимый диапазон 1-3, значение по умолчанию — 2.

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

Размер окна в заголовке TCP

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

Размер окна

Рассмотрим, как используются это поле на практике. Предположим, что размер буфера у получателя равен восьми сегментам. Отправитель передает один сегмент он записывается в буфер, получатель передает подтверждение получение этого сегмента. В подтверждение, кроме номера следующего ожидаемого байта, указывается также размер окна 10 220 что соответствует семи сегментам (7*1460). Мы используем сеть Ethernet в который размер кадра 1500 байт, если вычтем заголовок TCP 20 байт и IP 20 байт, размер данных сегмента получится 1460 байт.

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

Предположим, что приложение занято какими-то делами и ничего из буфера не читает.

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

Отправитель, если ждет слишком долго, может передать, так называемый, сегмент Zero Window Probe просьба подтвердить, что размер окна все еще равен нулю. Он передается для того, чтобы убедиться, что получатель остается на связи и не произошло каких-то ошибок. 

Например, сегмент с новым размером окна мог потеряться по сети, приложение могло прочитать данные, но по каким-то причинам транспортная подсистема это еще не обнаружила, либо у получателя произошла какая-то критическая ошибка и соединение уже разорвано. В ответ на сегмент Zero Window Probe получатель может отправить сообщение, что размер окна по-прежнему равен нулю, это значит отправитель должен ждать либо новый размер окна, значит отправитель может передавать данные.

5. Отключить список совместимости Microsoft

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

Если базовая технология слишком старая, современные веб-браузеры не смогут отображать контент. Чтобы решить эту проблему, Microsoft разработала «список совместимости». Если сайт находится в списке, Edge адаптирует код, чтобы он мог отображать страницу.

Но список вызывает вопросы. Насколько это актуально? Microsoft проверяет сайты на наличие обновлений? А что произойдет, если страница была обновлена, но все еще находится в списке? Вы не хотите использовать список совместимости без необходимости; некоторые элементы страницы могут отображаться неправильно, если вы это делаете.

Чтобы отключить список, перейдите в « Настройки разработчика»> «Использовать список совместимости Microsoft» . Да, вы все равно можете наткнуться на странную страницу, которая не будет загружаться, но если это так плохо, вы, вероятно, не хотите тратить время на это в любом случае.

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 (например, сегмент или ) никогда не масштабируется».

Это означает, что первый пакет данных, отправленный после трехнаправного рукопожатия, является фактическим размером окна. Если есть фактор масштабирования, всегда используется начальный размер окна в 65 535 bytes. Затем размер окна умножается на коэффициент масштабирования, идентифицированный в трехшаговом рукопожатии. В таблице ниже представлены границы коэффициента масштабирования для различных размеров окна.

Фактор масштабирования Масштабное значение Начальное окно Масштабировать окно
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 в следующем ключе реестра можно добавить для управления масштабированием окон и временем:

  1. На панели инструментов выберите Запуск запуска и введите для > запуска редактора реестра.

  2. В редакторе реестра выберите Изменить, указать на Новое, а затем выбрать значение DWORD.

  3. В поле «Новое значение» введите кнопку ВВОД, а затем в меню Изменить выберите Изменение.

    Примечание

    Допустимый диапазон: 0, 1, 2 или 3, где:
    0 (отключить параметры RFC 1323)
    1 (только включена шкала окна)
    2 (только включено время)
    3 (включено оба варианта)

Эта запись реестра управляет 1323 разами RFC и параметрами масштабирования окон. Время и масштабирование окна включены по умолчанию, но ими можно управлять с помощью битов флага. Bit управляет масштабированием окон. Bit 1 управляет временем.

Задержка сегмента

Один из возможных вариантов, задержка сегмента. В этом случае измеряется round trip time (RTT) время движения сегмента от отправителя до получателя и обратно.

Отправитель передавая сегменты, засекает RTT, измеряет средние время, и при существенном увеличении RTT уменьшается размер окна перегрузки.

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

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

Решением является совместное использование двух сигналов задержки и потери сегмента, такой подход используется например, в протоколе Compound TCP реализованного компанией Microsoft.

Соединение TCP

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

Задачи соединения

  • Убедиться в том, что отправитель и получатель действительно хотят передавать данные друг другу
  • Договориться о нумерации потоков байт. С точки зрения практической реализации нельзя всегда нумеровать данные в потоке байт с нуля. Каждый раз начальное значение для нумерации байт выбираются по определенному алгоритму и отправитель и получатель должны договориться между собой какое начальное значение они будут использовать для нумерации потока байт.
  • При установке соединения происходит договоренность о некоторых параметрах соединения.

Установка соединения в TCP

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

Получатель в ответ передаёт сообщение SYN, куда включает подтверждение получения предыдущего сообщения ACK от слова acknowledge и порядковый номер байта, который он ожидает 7538, потому что на предыдущем этапе был получен байт с номером 7537.

Также отправитель включает в сегмент номер байта в потоке байт 36829. Номера байт в первом сообщении не могут быть всегда нулевыми, они выбираются по достаточно сложным алгоритмам, но для простоты можно представлять себе что эти номера выбираются случайным образом.

На третьем этапе пересылается подтверждение получения предыдущего запроса на установку соединения ACK номер следующего ожидаемого байта 36830, а также номер байта в сообщении. После этого соединение считается установленным и можно передавать данные.

Разрыв соединения в TCP

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

Протокол TCP предусматривает два варианта разрыва соединения: корректное, с помощью одностороннего разрыва соединения и сообщения FIN и разрыв из-за критической ситуации с помощью сообщения RST.

Рассмотрим, как выполняется корректный разрыв соединения. Сторона, которая хочет разорвать соединение пересылает другой стороне сообщение FIN и в ответ получает сообщение ACK. Однако соединение разорвано только с одной стороны.

Когда другая сторона решила, что данные для передачи у нее закончились, она также передает сообщение FIN в ответ получает сообщение ACK подтверждение. На этом этапе соединение закрыто полностью в обе стороны.

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

Итоги

Мы рассмотрели управление перегрузкой в TCP — это предотвращение отправки в сеть слишком большого количества сегментов, которые приведут к перегрузке.  Для того чтобы справиться с этой проблемой, используется окно перегрузки, которое определяет сколько сегментов можно отправить в сеть. Если раньше размер окна перегрузки был фиксированным 8 сегментов, то сейчас он определяется динамически в зависимости от того насколько загружена сеть.

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

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

Выводы

UDP – протокол, который обеспечивает высокую скорость отправки пакетов данных, но без гарантии их доставки. Если для конечного пользователя важна надежность доставки с сохранением порядка отправки данных, придется переходить на использование протокола TCP. Применение протокола UDP актуально, если проводится групповая и широковещательная передача данных. Вот почему он пользуется большой популярностью в области потокового интернет-видео, а также в игровой индустрии.

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

Пожалуйста, опубликуйте ваши комментарии по текущей теме статьи. За комментарии, подписки, дизлайки, отклики, лайки огромное вам спасибо!

АРАлина Рыбакавтор

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: