TCP de tres vías cuarta ola entender y preguntas cara

A, general TCP

Cada conexión TCP tiene dos puntos finales, los puntos finales de esta toma que llamamos (socket), que se define como el número de puerto de la dirección IP que se empalman para formar el zócalo,

Por ejemplo, si la dirección IP es 192.0.0.1 y el puerto número 8000, por lo que recibirá un zócalo para el 192.0.0.1:8000

Dos, formato de paquetes TCP

banderas ACK, SYN y FIN de estas palabras en mayúsculas representan los bits cuyo valor es o bien 1 o un 0; ACK, número SEC palabra minúsculas representación

 

Sincronización de la SYN :. (Sincronizar), el SYN = 1 indica que este es un paquete de petición de conexión o el mensaje de conexión aceptación. El indicador SYN sólo si la producción de la construcción conexión TCP se establecerá después de la finalización del protocolo de enlace de la bandera SYN se establece en 0

Confirmado el ACK : ACK = 1 sólo cuando el campo de número de acuse de recibo es válido. Cuando ACK = 0, el número de confirmación no es válido. Tales como: Cuando el SYN = 1, ACK = 0 indica que esto es cuando una solicitud de conexión segmentos de paquete, si se acuerda de conexión, en los segmentos de mensaje de respuesta que SYN = 1, ACK = 1

Terminación del FIN : para la liberación de una conexión. FIN = 1 representa: un emisor de datos de este segmento ha sido transmitido, y por la liberación de

 

SEQ ID SEC : (Número de Secuencia El), 4 bytes que representa el segmento que lleva el primer byte de datos el número de bytes transmitidos en conexión corriente TCP en cada byte se numeran secuencialmente. Por ejemplo, una sección del valor del número de secuencia de paquete es 301, y los datos transportados por el total de 100 campos, es claramente el segmento siguiente (si hay alguna) debe comenzar a partir del número de datos 401; figura x e y,

No acuse de recibo ACK : 4 bytes, los próximos espera recibir el otro del primer byte de datos de número de secuencia de un segmento, por ejemplo, B recibe el paquete enviado desde el segmento A, que es un número SEC secuencia, y la longitud de datos es de 100 bytes, B lo que indica la correcta recepción de datos transmitidos a la un número desde 1 hasta 100. Por lo tanto, B espera recibir el próximo número de datos de A + 1 es 100, entonces B en acuse de recibo enviado al segmento A del número de acuse de recibo se establece en 101

 En tercer lugar, el enlace de tres vías, agitando cuatro

3.1 TCP proceso de establecimiento de la conexión - de tres vías

El proceso de establecer un canal bidireccional llamada de tres vías para establecer canales del iniciador puede ser un cliente también puede ser un servidor, aquí estamos con un cliente para iniciar un Ejemplo

 

  • El cliente envía una solicitud al servidor hacia el lado del servicio preguntó: "No puedo cavar un túnel que conduce a su casa."

  • El servidor recibe la solicitud, respondió: "Bueno, cavar", porque TCP es un canal bidireccional, con el lado de servicio al cliente del canal para cavar sólo al cliente hacia el servidor mediante un mensaje, el servidor le gustaría enviar al cliente esta noticia hay manera de tener un canal, es necesario cavar un canal que conduce al cliente

    Así, en respuesta al servidor y el cliente de acuerdo a excavar el canal va a preguntar: "Entonces, ¿también puedo cavar un canal que conduce a su casa."

  • Después de que el cliente recibe las peticiones al servidor del cliente al final del servicio del túnel cavado con éxito, entonces la solicitud estará de acuerdo con el servidor, el servidor al cliente para cavar un canal tendrá éxito

  • 1. Servidor listo: proceso del servidor TCP para crear un bloque de control de transmisión TCB, siempre dispuesto a aceptar solicitudes de conexión del proceso del cliente, el servidor en este momento para entrar en el estado LISTEN (monitor)
  • 2. El cliente está listo: proceso de cliente TCP es crear un bloque de control de transmisión TCB
  • 3. El primer apretón de manos : el cliente envía un paquete de petición de conexión con el servidor, el encabezado del mensaje de las banderas de sincronización SYN = 1, mientras que la generación de una SEC inicial número de secuencia = x, en este caso, el proceso de cliente TCP pasa el SYN-SENT estado (enviado sincronización estado). TCP predeterminado, el segmento SYN (SYN = 1 segmento) no puede transportar datos, pero requiere un número consumida

  • 4. El segundo apretón de manos : servidor TCP recibe un mensaje de solicitud, si está de acuerdo conexiones, es un mensaje de confirmación. Acuse de recibo de paquetes de acuse de recibo ACK bandera = 1, SYN = 1, el número de acuse de recibo es ack = x + 1, sino también inicializa un número de secuencia SEC = y por sí misma, en este momento, el proceso de servidor TCP pasa al SYN-RCVD (sincronización recibida a) estado. Este mensaje no puede transportar datos, pero también tienen que consumir una cantidad

  • El tercer apretón de manos : cliente TCP después de la confirmación de recepción, sino que también proporcionan una confirmación al servidor nuevo. Confirmación paquetes bandera de acuse de recibo ACK = 1, un número de acuse de recibo ACK = y + 1, su número de secuencia SEC = x + 1, En este caso, se establece la conexión TCP, el cliente entra en el estado ESTABLECIDO (conexión establecida). TCP predeterminado, el segmento ACK puede transportar datos, pero si el número no lleva datos no se consume

  • 6. conexión con éxito: Cuando el servidor recibe la confirmación del cliente también entra en estado establecido, entonces las dos partes pueden empezar a comunicar la
