Роутеры – это устройства, позволяющие пользоваться интернетом неограниченному количеству устройств, поддерживающих сеть Wi-fi или проводное соединение. Роутеры в наше время очень популярны, но беда состоит в том, что неопытному человеку сложно разобраться в настройках, а пользоваться ими зачастую необходимо. Наиболее частые вопросы возникают о режиме keep alive.
Для чего нужен keep alive в роутере
Режим keep alive – это набор алгоритмов, который позволяет удерживать соединение между базой и периферийным устройством. Его ещё называют «Постоянным HTTP-соединением». При включённом режиме используется постоянное соединение, и при возникновении неполадок на одном из участков сети (например, перегрузке) работающее устройство продолжает отправлять многократные запросы вместо создания новых пар цепей. Это значительно разгружает систему и уменьшает время отклика.
Формируется keep alive в виде дополнительной подписи в запросе. В связи с тем, что новый протокол для обеспечения этой функции не создаётся, официальной спецификации настройка не требует. Данная подпись появляется не только во входном сообщении, но и в ответном.
Преимущества такой функции:
- Снижение нагрузки на оперативную память;
- Возможность использования ускоренной обработки данных по принципу конвейера.
- Вероятность сетевого сбоя значительно ниже.
- При наличии ошибок в протоколах они исправляются самостоятельно.
- Налаживание работы происходит прямо во время сессии соединения.
Такой режим обязательно нужен в качестве «страховки» при нестабильном соединении.
Как настроить keep alive в роутере
Сперва необходимо узнать IP-адрес роутера. Для этого достаточно войти в режим поиска «Пуск» и написать cmd, нажать Enter. Откроется командная строка. Теперь осталось ввести ipconfig и снова нажать Ввод. Пользователю представится адрес в виде цифр «000.000.0.0».
Для получения доступа к интерфейсу настроек роутера нужно ввести в адресной строке браузера цифры, полученные из командной строки. На экране отобразится два поля – имя пользователя и пароль. Логин всегда один и тот же – admin, а пароль либо напечатан на дне коробочки самого роутера, либо был изменён пользователем. Вводить нужно актуальный пароль на данный момент.
После того как перед пользователем предстал интерфейс, ему осталось проследовать по пути:
«Сеть» — «Соединение» — «Параметры» — «Настройки PPP» — отметить галочкой keep alive.
Сохранить изменения и выйти из системы.
Keep alive — это функция, которая позволяет роутеру поддерживать постоянное соединение с другими сетевыми устройствами. Она основана на отправке периодических сигналов в сеть, чтобы подтвердить активность и готовность устройства к обмену данными. В этой статье мы рассмотрим принцип работы keep alive на роутере и объясним его важность для стабильной работы сети.
Keep alive может быть настроен на роутере или другом устройстве сети. Когда устройство отправляет сигнал keep alive в сеть, оно ожидает ответного сигнала от другого устройства. Если ответный сигнал не поступает в течение определенного времени, устройство считает, что соединение с другим устройством нарушено или устройство недоступно. В таком случае, роутер может предпринять дополнительные действия, например, перезапустить соединение или отправить уведомление о проблеме администратору сети.
Важность функции keep alive заключается в том, что она позволяет оперативно обнаружить неполадки в сети. Если устройство не отправляет периодические сигналы keep alive, другие устройства могут считать его недоступным, что может привести к потере связи и проблемам с обменом данными. Keep alive помогает поддерживать стабильность и надежность сети, особенно в условиях высокой нагрузки или при использовании WAN-соединений.
Содержание
- Принцип работы и важность keep alive на роутере
- Зачем нужен keep alive?
- Работа keep alive на роутере
- Важность keep alive
Принцип работы и важность keep alive на роутере
Принцип работы keep alive заключается в том, что роутер периодически отправляет специальные сигналы, называемые keep alive пакетами, на подключенные устройства. Если устройство получает пакет, оно отправляет обратный сигнал, подтверждающий свою активность. Если в течение определенного времени устройство не получает keep alive пакетов или не отвечает на них, роутер считает его недоступным и отключает соединение.
Keep alive играет важную роль в обеспечении надежности сети. Он позволяет роутеру контролировать состояние подключенных устройств и своевременно реагировать на возможные проблемы. Если устройство перестает отвечать или пропадает из сети, роутер может автоматически перезагрузить соединение или перенаправить трафик на другое устройство.
Кроме того, keep alive помогает оптимизировать использование ресурсов сети. Постоянное соединение позволяет избежать необходимости повторного установления соединения при каждом запросе, что снижает нагрузку на сеть и увеличивает скорость передачи данных.
Важность keep alive на роутере несомненна. Он обеспечивает стабильное и надежное соединение между устройствами, повышает эффективность использования сетевых ресурсов и улучшает общую производительность сети. Без keep alive могут возникать проблемы с подключением и передачей данных, что может привести к сбоям и потере информации.
Зачем нужен keep alive?
Благодаря keep alive роутер и сервер могут обмениваться сигналами подтверждения активности и поддерживать соединение открытым даже при отсутствии активности с клиентской стороны. Это позволяет снизить время задержки при последующих запросах и ускорить работу сети в целом.
Функция keep alive особенно полезна в ситуациях, когда передача данных между клиентом и сервером происходит в режиме реального времени, таких как видеозвонки или онлайн-игры. Благодаря постоянному поддержанию соединения, пользователь может получать данные без каких-либо задержек, а качество связи остается стабильным.
Кроме того, keep alive позволяет сэкономить энергию устройствам, так как они не будут периодически устанавливать новые соединения и регистрироваться на сервере. Это особенно актуально для мобильных устройств, так как позволяет продлить время работы батареи.
Таким образом, функция keep alive играет важную роль в поддержании стабильного и непрерывного соединения между клиентами и серверами. Она обеспечивает быструю передачу данных, экономику времени и энергии, а также улучшает качество связи в режиме реального времени.
Работа keep alive на роутере
Основной принцип работы keep alive заключается в отправке периодических сигналов от роутера к устройствам в сети для подтверждения их активности. Если устройство не отвечает на эти сигналы в течение определенного времени, роутер будет считать его недоступным и может принять соответствующие меры, такие как перезагрузка или отключение соединения.
Keep alive помогает предотвратить разрыв соединения между устройствами, особенно в случаях, когда сеть имеет высокую нагрузку или нестабильное качество соединения. Благодаря этой функции роутер может автоматически обнаруживать и устранять проблемы, связанные с соединением, что повышает надежность работы всей сети.
Keep alive также может использоваться для оптимизации работы сети. Например, если соединение с определенным устройством оказывается более медленным или нестабильным, роутер может использовать keep alive, чтобы проверить доступность других альтернативных путей и переключиться на более надежное соединение.
Преимущества использования keep alive на роутере: |
---|
• Поддержание стабильного и надежного соединения между устройствами |
• Автоматическое обнаружение и устранение проблем соединения |
• Оптимизация работы сети и поиск альтернативных путей |
• Предотвращение разрыва соединения в условиях высокой нагрузки |
В целом, работа keep alive на роутере является важным аспектом для обеспечения стабильного и надежного функционирования сети. Она помогает улучшить качество соединения, повысить эффективность работы и обеспечить непрерывную связь между устройствами.
Важность keep alive
Keep alive позволяет избежать задержек, связанных с установкой и разрывом соединений, и значительно сокращает нагрузку на сервер. Он также улучшает пользовательский опыт, ускоряя передачу данных и уменьшая время ожидания загрузки страницы.
Преимущества использования keep alive:
- Ускорение загрузки страницы: за счет отсутствия необходимости устанавливать новое соединение при каждом запросе, время загрузки страницы сокращается, что особенно важно при передаче больших объемов данных.
- Сокращение нагрузки на сервер: благодаря установлению одного соединения, серверу не приходится заниматься открытием и закрытием новых соединений для каждого запроса пользователя, что позволяет более эффективно использовать ресурсы сервера и обслуживать большее количество клиентов.
- Поддержание активного соединения: keep alive позволяет хранить соединение открытым в течение определенного времени, что полезно для приложений, требующих постоянного взаимодействия между клиентом и сервером, например, для обновления данных в режиме реального времени.
- Снижение нагрузки на сеть: благодаря уменьшению числа установленных соединений, используется меньше сетевых ресурсов, а это положительно сказывается на производительности и эффективности сети в целом.
Использование функции keep alive является важным аспектом оптимизации работы сети и обеспечения быстрого и эффективного взаимодействия между клиентом и сервером. Она позволяет снизить нагрузку на сервер, ускорить загрузку страницы и повысить удовлетворенность пользователей.
From Wikipedia, the free encyclopedia
A keepalive (KA) is a message sent by one device to another to check that the link between the two is operating, or to prevent the link from being broken.
Description[edit]
Once a TCP connection has been established, that connection is defined to be valid until one side closes it. Once the connection has entered the connected state, it will remain connected indefinitely. But, in reality, the connection will not last indefinitely. Many firewall or NAT systems will close a connection if there has been no activity in some time period. The Keep Alive signal can be used to trick intermediate hosts to not close the connection due to inactivity. It is also possible that one host is no longer listening (e.g. application or system crash). In this case, the connection is closed, but no FIN
was ever sent. In this case, a KeepAlive packet can be used to interrogate a connection to check if it is still intact.
A keepalive signal is often sent at predefined intervals, and plays an important role on the Internet. After a signal is sent, if no reply is received, the link is assumed to be down and future data will be routed via another path until the link is up again. A keepalive signal can also be used to indicate to Internet infrastructure that the connection should be preserved. Without a keepalive signal, intermediate NAT-enabled routers can drop the connection after timeout.
Since the only purpose is to find links that do not work or to indicate connections that should be preserved, keepalive messages tend to be short and not take much bandwidth. However, their precise format and usage terms depend on the communication protocol.
TCP keepalive[edit]
Transmission Control Protocol (TCP) keepalives are an optional feature, and if included must default to off.[1] The keepalive packet contains no data. In an Ethernet network, this results in frames of minimum size (64 bytes[2]). There are three parameters[3] related to keepalive:
- Keepalive time is the duration between two keepalive transmissions in idle condition. TCP keepalive period is required to be configurable and by default is set to no less than 2 hours.
- Keepalive interval is the duration between two successive keepalive retransmissions, if acknowledgement to the previous keepalive transmission is not received.
- Keepalive retry is the number of retransmissions to be carried out before declaring that remote end is not available
When two hosts are connected over a network via TCP/IP, TCP Keepalive Packets can be used to determine if the connection is still valid, and terminate it if needed.
Most hosts that support TCP also support TCP Keepalive. Each host (or peer) periodically sends a TCP packet to its peer which solicits a response. If a certain number of keepalives are sent and no response (ACK) is received, the sending host will terminate the connection from its end.
If a connection has been terminated due to a TCP Keepalive time-out and the other host eventually sends a packet for the old connection, the host that terminated the connection will send a packet with the RST flag set to signal the other host that the old connection is no longer active. This will force the other host to terminate its end of the connection so a new connection can be established.
Typically, TCP Keepalives are sent every 45 or 60 seconds on an idle TCP connection, and the connection is dropped after 3 sequential ACKs are missed. This varies by host, e.g. by default, Windows PCs send the first TCP Keepalive packet after 7200000ms (2 hours), then send 5 Keepalives at 1000ms intervals, dropping the connection if there is no response to any of the Keepalive packets.
Keepalive on higher layers[edit]
Since TCP keepalive is optional, various protocols (e.g.
SMB[4]
and TLS[5])
implement their own keep-alive feature on top of TCP. It is also common for protocols which maintain a session over a connectionless protocol, e.g. OpenVPN over UDP,[6] to implement their own keep-alive.
Other uses[edit]
HTTP keepalive[edit]
The Hypertext Transfer Protocol uses the keyword «Keep-Alive» in the
«Connection» header to signal that the connection should be kept open
for further messages (this is the default in HTTP 1.1, but in HTTP 1.0
the default was to use a new connection for each request/reply pair).[7]
Despite the similar name, this function is entirely unrelated.
Other devices[edit]
«Keep-alive» devices are used in automotive repair to maintain battery voltage for devices in the vehicle when the battery is disconnected or changed, usually by plugging in a small battery to the vehicle’s 12 volt power outlet. A typical application is preventing the vehicle’s radio or other device from going to «code» mode (security lockout) during vehicle repair. Typically, a lower voltage source, such as a 9-volt battery, is sufficient for the purpose.
Electric clocks often have battery-powered keep-alive circuits to maintain time and other settings during a power outage. Some electronic devices use a capacitor circuit to maintain volatile memory when the user changes the battery.
See also[edit]
- Switch
- Watchdog timer
- Hole punching
- UDP hole punching
- Warrant canary
References[edit]
- ^ Braden, Robert T. (October 1989). Braden, R. (ed.). «Requirements for Internet Hosts — Communication Layers». IETF. doi:10.17487/RFC1122. Retrieved November 8, 2013.
- ^ IEEE Standard for Ethernet. IEEE Standard for Ethernet, 802.3-2015 – section one. 2016. p. 108. doi:10.1109/IEEESTD.2016.7428776. ISBN 978-1-5044-0078-7.
- ^ «Using TCP keepalive under Linux». tldp.org. Retrieved 2016-07-29.
- ^ «Protocol Standard for a NetBIOS Service on a TCP/UDP Transport: Concepts and Methods». IETF. March 1987. doi:10.17487/RFC1001. Retrieved June 18, 2015.
- ^ Williams, Michael; Tüxen, Michael; Seggelmann, Robin (February 2012). «Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) Heartbeat Extension». IETF. doi:10.17487/RFC6520. Retrieved June 18, 2015.
- ^ «OpenVPN manual page». Retrieved June 18, 2015.
- ^ «HTTP Keep Alive discourse by Jim Driscoll». Archived from the original on 2010-08-13.
Keep alive – это механизм поддержания активности IPsec-соединения, который помогает избежать разрыва соединения и повышает надежность обмена данными между удаленными сетевыми устройствами. В данной статье мы рассмотрим лучшие практики настройки keep alive в IPsec на оборудовании MikroTik.
Что такое keep alive в IPsec?
Keep alive, или механизм поддержания активности, используется для определения того, что IPsec-соединение все еще активно. Если удаленная сторона не ответила на keep alive-пакеты в течение определенного времени, то локальное устройство считает соединение потерянным и может завершить его. Это помогает предотвратить потерю соединения и возможные проблемы с обменом данными.
Примечание: Оптимальная настройка keep alive зависит от конкретных условий сети и требует учета факторов, таких как скорость соединения и степень нагрузки на сеть.
Лучшие практики настройки keep alive в IPsec на MikroTik
1. Выбор оптимального интервала keep alive. Определите оптимальное время между отправкой keep alive-пакетов на основе ваших требований и условий сети. Слишком короткий интервал может привести к излишней нагрузке на сеть, а слишком длинный – к задержкам при обнаружении потери соединения.
2. Настройка таймаута. Задайте определенное время, по истечении которого удаленное устройство считается недоступным. Это поможет быстрее обнаружить разрыв соединения и переключиться на другой маршрут или уведомить администратора сети.
3. Установка приоритета keep alive-пакетам. Определите приоритет keep alive-пакетам, чтобы убедиться, что они имеют высший приоритет перед другими пакетами, пересылаемыми по IPsec-соединению. Это поможет предотвратить задержки в обработке пакетов и повысит надежность соединения.
Следуя этим лучшим практикам, вы сможете настроить keep alive в IPsec на устройствах MikroTik таким образом, чтобы обеспечить стабильное и надежное соединение между удаленными сетями.
Содержание
- Настройка keep alive в IPsec на Mikrotik: что это такое?
- Keep alive в IPsec на Mikrotik: преимущества и настройка
- Keep alive в IPsec на Mikrotik: базовые настройки
- Keep alive в IPsec на Mikrotik: настройка через GUI
- Настройка keep alive в IPsec на Mikrotik: настройка через CLI
Настройка keep alive в IPsec на Mikrotik: что это такое?
Keep alive используется для поддержания IPsec туннеля открытым и готовым для передачи данных. Когда IPsec туннель установлен между двумя устройствами, они периодически отправляют keep alive сообщения друг другу. Если одно из устройств перестает получать keep alive сообщения в течение определенного времени, оно считает, что соединение прервано и может попытаться перезапустить туннель.
Настройка keep alive в IPsec на Mikrotik позволяет снизить задержку при восстановлении соединения после его прерывания. Также это позволяет обнаружить проблемы в сети раньше и принять меры для их устранения.
Keep alive сообщения могут быть настроены с разными временными интервалами. Чем короче интервал, тем быстрее будут обнаружены проблемы соединения, но тем больше трафика будет использоваться для отправки keep alive сообщений.
Настройка keep alive в IPsec на Mikrotik осуществляется через настройки IPsec туннеля. Вы можете указать интервал отсылки keep alive сообщений, а также количество неответов на keep alive сообщения, после которого туннель будет перезапущен.
Важно правильно настроить keep alive в IPsec на Mikrotik, чтобы обеспечить надежность и стабильность соединения между устройствами в сети.
Keep alive в IPsec на Mikrotik: преимущества и настройка
Протокол IPsec (Internet Protocol Security) широко используется в сетевых средах для обеспечения безопасности данных при передаче через открытые сети. При настройке IPsec-туннеля на устройствах Mikrotik может возникнуть проблема разрыва связи между туннелями из-за различных факторов, таких как проблемы с сетью или перегрузка устройств. Для того чтобы предотвратить разрыв IPsec-туннеля, можно использовать механизм keep alive, который позволяет системе автоматически устанавливать соединение или переподключаться в случае разрыва связи.
Keep alive – это механизм, который позволяет мониторить состояние IPsec-туннеля и уведомлять об изменении статуса связи. Mikrotik поддерживает несколько вариантов настройки keep alive-пакетов, таких как no keep alive (без использования keep alive-пакетов), демонстрация keep alive (использование keep alive-пакетов только для индикации соединения) и собственно keep alive (активная отправка keep alive-пакетов и обработка их на стороне удаленного устройства).
Настройка keep alive в IPsec на Mikrotik может помочь пользователю предотвратить разрывы связи и улучшить стабильность работы сети. Вы можете настроить keep alive на каждом устройстве Mikrotik, участвующем в IPsec-туннеле, чтобы обеспечить непрерывный доступ к удаленной сети.
Настройка keep alive в IPsec на Mikrotik требует задания следующих параметров:
- Время ожидания отправки последнего keep alive-пакета (idle timeout) – если на протяжении этого времени устройство не обнаруживает активности со стороны удаленной стороны, то оно будет считать соединение разорванным и начнет переподключение.
- Интервал отправки keep alive-пакетов (interval) – время между отправкой каждого keep alive-пакета.
- Количество неотвеченных keep alive-пакетов (count) – количество keep alive-пакетов, которые устройство должно получить без ответа, прежде чем оно считает связь потерянной.
Настройка keep alive в IPsec на Mikrotik – важный аспект обеспечения надежной сети и связности между удаленными узлами. Используя правильные параметры keep alive, можно значительно улучшить стабильность и надежность IPsec-туннеля на устройствах Mikrotik.
Keep alive в IPsec на Mikrotik: базовые настройки
Для настройки keep alive в IPsec на Mikrotik необходимо выполнить следующие шаги:
- Откройте консоль маршрутизатора Mikrotik и перейдите в раздел IP > IPsec.
- Выберите вкладку «Peer» и найдите соответствующее соединение VPN, для которого необходимо включить keep alive.
- Откройте настройки этого соединения и найдите раздел «Advanced».
- Включите опцию «Send Keepalive» и установите интервал между отправкой keep alive пакетов.
- Сохраните изменения и перезагрузите маршрутизатор, чтобы применить настройки.
При правильной настройке keep alive в IPsec на Mikrotik, удаленный узел будет регулярно получать специальные keep alive пакеты от вашего маршрутизатора. Если удаленный узел в течение определенного интервала не будет получать эти пакеты, он будет считать ваш маршрутизатор недоступным и прекратит передачу данных.
Keep alive в IPsec на Mikrotik — это важная функция, которая помогает поддерживать стабильное и надежное соединение между двумя узлами VPN. Убедитесь, что вы правильно настроили keep alive для всех своих соединений, чтобы избежать потери данных и проблем с подключением.
Keep alive в IPsec на Mikrotik: настройка через GUI
Функция keep alive в IPsec на Mikrotik позволяет обеспечить непрерывную связь между устройствами в туннеле, проверяя активность соединения и перезапуская его в случае разрыва. Настройка keep alive можно сделать с использованием графического интерфейса Mikrotik, что позволяет сэкономить время и упростить процесс.
Для начала необходимо зайти в меню IP -> IPsec -> Policies и выбрать нужное правило IPsec. Затем перейдите на вкладку «Advanced» и найдите опцию «Dpd Action». В этом поле можно выбрать действие, которое будет выполняться в случае обнаружения разрыва соединения.
В поле «Dpd Interval» можно указать интервал проверки активности соединения в секундах. Рекомендуется выбирать значение в диапазоне от 10 до 60 секунд. Более частая проверка может снизить производительность сети.
Опция «Dpd Timeout» позволяет указать время, после которого соединение будет считаться разорванным, если не было обнаружено активности. Значение по умолчанию составляет 10 секунд.
Дополнительно можно настроить опцию «Ping Count», указывающую количество ICMP-запросов, отправляемых в случае проверки активности соединения. Значение по умолчанию составляет 5 запросов.
После настройки всех параметров можно сохранить изменения и проверить работу keep alive: активность соединения будет отображаться в статусе правила IPsec. В случае обнаружения разрыва соединения, Mikrotik автоматически перезапустит его в соответствии с настройками.
Настройка keep alive в IPsec на Mikrotik: настройка через CLI
Шаг 1: Подключитесь к устройству Mikrotik через консоль или SSH.
Шаг 2: Введите следующую команду, чтобы перейти в режим настройки IPsec:
/ip ipsec
Шаг 3: Выберите нужное соединение IPsec, в котором хотите настроить keep alive. Например, для соединения с именем «vpn-connection», введите следующую команду:
proposal add name=vpn-connection
Шаг 4: Введите следующую команду, чтобы настроить keep alive на выбранном соединении:
set vpn-connection keepalive-action restart
Шаг 5: Установите интервал отправки живого сигнала (keep alive) в секундах. Например, для отправки сигнала каждые 60 секунд, введите следующую команду:
set vpn-connection keepalive-timeout=60
Шаг 6: Сохраните изменения, введя следующую команду:
save
Это все! Теперь keep alive в IPsec на Mikrotik настроен через командную строку. Эта функция будет автоматически обнаруживать проблемы соединения и перезапускать его при необходимости, что повышает стабильность и надежность вашей VPN-связи.
HTTP Keep-Alive
В первые дни http каждый http-запрос требовал открыть соединение через сокет tpc, а затем отключить соединение tcp после его однократного использования.
Использование keep-alive может улучшить это состояние, то есть можно непрерывно отправлять несколько данных без отключения по TCP-соединению. Используя механизм keep-alive, количество соединений TCP-соединений может быть уменьшено, что также означает, что состояние соединения TIME_WAIT может быть уменьшено, что повышает производительность и повышает пропускную способность сервера httpd (меньшее количество соединений tcp означает меньшее количество вызовов ядра системы, сокетов Принять () и закрыть () вызовы).
Тем не менее,keep-aliveЭто не бесплатный обед. Длинные TCP-соединения могут легко привести к неэффективному использованию системных ресурсов. Неправильно настроенная поддержка активности может иногда стоить дороже, чем повторное использование соединений. Поэтому важно правильно установить время ожидания активности.
keepalvie timeout
Демон Httpd обычно предоставляет параметр установки времени ожидания активности. Например, keepinlive_timeout для nginx и KeepAliveTimeout для Apache. Это значение времени keepalive_timout означает, что TCP-соединение, сгенерированное http, должно удерживать секунду keepalive_timeout после передачи последнего ответа, прежде чем оно начнет закрывать соединение.
Когда демон httpd заканчивает отправку ответа, он должен немедленно предпринять попытку закрыть соответствующее TCP-соединение. После установки keepalive_timeout демон httpd захочет сказать: «Подождите немного и посмотрите, запросил ли браузер его». Это время keepalive_timeout. Если демон не получает запрос http от браузера в течение этого времени ожидания, соединение http закрывается.
Напишите скрипт ниже для удобного тестирования:
sleep (60); // Чтобы облегчить анализ и тестирование, оно будет настроено в соответствии с тестом
echo "www.example.com";
1. Когда время keepalive_timeout равно 0, то есть когда Keep-Alive не включен, жизненный цикл TCP-соединения:
#tcpdump -n host 218.1.57.236 and port 80 20:36:50.792731 IP 218.1.57.236.43052 > 222.73.211.215.http: S 1520902589:1520902589(0) win 65535 20:36:50.792798 IP 222.73.211.215.http > 218.1.57.236.43052: S 290378256:290378256(0) ack 1520902590 win 5840 20:36:50.801629 IP 218.1.57.236.43052 > 222.73.211.215.http: . ack 1 win 32768 20:36:50.801838 IP 218.1.57.236.43052 > 222.73.211.215.http: P 1:797(796) ack 1 win 32768 20:36:50.801843 IP 222.73.211.215.http > 218.1.57.236.43052: . ack 797 win 59 20:37:50.803230 IP 222.73.211.215.http > 218.1.57.236.43052: P 1:287(286) ack 797 win 59 20:37:50.803289 IP 222.73.211.215.http > 218.1.57.236.43052: F 287:287(0) ack 797 win 59 20:37:50.893396 IP 218.1.57.236.43052 > 222.73.211.215.http: . ack 288 win 32625 20:37:50.894249 IP 218.1.57.236.43052 > 222.73.211.215.http: F 797:797(0) ack 288 win 32625 20:37:50.894252 IP 222.73.211.215.http > 218.1.57.236.43052: . ack 798 win 59
- Строки 1–3 устанавливают трехстороннее рукопожатие TCP и устанавливают соединение. При использовании 8898μs
- Строки с 4 по 5 отправляют первый http-запрос через установленное соединение, и сервер подтверждает получение запроса. При использовании 5мкса
- В строках 5 ~ 6 вы можете знать, что время выполнения скрипта составляет 60 с 1387 мкс, что соответствует сценарию php.
- В строках 6 и 8 сервер отправляет ответ http. Для отправки ответа потребовалось 90166 мкс.
- Строка 7 указывает, что демон сервера активно закрыл соединение. Объединение строк 6 и 8 показывает, что после отправки ответа http сервер немедленно закроет TCP-соединение.
- В разделах 7, 9 и 10 показано, что порядок соединения TCP закрыт, что занимает 90 963 мкс. Следует отметить, что ресурс сокета здесь не освобождается немедленно, ему нужно подождать 2MSL времени (60 с), прежде чем он будет фактически освобожден.
Можно видеть, что без сохранения alive_timeout время, необходимое ресурсу сокета от установления к реальному выпуску, составляет: установление соединения TCP + передача запроса HTTP + выполнение сценария PHP + передача ответа HTTP + закрытие соединения TCP + 2MSL. (Примечание. Время здесь можно использовать только в качестве эталона. Конкретное время в основном определяется пропускной способностью сети и размером ответа.)
2. Когда время keepalive_timeout больше 0, то есть, когда Keep-Alive включен, жизненный цикл TCP-соединения. Для анализа мы установили keepalive_timeout равным 300 с
#tcpdump -n host 218.1.57.236 and port 80 21:38:05.471129 IP 218.1.57.236.54049 > 222.73.211.215.http: S 1669618600:1669618600(0) win 65535 21:38:05.471140 IP 222.73.211.215.http > 218.1.57.236.54049: S 4166993862:4166993862(0) ack 1669618601 win 5840 21:38:05.481731 IP 218.1.57.236.54049 > 222.73.211.215.http: . ack 1 win 32768 21:38:05.481976 IP 218.1.57.236.54049 > 222.73.211.215.http: P 1:797(796) ack 1 win 32768 21:38:05.481985 IP 222.73.211.215.http > 218.1.57.236.54049: . ack 797 win 59 21:38:07.483626 IP 222.73.211.215.http > 218.1.57.236.54049: P 1:326(325) ack 797 win 59 21:38:07.747614 IP 218.1.57.236.54049 > 222.73.211.215.http: . ack 326 win 32605 21:43:07.448454 IP 222.73.211.215.http > 218.1.57.236.54049: F 326:326(0) ack 797 win 59 21:43:07.560316 IP 218.1.57.236.54049 > 222.73.211.215.http: . ack 327 win 32605 21:43:11.759102 IP 218.1.57.236.54049 > 222.73.211.215.http: F 797:797(0) ack 327 win 32605 21:43:11.759111 IP 222.73.211.215.http > 218.1.57.236.54049: . ack 798 win 59
- Давайте рассмотрим строки с 6 по 8. В отличие от последнего примера, демон httpd сервера не сразу закрыл TCP-соединение сразу после отправки ответа.
- В строке 8 в сочетании со строкой 6 видно, что через 5 минут (300 с) сервер активно закрывает TCP-соединение. Это время точно соответствует времени, которое мы установили для keepalive_timeout.
- Можно видеть, что когда установлено время keepalive_timout, время, необходимое для освобождения сокета, превышает время keepalive_timeout.
3. Когда время keepalive_timeout больше 0 и несколько HTTP-ответов отправляются по одному и тому же TCP-соединению. Здесь для анализа мы установили keepalive_timeout равным 180 с.
С помощью этого теста мы хотим выяснить, запускает ли keepalive_timeout таймер с конца первого ответа или заканчивается последний таймер. Результаты теста подтвердили последнее: здесь мы отправляли запрос каждые 120 секунд и отправляли 3 запроса через TCP-соединение.
# tcpdump -n host 218.1.57.236 and port 80 22:43:57.102448 IP 218.1.57.236.49955 > 222.73.211.215.http: S 4009392741:4009392741(0) win 65535 22:43:57.102527 IP 222.73.211.215.http > 218.1.57.236.49955: S 4036426778:4036426778(0) ack 4009392742 win 5840 22:43:57.111337 IP 218.1.57.236.49955 > 222.73.211.215.http: . ack 1 win 32768 22:43:57.111522 IP 218.1.57.236.49955 > 222.73.211.215.http: P 1:797(796) ack 1 win 32768 22:43:57.111530 IP 222.73.211.215.http > 218.1.57.236.49955: . ack 797 win 59 22:43:59.114663 IP 222.73.211.215.http > 218.1.57.236.49955: P 1:326(325) ack 797 win 59 22:43:59.350143 IP 218.1.57.236.49955 > 222.73.211.215.http: . ack 326 win 32605 22:45:59.226102 IP 218.1.57.236.49955 > 222.73.211.215.http: P 1593:2389(796) ack 650 win 32443 22:45:59.226109 IP 222.73.211.215.http > 218.1.57.236.49955: . ack 2389 win 83 22:46:01.227187 IP 222.73.211.215.http > 218.1.57.236.49955: P 650:974(324) ack 2389 win 83 22:46:01.450364 IP 218.1.57.236.49955 > 222.73.211.215.http: . ack 974 win 32281 22:47:57.377707 IP 218.1.57.236.49955 > 222.73.211.215.http: P 3185:3981(796) ack 1298 win 32119 22:47:57.377714 IP 222.73.211.215.http > 218.1.57.236.49955: . ack 3981 win 108 22:47:59.379496 IP 222.73.211.215.http > 218.1.57.236.49955: P 1298:1622(324) ack 3981 win 108 22:47:59.628964 IP 218.1.57.236.49955 > 222.73.211.215.http: . ack 1622 win 32768 22:50:59.358537 IP 222.73.211.215.http > 218.1.57.236.49955: F 1622:1622(0) ack 3981 win 108 22:50:59.367911 IP 218.1.57.236.49955 > 222.73.211.215.http: . ack 1623 win 32768 22:50:59.686527 IP 218.1.57.236.49955 > 222.73.211.215.http: F 3981:3981(0) ack 1623 win 32768 22:50:59.686531 IP 222.73.211.215.http > 218.1.57.236.49955: . ack 3982 win 108
- В первой группе три IP-пакета указывают, что TCP устанавливает трехстороннее рукопожатие для установления соединения, которое устанавливается браузером.
- Вторая группа отправляет первый http-запрос и получает ответ. После того, как демон сервера выдает ответ, он не сразу закрывает TCP-соединение. Вместо этого запустите таймер keepalive_timout.
- Третья группа через 2 минуты отправляет второй http-запрос и получает ответ.Так же демон сервера не сразу закрыл TCP-соединение и перезапустил таймер keepalive_timout.
- Четвертая группа через 2 минуты отправила третий http-запрос и получила ответ. Серверный демон все еще не закрывал активное соединение TCP (через 4 минуты после первого ответа http, который больше значения keepalive_timeout), но перезапустил таймер keepalive_timout.
- В пятой группе, в последнем ответе keepalive_timeout (180 с), демон не получил запрос. Когда таймер заканчивается, серверный демон активно закрывает соединение. После 4 волн сервер переходит в состояние TIME_WAIT.
Это показывает, что когда установлено значение keepalive_timeout, время, необходимое сокету для перехода от установления к выпуску: tcp установление + (время последнего ответа — время первого запроса) + выключение tcp + 2MSL. Жирный красный цвет указывает время для каждого запроса, который должен быть отправлен, время для каждого запроса, чтобы выполнить сценарий, время для каждого ответа, который будет отправлен, и время между двумя запросами. Дальнейшее тестирование, соединения TCP, которые закрываются или находятся в состоянии TIME_WAIT, не могут передавать HTTP-запросы и ответы. То есть, когда соединение завершает таймер keepalive_timeout, и демон сервера отправляет первый IP-пакет флага FIN, соединение больше не может использоваться.
http keep-alive и tcp keep-alive
http keep-alive и tcp keep-alive — это не одно и то же, их намерения разные. Http keep-alive — сделать tcp живым дольше, чтобы по одному и тому же соединению можно было передавать несколько https для повышения эффективности сокета. TCP keep-alive — обнаружение TCPсоединениеМеханизм сохранения состояния. Таймер свежести tcp keep-alive, поддерживает три параметра конфигурации ядра системы:
echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time echo 15 > /proc/sys/net/ipv4/tcp_keepalive_intvl echo 5 > /proc/sys/net/ipv4/tcp_keepalive_probes
Keepalive — это таймер свежести TCP.После того как TCP-соединение установлено на обоих концах сети, простаивает (между двумя сторонами нет потока данных) после tcp_keepalive_time, ядро сервера попытается отправить клиенту пакет обнаружения для определения состояния TCP-соединения. (Клиент может аварийно завершить работу, приложение принудительно закрыто, хост недоступен и т. Д.). Если ответ (пакет ack) не получен от другой стороны, он попытается снова отправить пакет обнаружения после tcp_keepalive_intvl, пока не получит подтверждение для другой стороны. Если он не получил подтверждение другой стороны, он попытается в общей сложности выполнить tcp_keepalive_probes раз, Интервалы здесь 15, 30, 45, 60, 75. Если вы попробуете tcp_keepalive_probes и по-прежнему не получите подтверждающий пакет другой стороны, TCP-соединение будет разорвано. Время простоя TCP-соединения по умолчанию составляет 2 часа, и для этого достаточно 30 минут.
То есть, только когда значение nginx keepalive_timeout установлено выше, чем tcp_keepalive_time и последний HTTP-ответ, переданный из этого tcp-соединения, после истечения времени tcp_keepalive_time операционная система отправит пакет обнаружения, чтобы решить, следует ли сбрасывать TCP-соединение. Обычно это не тот случай, если вам не нужно это делать.
keep-alive и TIME_WAIT
Использование http keep-alvie может уменьшить количество серверов TIME_WAIT (поскольку демон httpd сервера активно закрывает соединение). Причина очень проста: по сравнению с включением поддержки активности установлено меньше соединений TCP и, естественно, закрыто меньше соединений TCP.
в конце концов
Я хочу использовать схематическое изображение, чтобы проиллюстрировать разницу между использованием keepalive. Кроме того, http keepalive является результатом сотрудничества между клиентским браузером и демоном httpd сервера, поэтому мы подготовили отдельную статью, чтобы представить использование keepalive в разных ситуациях в разных браузерах.