Aspectos básicos de la entrevista para PC: veinte preguntas sobre el alma de la comunicación TCP [Siguiente]

El artículo anterior le presentó las 10 preguntas de entrevista más comunes en la comunicación TCP. Aquellos que no lo hayan leído pueden hacer clic en el enlace a continuación para ver:

Aspectos básicos de la entrevista para PC: veinte preguntas sobre el alma de la comunicación TCP [Arriba]

Hoy, explicaré las siguientes 10 preguntas de la entrevista:

11. ¿ El estado TIME_WAIT con cuatro ondas de manos?

Lo primero que hay que tener claro es que solo la parte que cierra activamente la conexión tendrá el estado TIME_WAIT.

Hay dos razones principales por las que se necesita el estado TIME_WAIT:

  • Para evitar que el mismo puerto se vuelva a conectar, el servidor recibe paquetes de datos que permanecen en la red.

  • Asegurarse de que la parte que cierra pasivamente la conexión pueda cerrarse correctamente, es decir, asegurarse de que la parte cerrada pasivamente pueda recibir el ACK final, lo que ayudará a que se cierre normalmente.

12. ¿Por qué TIME_WAIT es 2MSL?

   

       MSL es la duración máxima del segmento, la duración máxima de un mensaje. Es el tiempo más largo que un mensaje puede existir en la red. Después de este tiempo, el mensaje se descartará. Por ejemplo, si la parte de cierre pasiva no recibe el último mensaje ACK de la desconexión, activará un tiempo de espera y volverá a enviar el mensaje FIN. Después de que la otra parte reciba el FIN, volverá a enviar un ACK a la parte final pasiva, exactamente 2 MSL.

     El tiempo de 2MSL comienza cuando el cliente envía ACK después de recibir FIN. Si dentro del tiempo de TIEMPO DE ESPERA, debido a que el ACK del cliente no ha sido transmitido al servidor, el cliente recibe el mensaje FIN retransmitido por el servidor, entonces el tiempo 2MSL será contado nuevamente. En los sistemas Linux, el valor predeterminado de 2MSL es 60 segundos.

13. ¿Cuál es el mecanismo de mantenimiento de la vida de TCP?

Defina un período de tiempo. Durante este período de tiempo, si no hay actividad relacionada con la conexión, el mecanismo de mantenimiento de la conexión TCP comenzará a funcionar. Cada intervalo de tiempo, se envía un mensaje de sondeo. El mensaje de sondeo contiene muy pocos datos. Si no se recibe respuesta para varios mensajes de detección consecutivos, la conexión TCP actual se considera inactiva y el núcleo del sistema notifica a la aplicación de capa superior de la información del error.

14. Se ha establecido la conexión, ¿qué debo hacer si el cliente falla?

Esta situación activará el mecanismo de mantenimiento de la vida de TCP. Los parámetros correspondientes incluyen el tiempo de mantenimiento de la vida, el número de detecciones de mantenimiento de la vida y el intervalo de tiempo de las detecciones de mantenimiento de la vida. El tiempo de mantenimiento de la vida predeterminado es 7200 segundos y el número de detecciones de mantenimiento de la vida es 9. El intervalo de detección en vivo es de 75 segundos.

Esto significa que si el cliente falla repentinamente, después de 7200 + 75 * 9 = 7875 segundos, es decir, 2 horas, 11 minutos y 15 segundos, el servidor juzgará que la conexión no es válida.Los parámetros anteriores se pueden configurar manualmente.

15. ¿Cuál es la relación entre el protocolo TCP / IP y Socket?

Es más fácil comprender la declaración de la red sobre la relación entre Socket y TCP / IP:

TCP / IP es solo una pila de protocolos, al igual que el mecanismo operativo de un sistema operativo, debe implementarse específicamente y debe proporcionarse una interfaz operativa externa. Esto es como si el sistema operativo proporcionará una interfaz de programación estándar, como la interfaz de programación Win32, TCP / IP también debería proporcionar una interfaz para que los programadores realicen el desarrollo de la red, esta es la interfaz de programación de Socket.

Por lo tanto, Socket no está necesariamente relacionado con TCP / IP. Cuando se diseña la interfaz de programación de Socket, se espera que pueda adaptarse a otros protocolos de red. La aparición de Socket es solo para que sea más conveniente usar la pila de protocolos TCP / IP. Abstrae TCP / IP y forma algunas de las interfaces funcionales más básicas, como Enviar, Escuchar, etc.

16. ¿Qué es un ataque SYN?

Todos sabemos que el establecimiento de una conexión TCP requiere un protocolo de enlace de tres vías. Suponiendo que el atacante falsifica paquetes SYN con diferentes direcciones IP en poco tiempo, el servidor entra en el estado SYN_RCVD cada vez que recibe un paquete SVN, pero el servidor envía paquetes ACK + SYN. Es imposible obtener una respuesta ACK de un host IP desconocido. Con el tiempo, llenará la cola de recepción SYN del servidor (cola desconectada), haciendo que el servidor no pueda atender a los usuarios normales.

17. ¿Cómo evitar los ataques SYN?

Dos soluciones para evitar ataques SYN:

  • Al modificar los parámetros del kernel, controle el tamaño de la cola y determine qué hacer cuando la cola esté llena, por ejemplo, después de que la cola esté llena, responda directamente RST al nuevo SYN y descarte la conexión.

  • Cuando la cola SYN está llena, el SYN recibido subsiguientemente no ingresará directamente a la cola SYN, sino que primero calculará el valor de la cookie y luego lo enviará, y luego se podrá verificar la legalidad del paquete ACK.

18. Proceso de programación del socket del servidor TCP

  • El servidor inicializa el Socket y obtiene el descriptor de archivo.

  • El servidor llama a Bind y lo vincula a la dirección IP y al puerto

  • El servidor llama a Escuchar para monitorear

  • El servidor llama a Aceptar para establecer una conexión de cliente.

  • Envía un mensaje al cliente a través de Enviar

  • Recibir mensajes de clientes a través de Recibir

19. ¿Programación de socket de cliente TCP?

  • El cliente inicializa el Socket y obtiene el descriptor de archivo.

  • El cliente llama a Connect para conectarse al servidor

  • La conexión es exitosa, llame a Enviar para enviar un mensaje al cliente

  • Recibir mensajes de clientes a través de Recibir

20. ¿Cuál es el significado del parámetro de backlog en Listen?

Se mantienen dos colas en el kernel de Linux:

    Cola de conexión incompleta (cola SYN): se recibe una solicitud de establecimiento de conexión SYN y está en el estado SYN_RCVD;

    Cola de conexión completada (cola Accpet): el proceso de protocolo de enlace de tres vías de TCP se ha completado y se encuentra en el estado ESTABLECIDO;

    Después del kernel 2.2, la acumulación se convierte en la cola de aceptación, que es la longitud de la cola para el establecimiento de la conexión completo, por lo que ahora se considera que la acumulación es la cola de aceptación.

     Las anteriores son 20 preguntas comunes sobre la comunicación TCP, espero que sea útil para la entrevista de todos y la comprensión de TCP.

Vivir el presente

    Para que todos tengan una mejor comprensión de los principios de comunicación TCP, el tema de la clase en vivo de esta noche "Análisis y aplicación de captura de paquetes del protocolo Siemens S7", escanee el código QR a continuación o vea el texto original, y haga clic en la suscripción gratuita a continuación después de ingresar .

 

 

 

Supongo que te gusta

Origin blog.csdn.net/xiketangAndy/article/details/106944748
Recomendado
Clasificación