Escuchar - escuchar las solicitudes de conexión desde el puerto TCP remoto; 

SYN -SENT - a la espera de un partido de solicitud de conexión después de transmitir una solicitud de conexión, 

el SYN la notificó - esperar una confirmación de una solicitud de conexión después de recibir una solicitud de conexión y transmisión; 

el ESTABLECIDO - Representante una conexión abierta, los datos se puede transmitir al usuario; 

el FIN -WAIT- 1. - la espera de conexión TCP remoto interrupción solicitudes, o el anterior de acuse de recibo de conexión de la solicitud de interrupción; 

la aleta -WAIT- 2 - espera una conexión de solicitud de interrupción desde el TCP remoto; 

el CLOSE - espere - la espera de ser enviado a la solicitud de interrupción desde el usuario local está conectado; 

el cierre - solicitud de conexión TCP remoto se rompe; 

LAST -ACK - solicitud emitió originalmente la petición de interrupción a la conexión de TCP remoto; 

el tiempo -wait - la espera de tiempo suficiente para asegúrese de que el acuse de recibo de conexión TCP remoto ha recibido solicitud de interrupción, 

el CERRADO - no hay un estado de conexión;
El significado de cada estado

3.2 TCP vincular el proceso de liberación - Cuatro agitando

Establecer una conexión requiere de tres vías, y terminar una conexión que pasar por el saludo de cuatro vías

Cuando el servidor o el cliente no quieren comunicarse entre sí, cualquiera de las dos partes puede iniciar la solicitud de desvinculación, iniciamos un estudio de caso del cliente

  • Debido a que el cliente no tiene necesidad de enviar ningún mensaje al lado del servicio, por lo que desconectar el cliente al servidor para iniciar una petición de canal

  • Nos pusimos de acuerdo después de que el servidor recibe la petición a un cliente al servidor de los canales individuales fuera

  • Este servidor de tiempo no es inmediatamente hacia las solicitudes de envío del cliente a decir que tengo que desconectar el canal derecho a casa, el servidor tiene que pensar en mi parte, no hay necesidad de enviar un mensaje al cliente, si la hay, entonces, no puedo desconectar, inmediatamente terminados primeros datos a fuera

    Después de la inspección se ha completado y otro servidor envía ningún dato para dar al cliente, y esta vez va a iniciar un servicio de desconexión hacia la petición de canal de cliente a cliente

  • El cliente de acuerdo a la solicitud, hasta el momento ha completado cuatro ondas

