Red de conocimiento informático - Problemas con los teléfonos móviles - Descripción del parámetro de conexión TCP

Descripción del parámetro de conexión TCP

TCP establece una conexión después de 3 apretones de manos. En este momento, el cliente iniciará una conexión con el servidor.

Para una conexión completa, el servidor experimentará 2 estados de TCP: <. /p>

p>

En consecuencia, el servidor también mantendrá dos colas:

La longitud de la cola de semiconexión está determinada por el parámetro del kernel tcp_max_syn_backlog

Cuando se utilizan cookies SYN, este parámetro no es válido (es decir, el parámetro del kernel net.ipv4.tcp_syncookies = 1),

Es decir, la longitud de la cola de semiconexión = min(acumulación, el kernel parámetro net.core.somaxconn, el parámetro del kernel tcp_max_syn_backlog), la semiconexión La longitud de la cola debe ser menor que la longitud de la cola completamente conectada.

Esta fórmula en realidad muestra que la longitud de la cola de semiunión no puede exceder la longitud de la cola de unión completa.

En primer lugar, la conexión completa afectará a la mitad de la conexión. Cuando la conexión completa está llena y hay varias medias conexiones en el estado SYN_REVD, dado que la conexión completa está llena, no es necesario continuar usando la nueva media conexión, pero la conexión debe ignorarse directamente.

Cuando la media conexión está llena, la operación se ignora o se descarta, y el cliente debe reenviar SYNC continuamente para volver a intentarlo. Los parámetros de reintento están determinados por tcp_syn_retries y el valor predeterminado es 5. Si el Si se excede el tiempo de espera establecido por el cliente, se informará una excepción de tiempo de espera de conexión.

Después de que el cliente envía SYNC, no responde con ACK. Esto hará que la cola de semiconexión esté llena y el servidor ya no pueda proporcionar servicios. Por lo tanto, los clientes normales seguirán informando tiempos de espera de conexión. .

Hay dos formas de lidiar con este ataque:

667399 SYN para LISTEN sockets ignorados significa que los SYN han sido ignorados, lo que significa que la cola de media conexión está llena o la media conexión está bajo ataque Impacto porque la conexión completa está llena.

Longitud total de la cola de conexión = min (acumulación, parámetro del kernel net.core.somaxconn), el valor predeterminado net.core.somaxconn es 128.

Esto es fácil de entender. net.core.somaxconn define la longitud máxima de la cola de conexión completa a nivel del sistema.

El trabajo pendiente es solo un parámetro pasado desde la capa de aplicación y su longitud no puede exceder el parámetro del núcleo, por lo que el trabajo pendiente debe ser menor o igual que net.core.somaxconn.

Para Linux, básicamente cualquier lenguaje que implemente un trabajo pendiente es un buen candidato para un trabajo pendiente, por lo que el trabajo pendiente no tiene que ser mayor o igual que el parámetro net.core.somaxconn. Los parámetros de trabajo pendiente en la función de escucha se definen de la siguiente manera:

cat /proc/sys/net/core/somaxconn o sysctl -a | grep "net.core.somaxconn"

La máquina en línea (el funcionamiento de LINK) es la siguiente:

Recv-Q: la cantidad de datos en la cola LINK, es decir, la cantidad de datos esperando ser aceptados.

Send-Q: Longitud total de la cola de conexiones

Tomcat tiene como valor predeterminado conexiones cortas y el trabajo pendiente (recuento de aceptación en la terminología de Tomcat) tiene como valor predeterminado 100.

Nginx tiene por defecto 511

Esto se debe a que Nginx opera en modo multiprocesador, lo que significa que múltiples procesos escuchan el mismo puerto para minimizar la necesidad de cambios de contexto.