Где хранится эта информация («это соединение между компьютером A
и сервером F
»)?
TCP-соединение распознается по исходному IP-адресу и порту, а также по IP-адресу и порту назначения. Ваша ОС, все промежуточные устройства, поддерживающие сеанс, и ОС сервера распознают это соединение.
HTTP работает с запросом-ответом: клиент подключается к серверу, выполняет запрос и получает ответ. Без поддержки активности соединение с HTTP-сервером закрывается после каждого ответа. С HTTP keep-alive вы держите базовое TCP-соединение открытым до тех пор, пока не будут выполнены определенные критерии.
Это позволяет использовать несколько пар запрос-ответ по одному TCP-соединению, устраняя некоторые из относительно медленных запусков TCP-соединения.
Когда IIS (F) отправляет заголовок keep alive (или пользователь отправляет keep-alive), означает ли это, что (E, C, B) сохраняют соединение
Нет. Маршрутизаторам не нужно запоминать сеансы. Фактически, несколько пакетов TCP, принадлежащих к одному сеансу TCP, не обязательно должны проходить через одни и те же маршрутизаторы - это необходимо для управления TCP. Маршрутизаторы просто выбирают лучший IP-путь и пересылают пакеты. Keep-alive используется только для клиента, сервера и любых других промежуточных устройств, поддерживающих сеанс.
что только для моей сессии?
Означает ли это, что никто другой не может использовать это соединение
Это предназначение TCP-соединений : это сквозное соединение, предназначенное только для этих двух сторон.
Если да - значит ли это, что keep alive-header - уменьшить количество пользователей с перекрывающимся подключением?
Определите «перекрывающиеся соединения». См. Постоянное соединение HTTP, чтобы узнать о некоторых преимуществах и недостатках, например:
- Снижение использования ЦП и памяти (поскольку одновременно открыто меньше соединений).
- Включает конвейерную обработку запросов и ответов HTTP.
- Уменьшение перегрузки сети (меньше TCP-соединений).
- Уменьшена задержка при последующих запросах (без квитирования).
если да, то как долго сохраняется соединение со мной? (другими словами, если я установлю keep alive - «держать» до какого момента?)
Типичный ответ keep-alive выглядит так:
Keep-Alive: timeout=15, max=100
См., Например, заголовок Keep-Alive протокола передачи гипертекста (HTTP) (черновик для HTTP / 2, где заголовок keep-alive объяснен более подробно, чем 2616 и 2086 ):
Хост устанавливает значение timeout
параметра равным времени, в течение которого хост позволяет незанятому соединению оставаться открытым, прежде чем оно будет закрыто. Соединение бездействует, если хост не отправляет и не принимает данные.
max
Параметр указывает максимальное количество запросов , которые клиент будет делать, или что сервер позволит сделать на постоянной связи. После отправки указанного количества запросов и ответов хост, включивший параметр, может закрыть соединение.
Однако сервер может закрыть соединение после произвольного времени или количества запросов (до тех пор, пока он возвращает ответ на текущий запрос). Как это реализовано, зависит от вашего HTTP-сервера.