Después de enviar final envía solicitud de salto de los datos del usuario, el servidor inmediatamente de acuerdo, pero el servidor no emitir su propia petición para romper inmediatamente, porque puede haber ninguna transferencia de datos se ha completado, se romperá después de detectar si los datos se envían, una vez que entre los dos no pueden fusión

 

  1. transmisión de datos de proceso de cliente se ha completado, el envío de datos de parada , envía un mensaje de liberación de conexión, la bandera de liberación FIN = 1, el número de secuencia SEC = u (igual al número de secuencia del último byte transmitido previamente desde los datos más 1), entonces el cliente entra en el estado (1 terminación de espera) 1-FIN-WAIT. disposiciones del PCT, segmento FIN, si no llevan datos , sino también consumir un número de serie.
  2. Servidor recibe un mensaje de liberación de conexión, después de haber sido confirmado que todos los datos, envía un paquete de confirmación de acuerdo fuera de acuse de recibo ACK = 1, un número de acuse de recibo ACK = u + 1, y traer su propio número de secuencia de la SEQ = v, en este caso, el servidor entró (de espera cerrada) CLOSE-WAIT. servidor TCP para informar proceso de aplicación de alto nivel, la dirección del servidor de cliente de un canal para apagar de inmediato . Esta vez en una red TCP estado semi-conectado , es decir, el cliente no tiene datos para enviar, pero si el servidor de envío de datos, el cliente todavía tiene que ser aceptado. Este estado continuará por algún tiempo, es decir, toda la duración del estado CLOSE-WAIT.
  3. El cliente recibe la solicitud de confirmación al servidor, desconexión posee un canal. En este caso, el cliente entra en el 2 FIN-WAIT-estado (2 terminación de espera), durante el cual la necesidad de pasar por el servidor recibe los datos, espera para el servidor transmite un mensaje de liberación de conexión
  4. Después de los datos se han enviado al servidor, el cliente envía un mensaje de liberación de conexión, FIN = 1, ack = u + 1, ya que el estado medio-cerrado, y el servidor es probable que transmitir algunos datos, el número de secuencia se asume en este momento ss = w, en este momento, el servidor en el último estado-ACK (acuse de recibo pasado), a la espera de un acuse de recibo del cliente.
  5. El cliente recibe un mensaje de liberación de la conexión del servidor, después de recibir la confirmación de todos sus datos a enviar acuse de recibo, ACK = 1, ACK = w + 1, y su número de serie ss = u + 1, en este momento, el cliente extremo entra en el estado de tiempo de espera (wait). Tenga en cuenta que la conexión TCP no ha sido puesto en libertad en este momento, después de la MSL ser 2 * (duración máxima del segmento) de tiempo transcurrido después de la revocación del cliente correspondiente a la TCB, antes de entrar en el estado CERRADO.
  6. Mientras el servidor de confirmación recibido enviado por el cliente, inmediatamente entrar en estado cerrado. Se puede ver, el tiempo de conexión TCP del servidor antes de lo que el cliente

En cuarto lugar, las preguntas de la entrevista común

[Pregunta 1] TCP ¿Por qué un enlace de tres vías, el uso del protocolo de enlace secundario se puede hacer?

Por supuesto que no, de tres vías ha fallado puede evitar efectivamente el paquete de solicitud de conexión enviada al servidor de repente, dando lugar a errores y desperdicio de recursos.

Si un enlace de dos vías para establecer una conexión, suponiendo un escenario de este tipo, el cliente envía una solicitud a la primera conexión se pierde y no es, simplemente porque el tiempo de retención nodos de la red es demasiado largo, ya que el cliente aún no ha sido TCP recibirá un mensaje de confirmación de que el servidor no ha recibido, a continuación, volver a enviar este paquete al servidor, el cliente y el servidor se conectan a través de dos vías se completa apretón de manos, transmisión de datos, y luego cerrar la conexión. En este punto, el error que habían trenzado una solicitud de conexión, la red abierta para llegar al servidor, el texto del informe no es válida, sin embargo, el mecanismo de enlace de dos vías permitirá que el cliente y el servidor para establecer una conexión de nuevo, lo que conducirá a innecesaria y el despilfarro de recursos.

Si un enlace de tres vías, incluso si se trata de un fallo del paquete de transmisión al servidor, servicio de terminación por el fallo de una pieza del mensaje de confirmación de mensaje y la respuesta, pero el cliente es claro que él no envió solicitud, no saberlo la solicitud no es válida, no enviará una confirmación de nuevo. Dado que el servidor no recibe la confirmación, sabemos que el cliente no ha solicitado una conexión,

 

