В компьютерных сетях TCP Fast Open ( TFO ) - это расширение для ускорения открытия последовательных соединений протокола управления передачей (TCP) между двумя конечными точками. Он работает с использованием файла cookie TFO (опция TCP), который представляет собой криптографический файл cookie, который хранится на клиенте и устанавливается при первоначальном соединении с сервером. [1] Когда клиент позже повторно подключается, он отправляет начальный SYN-пакет вместе с данными cookie TFO для аутентификации. В случае успеха сервер может начать отправку данных клиенту даже до приема последнего пакета ACK трехстороннего рукопожатия, таким образом пропуская задержку приема-передачи и снижая задержку в начале передачи данных.
Файл cookie создается путем применения блочного шифра с ключом, хранящегося в секрете сервером, к клиенту, генерируя тег аутентификации, который третьим лицам трудно подделать, даже если они могут подделать исходный IP-адрес или установить двусторонние соединения. на тот же сервер с других IP-адресов. Хотя TFO использует криптографические методы для создания файла cookie, он не предназначен для обеспечения большей безопасности, чем заменяемое им трехстороннее рукопожатие, и не обеспечивает какой-либо криптографической защиты результирующего TCP-соединения и не обеспечивает гарантии идентичности для любой конечной точки. Он также не предназначен для защиты от атак «злоумышленник посередине» . Если требуется такое сопротивление, его можно использовать в сочетании с криптографическим протоколом, таким как TLS.или IPsec .
История [ править ]
Предложение TFO было первоначально представлено в 2011 году [2] и было опубликовано как экспериментальный RFC 7413 в декабре 2014 года. [3] TCP Fast Open разделяет цель обхода трехстороннего подтверждения TCP с более ранним предложением 1994 года, названным T / TCP (RFC 1644). В отличие от TCP Fast Open, T / TCP не уделял внимания безопасности [3], открывая путь для уязвимостей и не имея возможности набрать обороты.
Характеристики [ править ]
Реализации TFO включают следующее:
- Поддержка IPv4 для TFO была объединена с основной веткой ядра Linux в версиях ядра 3.6 (поддержка клиентов) и 3.7 (декабрь 2012 г.) (поддержка серверов), [4] [5] и была включена по умолчанию в версии ядра 3.13 (январь 2014). [6] Поддержка TFO для серверов IPv6 была добавлена в ядро версии 3.16. [7]
- FreeBSD начиная с версии 10.3 [8] (поддержка серверов) и 12.0 [9] [10] (поддержка клиентов).
- Mozilla Firefox версии 58. [11] Поддержка была отключена по умолчанию из-за проблем совместимости сетевых устройств с TFO и TLS 1.3 [12] и в конечном итоге удалена в версии 87. [13]
- Браузеры Google Chrome и Chromium поддерживают TFO в Linux , включая Chrome OS и Android .
- Агент передачи почты Exim (MTA), начиная с версии 4.88. [14]
- Несвязанный DNS Resolver, начиная с версии 1.5.10 [15]
- BIND Domain Name System (DNS), начиная с версии 9.11.0. [16]
- Узел DNS с версии 2.6.0 [17]
- Яблоко «s IOS 9 и OS X 10,11 и поддержка TCP Fast Open, но она не включена для отдельных соединений по умолчанию. [18]
- Microsoft Edge поддерживает TCP Fast Open, начиная с Windows 10 Preview build 14352. [19]
- Рекурсор PowerDNS поддерживает TCP Fast Open начиная с версии 4.1. [20]
- dnsmasq будет поддерживать TCP-fastopen (RFC-7413) в следующей версии 2.81. [21]
См. Также [ править ]
- SPDY
- SYN файлы cookie
- Транзакции TCP Cookie
Ссылки [ править ]
- ^ Керриск, Майкл (2012-08-01). «TCP Fast Open: ускорение работы веб-служб» . LWN.net .
- Перейти ↑ Radhakrishnan S, Cheng Y, Chu J, Jain A, Raghavan B (2011-12-06). «TCP Fast Open» (PDF) . ACM CONEXT.
- ^ a b Yuchung Cheng; Джерри Чу; Шивасанкар Радхакришнан и Арвинд Джайн (декабрь 2014 г.). «TCP Fast Open» . IETF . Проверено 10 января 2015 года .
- ^ Керриск, Майкл (2012-08-01). «TCP Fast Open: ускорение работы веб-служб» . LWN.net.
Поддержка на стороне клиента была объединена для Linux 3.6.
- Перейти ↑ Vaughan-Nichols, Steven J (2012-12-11). «Прибывает Linux 3.7, радуются разработчики ARM» . Linux и открытый исходный код . ZDNet.
Linux 3.7.
TCP Fast Open теперь будет поддерживаться на серверах
- ^ «Ядро Linux 3.13, раздел 1.10. TCP Fast Open включен по умолчанию» . kernelnewbies.org . 19 января 2014 . Проверено 11 февраля 2014 .
- ^ «Linux Kernel 3.16, раздел 1.4. TCP Fast Open server mode с поддержкой IPv6» . kernelnewbies.org . 3 августа 2014 . Проверено 14 сентября 2014 года .
- ^ «Реализация серверного TCP Fast Open (TFO) [RFC7413]: MFC в стабильную ветку / 10» . 2015-12-28.
- ^ «Это реализация клиентской части TCP Fast Open (TFO) [RFC7413]» . 2018-02-26.
- ^ "Включить TCP_FASTOPEN по умолчанию для FreeBSD 12" . 2018-06-24.
- ^ «1188435 - Поддержка TCP Fast Open» . 2017-05-05.
- ^ «1398201 - Отключить TCP Fast Open для 57» . 2017-09-10.
- ^ «1689604 - Удалить TCP FastOpen» . 2021-03-23.
- ^ "Exim 4.88 выпущен" . 2016-12-25.
- ^ "Несвязанный 1.5.10" . Проверено 5 декабря 2017 .
- ^ «Примечания к выпуску для BIND версии 9.11.0» . 2016-10-05.
- ^ "Узел DNS 2.6.0" . 2017-09-29.
- ^ «Ваше приложение и сети нового поколения» . Apple Inc., 2015 г.
- ^ «Windows 10 build 14352 - Новые возможности веб-платформы» . Microsoft . Проверено 27 мая 2016 .
- ^ "Изменения для 4.1.x" . PowerDNS. 2017-12-04.
- ^ Келли, Саймон (2019-03-10). «Поддержка TCP fastopen для входящих и исходящих соединений» .
Внешние ссылки [ править ]
- RFC 7413 спецификация