TCP быстрое открытие
В компьютерных сетях TCP Fast Open ( TFO ) — это расширение, ускоряющее открытие последовательных соединений протокола управления передачей (TCP) между двумя конечными точками. Он работает с использованием файла cookie TFO (опция TCP), который представляет собой криптографический файл cookie, хранящийся на клиенте и устанавливаемый при первоначальном соединении с сервером. [1] Когда позже клиент повторно подключается, он отправляет первоначальный пакет SYN вместе с данными cookie TFO для аутентификации. В случае успеха сервер может начать отправку данных клиенту еще до получения последнего пакета ACK трехстороннего рукопожатия, тем самым пропуская двустороннюю задержку и снижая задержку в начале передачи данных.
Файл cookie генерируется путем применения блочного шифра, основанного на ключе, который сервер держит в секрете, к ключу клиента, генерируя тег аутентификации , который третьим лицам трудно подделать, даже если они могут подделать исходный IP-адрес или установить двусторонние соединения. на тот же сервер с других IP-адресов. Несмотря на то, что для создания файлов cookie используются криптографические методы, TFO не предназначен для обеспечения большей безопасности, чем трехстороннее рукопожатие, которое он заменяет, и не обеспечивает какой-либо формы криптографической защиты результирующего TCP-соединения или обеспечения идентификации любой конечной точки. Он также не предназначен для защиты от атак «человек посередине» . Если такое сопротивление требуется, его можно использовать в сочетании с криптографическим протоколом, таким как TLS или IPsec .
TFO было сложно развернуть из-за окостенения протокола; в 2020 году ни один веб-браузер не использовал его по умолчанию. [2]
TFO представляет собой проблему конфиденциальности ; файл cookie TFO может позволить постоянно отслеживать клиента между сеансами даже пассивным наблюдателям. [3]
История
[ редактировать ]Предложение TFO было первоначально представлено в 2011 году. [4] и был опубликован как экспериментальный RFC 7413 в декабре 2014 года. [5] TCP Fast Open разделяет цель обхода трехэтапного установления связи TCP с более ранним предложением 1994 года под названием T/TCP (RFC 1644). В отличие от TCP Fast Open, T/TCP не уделял внимания безопасности. [5] открывая путь для уязвимостей и не набирая обороты.
Характеристики
[ редактировать ]Реализации TFO включают следующее:
- Поддержка IPv4 для TFO была включена в основную ветку ядра Linux в версиях ядра 3.6 (поддержка клиентов) и 3.7 (декабрь 2012 г.) (поддержка серверов). [6] [7] и был включен по умолчанию в версии ядра 3.13 (январь 2014 г.). [8] Поддержка TFO для серверов IPv6 была добавлена в ядро версии 3.16. [9]
- FreeBSD начиная с версии 10.3 [10] (поддержка серверов) и 12.0. [11] [12] (поддержка клиентов).
- Мозилла Фаерфокс начиная с версии 58. [13] Поддержка отключена по умолчанию из-за проблем совместимости сетевых устройств с TFO и TLS 1.3. [14] и в конечном итоге удален в версии 87. [15]
- Браузеры Google Chrome и Chromium поддерживают TFO в Linux , включая ChromeOS и Android .
- Exim Агент передачи почты (MTA) начиная с версии 4.88. [16]
- Непривязанный DNS Resolver версии 1.5.10. [17]
- BIND Система доменных имен (DNS) начиная с версии 9.11.0. [18]
- Узел DNS от версии 2.6.0. [19]
- Apple от iOS 9 и OS X 10.11 поддерживают TCP Fast Open, но по умолчанию он не включен для отдельных соединений. [20]
- Microsoft Edge поддерживает TCP Fast Open, начиная с Windows 10 Preview, сборка 14352. [21]
- PowerDNS Recursor поддерживает TCP Fast Open начиная с версии 4.1. [22]
- dnsmasq поддерживает TCP-fastopen (RFC-7413) начиная с версии 2.81. [23]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Керриск, Майкл (1 августа 2012 г.). «TCP Fast Open: ускорение веб-сервисов» . LWN.net .
- ^ Рыбчинская 2020 .
- ^ Си и др. 2020 , с. 275-279.
- ^ Радхакришнан С., Ченг Ю., Чу Дж., Джайн А., Рагхаван Б. (06 декабря 2011 г.). «Быстрое открытие TCP» (PDF) . АСМ-КОНЕКСТ.
- ^ Jump up to: а б Ченг, Ючунг; Чу, Джерри; Радхакришнан, Сивасанкар и Джайн, Арвинд (декабрь 2014 г.). TCP Быстрое открытие . IETF . дои : 10.17487/RFC7413 . РФК 7413 . Проверено 27 июня 2022 г.
- ^ Керриск, Майкл (1 августа 2012 г.). «TCP Fast Open: ускорение веб-сервисов» . LWN.net.
Поддержка на стороне клиента была добавлена в Linux 3.6.
- ^ Воан-Николс, Стивен Дж (11 декабря 2012 г.). «Выходит Linux 3.7, разработчики ARM радуются» . Linux и открытый исходный код . ЗДНет.
Линукс 3.7. TCP Fast Open теперь будет поддерживаться на серверах.
- ^ «Ядро Linux 3.13, раздел 1.10. Быстрое открытие TCP включено по умолчанию» . kernelnewbies.org . 19 января 2014 года . Проверено 11 февраля 2014 г.
- ^ «Ядро Linux 3.16, раздел 1.4. Режим быстрого открытого сервера TCP с поддержкой IPv6» . kernelnewbies.org . 3 августа 2014 года . Проверено 14 сентября 2014 г.
- ^ «Реализация TCP Fast Open (TFO) на стороне сервера [RFC7413]: MFC в стабильную/10-ветвь» . 28 декабря 2015 г.
- ^ «Это реализация клиентской части TCP Fast Open (TFO) [RFC7413]» . 26 февраля 2018 г.
- ^ «Включить TCP_FASTOPEN по умолчанию для FreeBSD 12» . 24 июня 2018 г.
- ^ «1188435 — Поддержка быстрого открытия TCP» . 05.05.2017.
- ^ «1398201 — Отключить быстрое открытие TCP для 57» . 10 сентября 2017 г.
- ^ «1689604 — Удалить TCP FastOpen» . 2021-03-23.
- ^ «Выпущен Exim 4.88» . 25 декабря 2016 г.
- ^ «Непривязанная 1.5.10» . Проверено 5 декабря 2017 г.
- ^ «Примечания к выпуску BIND версии 9.11.0» . 05.10.2016.
- ^ «Узел DNS 2.6.0» . 29 сентября 2017 г.
- ^ «Ваше приложение и сети следующего поколения» . Apple Inc., 2015 год.
- ^ «Windows 10 build 14352 — Новые возможности веб-платформы» . Майкрософт . Проверено 27 мая 2016 г.
- ^ «Журналы изменений для 4.1.x» . PowerDNS. 04.12.2017.
- ^ Келли, Саймон (10 марта 2019 г.). «Поддержка TCP fastopen на входящих и исходящих соединениях» .
Библиография
[ редактировать ]- Рыбчинская, Марта (13 марта 2020 г.). «Быстрый взгляд на HTTP/3» . LWN.net .
- Да, Эрик; Мюллер, Тобиас; Буркерт, Кристиан; Федеррат, Ханнес; Фишер, Матиас (2020). «Повышенная производительность и конфиденциальность для TLS через TCP Fast Open» . Труды по технологиям повышения конфиденциальности . 2020 (2): 271–287. arXiv : 1905.03518 . дои : 10.2478/popets-2020-0027 .