Desde otra perspectiva, la única de tres vías apretón de manos para confirmar la capacidad respectiva de aceptar y de transmisión es normal, pero los dos no pueden

  • En primer lugar: El cliente envía una solicitud al servidor, el servidor sabe que el cliente envía, recibe su propio normales

  • En segundo lugar: el servidor al cliente, el cliente sabe que enviar, recibir, el servidor recibe, envía una normalidad

  • Tercero: el cliente al servidor: el servidor conozca el cliente para enviar, recibir normal que recibió, también envió a la normalidad

[Pregunta 2] apretón de manos de tres vías puede transportar datos?

El primer, segundo protocolo de enlace de datos no puede continuar, mientras que el tercer apretón de manos puede transportar datos.

La primera lata no transportar datos, ni puede primero en caché de datos, como un apretón de manos exitosa presentación de la solicitud, se agrandará SYN Flood ataque. Si alguien fuera a servidor malicioso, que siempre puso una gran cantidad de datos en el primer paquete SYN apretón de manos, ya que el atacante simplemente ignorar recibir, potencia de transmisión del servidor es normal, a continuación, centrarse en frenéticamente SYN recaída mensaje, a continuación, hace que el servidor necesita una gran cantidad de tiempo y espacio en la memoria para recibir estos mensajes. En otras palabras, el primer apretón de manos puede poner los datos, en el que una simple razón de esto es hacer que el servidor sea más vulnerable a los ataques.

En tercer lugar, se puede enviar paquetes de apretón de manos de la tercera serie, paquetes de segundo apretón de manos, sin duda recibidas, IP falsa porque el host no está recibiendo el segundo mensaje. Por lo tanto, el tercer apretón de manos puede enviar mensajes, los usuarios debe ser legal. A pesar de que el estado del lado del servidor no ha "establecido", el momento recibió el tercer apretón de manos, el estado cambia a la "establecida", que llevan los datos hacia abajo de acuerdo con los procedimientos normales como

[Pregunta 3] cómo hacerlo si se ha establecido una conexión, pero el cliente de repente se rompió?

TCP es también un temporizador de mantenimiento de conexión SYN tiempo de espera, al parecer, un cliente si se produce un fallo, el servidor no puede seguir esperando, el desperdicio de recursos. Cada vez que el servidor recibe la solicitud del cliente se restablecerá el temporizador de tiempo establecido es por lo general de 2 horas, si dos horas no ha recibido ningún dato desde el cliente, el servidor envía un mensaje de detección de segmento, entonces cada 75 segundos para enviar uno. Si el envío de 10 paquetes de sondeo consecutivos todavía no respondió, el servidor trajo clientes considerados un fracaso, y luego cerrar la conexión.

[4] problema de ataque SYN Principio

Defecto utilizando el protocolo TCP, el envío de un gran número de solicitud de conexión TCP falsa, por lo que los ataques atacante el agotamiento de los recursos (CPU a plena carga o de memoria insuficiente) de

principio específico es: la negociación de la conexión TCP de tres vías, supongamos que un usuario envía un paquete SYN después de una caída repentina o se ha caído al servidor, el servidor SYN + ACK se emite después de que el mensaje de respuesta no se recibe paquete ACK de cliente ( tercer apretón de manos no es completa), en este caso el servidor general de reintento (SYN + ACK transmisión al cliente), y de nuevo después de un período de tiempo de espera para las conexiones pendientes desechados. Esta cantidad de tiempo que llamamos SYN tiempo de espera, en general, este tiempo es del orden de minutos (aproximadamente 30 segundos a 2 minutos); causas anormales del servidor a un usuario de un hilo espere 1 minuto no es un gran problema, pero si un atacante malintencionado para simular un gran número de estos casos (dirección IP falsa), el servidor va a ser muy grande con el fin de mantener una lista de conexiones a medio consumir una gran cantidad de recursos. Incluso un simple ahorro y transversal se consumen una gran cantidad de tiempo de CPU y memoria, por no mencionar también seguir llevando a cabo esta lista de IP SYN + ACK reintento. De hecho, si la pila TCP / IP del servidor no es lo suficientemente fuerte, el resultado final es a menudo una pila accidentes de desbordamiento - incluso si el sistema servidor es lo suficientemente fuerte, el servidor también estará ocupado con el atacante forjado solicitudes de conexión TCP y no hay tiempo para ignorar la petición normal de los clientes ( después de la relación normal de solicitud del cliente es muy pequeño), entonces el punto de vista del cliente normal, el servidor se congela

