← Cloudflare Fundamentals / fundamentals / reference
TCP-соединения
В этом разделе объясняется, как Cloudflare эффективно направляет трафик с помощью anycast маршрутизации и выступает посредником между пользователями и исходными серверами. Во второй части рассматриваются TCP-соединения и keep-alive для оптимизации производительности, а также TCP Fast Open (TFO), расширение протокола, повышающее скорость установления TCP-соединений.
Как Cloudflare соединяет пользователя с источником
Пользователи подключаются к Cloudflare, отправляя запросы со своих устройств в глобальную сеть Cloudflare. Cloudflare соединяется с исходным сервером, выступая посредником между пользователем и источником.
flowchart LR
accTitle: Connections with Cloudflare
A[Visitor] <-- Connection --> B[Cloudflare global network] <-- Connection --> C[Origin server]
Трафик пользователя направляется в ближайший дата-центр Cloudflare на основе кратчайшего Протокол граничных шлюзов ↗ (BGP) маршрут, благодаря anycast ↗ маршрутизацию. Затем Cloudflare обрабатывает запрос. Если запрос не может быть обслужен из дата-центров Cloudflare, Cloudflare откроет соединение с исходным сервером, чтобы переслать запрос дальше.
TCP-соединения и keep-alive
HTTP (Hypertext Transfer Protocol) представляет собой Уровень 7 ↗ прикладной протокол, работающий поверх TCP. По умолчанию HTTP открывает новое TCP-соединение для каждого цикла запрос-ответ, что может снижать производительность из-за постоянного установления и разрыва соединений.
Keep-Alive представляет собой механизм, который связывает TCP и HTTP и позволяет одному TCP-соединению оставаться открытым для нескольких HTTP-запросов и ответов. Это снижает накладные расходы на соединение и задержку, связанные с установлением нового TCP-соединения для каждого веб-ресурса. Keep-Alive повышает эффективность и отзывчивость веб-приложений, поскольку способствует повторному использованию существующих соединений, снижает сетевой трафик и улучшает пользовательский опыт.
TCP-соединения могут оставаться открытыми даже после завершения HTTP-запросов. Однако для эффективного использования ресурсов простаивающие соединения обычно закрываются после определённого периода бездействия. Чтобы повысить повторное использование соединений и снизить накладные расходы на их установление, применяется механизм keep-alive. В совокупности эти механизмы повышают производительность и надёжность веб-приложений, экономя сетевые ресурсы.
Если пользователь или исходный сервер не отвечает на два запроса keep-alive, Cloudflare разрывает соединение, отправляя пакет TCP Reset (RST).
Для подключений к пользователям у Cloudflare по умолчанию установлен тайм-аут простоя 400 секунд. По истечении 400 секунд Cloudflare начинает отправлять keep-alive-пробы каждые 75 секунд. Если девять проб подряд остаются без ответа, Cloudflare разрывает соединение, отправляя пакет RST.
Для клиентов тарифа Enterprise доступна индивидуальная настройка параметров TCP-соединения между пользователем и Cloudflare, а также между Cloudflare и источником. Подробности уточняйте у команды по работе с вашим аккаунтом.
TCP Fast Open (TFO)
TCP Fast Open ↗ (TFO): расширение протокола, которое существенно ускоряет установление TCP-соединений, поскольку данные передаются уже в первом пакете SYN и отдельный этап согласования перед началом передачи не требуется. TFO снижает задержки и повышает производительность сайтов и приложений, особенно в сетях с высокой задержкой. Cloudflare поддерживает TFO для пользовательских соединений.
Когда клиент инициирует соединение с веб-сервером, защищенным Cloudflare, он отправляет TCP-пакет SYN с запросом на соединение. Cloudflare, выступая в роли обратного прокси, перехватывает пакет SYN и отвечает пакетом SYN-ACK для установления соединения. При включенном TFO Cloudflare может также отправить исходные данные (например, данные HTTP-запроса) в пакете SYN-ACK, что избавляет от необходимости в дополнительном цикле обмена для передачи данных. Клиент получает пакет SYN-ACK с данными и подтверждает его пакетом ACK. Это ускоряет установку соединения.