4.4Cola de semiconexión TCP y cola de conexión completa

Tabla de contenido

¿Qué son las colas de semiconexión TCP y las colas de conexión completa?

Desbordamiento de cola de conexión completa TCP

¿Cómo saber el tamaño de la cola de conexión completa TCP de la aplicación?

¿Cómo simular el escenario de desbordamiento de la cola de conexión completa de TCP?

¿Qué sucede cuando la cola completamente conectada se desborda?

¿Cómo aumentar la cola de conexión completa?

Desbordamiento de cola de semiconexión TCP

¿Cómo comprobar la longitud de la cola de semiconexión TCP?

¿Cómo simular el escenario de desbordamiento de la cola de semiconexión TCP?

La mayoría de la gente dice que tcp_max_syn_backlog especifica el tamaño de la cola de semiconexión, ¿es cierto?

Análisis del código fuente ¿Cómo se determina el valor máximo de la cola de semiunión?

¿Cuáles son las tres condiciones bajo las cuales se descartará TCP durante el primer protocolo de enlace (recibir un paquete SYN)?

Si la cola de semiconexión SYN está llena, ¿solo se puede interrumpir la conexión?

¿Cómo defenderse de los ataques SYN?

¿Qué son las colas de semiconexión TCP y las colas de conexión completa?

Durante el protocolo de enlace de tres vías de TCP, el kernel de Linux mantiene dos colas:

  • Cola semiunida, también conocida como cola SYN;
  • Cola de conexión completa, también conocida como cola de aceptación;

Cuando el servidor recibe el SYN del cliente, el kernel colocará la conexión en la cola de semiconexión y enviará ACK + SYN al cliente, y luego el cliente devolverá ACK. Después de que el servidor reciba el ACK del tercer apretón de manos , el El kernel enviará la conexión se elimina de la cola de semiconexión y luego se crea una nueva conexión completa y se agrega a la cola de aceptación , y la conexión se elimina cuando el proceso llama a la función de aceptación.

Ya sea una cola semiconectada o una cola completamente conectada, existe un límite de longitud máxima. Cuando se excede el límite, el núcleo descartará o devolverá directamente el paquete RST. 

Desbordamiento de cola de conexión completa TCP

¿Cómo saber el tamaño de la cola de conexión completa TCP de la aplicación?

$ss-lnt

# -l muestra el socket que está escuchando (escuchando)

# -n no resuelve nombres de servicios

# -t solo muestra el socket tcp

¿Cómo simular el escenario de desbordamiento de la cola de conexión completa de TCP?

La herramienta wrk es una herramienta simple de prueba de estrés HTTP que, bajo la condición de una única CPU de múltiples núcleos, utiliza el mecanismo de E / S de alto rendimiento del sistema para generar una gran cantidad de carga en la máquina de destino a través de subprocesos múltiples. y modo de evento.

Cuando el servidor procesa una gran cantidad de solicitudes al mismo tiempo, si la cola de conexión completa de TCP es demasiado pequeña, es fácil que se desborde. Cuando el equipo de conexión completa de TCP se desborda, las solicitudes posteriores se descartarán, de modo que la cantidad de solicitudes del servidor no aumentará.

¿Qué sucede cuando la cola completamente conectada se desborda?

Linux tiene un parámetro para especificar qué estrategia se utilizará para responder al cliente cuando la cola de conexión TCP completa esté llena. Descartar es la opción predeterminada. También puede optar por enviar un mensaje de reinicio RST al cliente para informarle que el la conexión ha fallado.

¿Cómo aumentar la cola de conexión completa?

El valor máximo de la cola de conexión completa de TCP depende del valor mínimo entre somaxconn y backlog, es decir, min (somaxconn, backlog).

Desbordamiento de cola de semiconexión TCP

¿Cómo comprobar la longitud de la cola de semiconexión TCP?

La conexión TCP en el estado del servidor  SYN_RECV es la cola de semiconexión TCP.

¿Cómo simular el escenario de desbordamiento de la cola de semiconexión TCP?

Envíe siempre paquetes TCP SYN al servidor, pero no devuelva el tercer protocolo de enlace ACK, lo que hará que el servidor tenga una gran cantidad de  SYN_RECV conexiones TCP en estado. Las llamadas inundaciones SYN, ataques SYN, ataques DDos.

La mayoría de la gente dice que tcp_max_syn_backlog especifica el tamaño de la cola de semiconexión, ¿es cierto?

El valor máximo de la cola de semiunión no solo está determinado por max_syn_backlog, sino que también está relacionado con somaxconn y backlog.

Análisis del código fuente ¿Cómo se determina el valor máximo de la cola de semiunión?

En algunos sistemas, el valor máximo de la cola de semiunión tomará  el valor mínimo somaxconnde backlog y  max_syn_backlog para garantizar que existan restricciones adecuadas en diferentes niveles.

¿Cuáles son las tres condiciones bajo las cuales se descartará TCP durante el primer protocolo de enlace (recibir un paquete SYN)?

Si la cola de semiconexión SYN está llena, ¿solo se puede interrumpir la conexión?

Activar la función syncookies puede establecer con éxito una conexión sin utilizar la cola de semiconexión SYN . ​​Cuando la función syncookies está activada, la conexión no se descartará.

¿Cómo defenderse de los ataques SYN?

①: Para aumentar la cola de semiconexión, sabemos que no podemos simplemente aumentar el valor de tcp_max_syn_backlog, sino también aumentar somaxconn y backlog juntos, es decir, aumentar la cola de conexión completa.

②: La forma de habilitar la función tcp_syncookies también es muy simple, modifique los parámetros del kernel de Linux:

③: Cuando el servidor es atacado por SYN, habrá una gran cantidad de conexiones TCP en el estado SYN_RECV. El TCP en este estado retransmitirá SYN+ACK. Cuando el número de retransmisiones exceda el límite superior, la conexión se desconectará .

Supongo que te gusta

Origin blog.csdn.net/super8ayan/article/details/132455785
Recomendado
Clasificación