[5] ¿Por qué la necesidad estado TIME_WAIT tema que pasar por 2MSL (vida máximo del segmento) (duración máxima del segmento) cerca de retorno al estado?

Aunque, lógicamente, los cuatro paquetes han sido enviados, podemos ir directamente al estado cercano, pero la red no es confiable, es posible perder el último ACK.

Después de enviar la final Cliente respuesta ACK, el ACK se puede perder. Por lo tanto el estado TIME_WAIT se utiliza para comprobar que han recibido el ACK, si el servidor no recibe el ACK, el cliente no sabe si los datos recibidos no es parte completamente cerrada de su paso, la tercera ola se repetirá enviado segmento FIN. Por lo que el cliente no se puede cerrar de inmediato, se debe confirmar Server recibe el ACK.

Cliente entra en el estado TIME_WAIT después de enviar el ACK. Cliente establecer un temporizador, el tiempo de espera 2MSL. Si recibe FIN nuevamente dentro de ese tiempo, entonces el cliente volverá a enviar ACK 2MSL y esperar de nuevo. El llamado 2MSL es el doble de la MSL. MSL refiere a un segmento de la red el máximo tiempo de supervivencia, se transmite 2MSL y un tiempo máximo requerido para una respuesta. Si hasta 2MSL, el cliente no ha recibido FIN otra vez, entonces el cliente llegó a la conclusión de que ACK ha sido recibido con éxito, la conexión TCP

[6] RFC793 claramente problema definido, además de la primera excepción de unos paquetes SYN apretón de manos, todos los demás paquetes debe ser ACK = 1, detrás de lo dispuesto en el RFC duda lado racional, pueden entrar en las razones?

TCP como protocolo de transporte fiable, su fiabilidad depende del mecanismo de retroalimentación después de recibir los datos de otros, solamente con la bandera de acuse de recibo ACK entre sí, por lo que el otro lado puede estar seguro de que se haya recibido los datos, con el fin de cerrar la liberación del canal audazmente caché asegurada datos

paquetes TCP se transmiten a través de la red IP, la pérdida de paquetes es una práctica común, el receptor debe aprovechar cada oportunidad para decirle al remitente del mensaje . La manera más conveniente es, los paquetes TCP que nos envían alguno, debería bits de estado por cierto ACK.

solo los bits de estado ACK pueden soportar la tarea de mensajería?

no se puede! número de confirmación necesidad ACK con el trabajo.

El cliente después de que el número de secuencia SEC = x, entonces el terminal recibe la unidad de datos de servicio debe decirle exactamente enfrente de ACK = x + 1, el cliente sabe que el servidor ha recibido toda la

Si se emitió ACK = 10001, 10000 bytes antes y eso significa que el número de serie ha sido recibido con éxito

[7] problema (ISN) SEQ arreglaron

Una función importante del enlace de tres vías es el cliente y el servidor de intercambio de ISN (Número de Secuencia Inicial), con el fin de dejar que los demás saben cuando el próximo reciben datos sobre cómo los datos reunidos por el número de serie.

Si el ISN es fija, es fácil para un atacante de adivinar el número de confirmación posterior, por lo ISN se genera dinámicamente.

[8] pregunta acerca de los tiempos de retransmisión SYN-ACK el problema

El servidor ha terminado de enviar paquete SYN-ACK, si el cliente no ha recibido paquete de confirmación, el primer servidor de retransmisión, esperar algún tiempo para recibir el paquete de confirmación al cliente, una segunda retransmisión, si el recuento de retransmisión excede el sistema de peso máximo especificado número de transferencia, la información de conexión suprimido de la cola de sistema medio-conexión. Tenga en cuenta que cada retransmisión tiempo de espera no es necesariamente el mismo, el general será un crecimiento exponencial, como el intervalo es 1S, 2S, 4S, 8s, ....

 

Supongo que te gusta

Origin www.cnblogs.com/xp1315458571/p/11361140.html
Recomendado
Clasificación