base apretón de manos de tres vías de la red de programación Java y --tcp de cuatro ondas

El proceso de envío y devolución de datos entre el cliente y el servidor necesita para crear algo que se llama una conexión TCP;

Desde no existe el concepto de conexión TCP, y existe sólo en respuesta a la solicitud, la solicitud y la respuesta son paquete es creado por el TCP a través de un cliente de la entre ellas originarias, similar al canal que conecta el servidor recibe esta conexión puede haber sido explotación, solicitud HTTP se envía sobre la base de la conexión;

La conexión TCP está en una petición HTTP puede ser enviada una pluralidad de diferentes versiones de este modelo es diferente.

En HTTP / 1.0 se crea la conexión TCP cuando la petición http creado síncrono, una solicitud HTTP enviada al servidor, entonces la respuesta del servidor, una conexión TCP se cierra;

HTTP / 1.1, de alguna manera se puede declarar que la conexión se ha mantenido, tras la finalización de una solicitud de transmisión, a continuación, puede transmitir otra solicitud. Estos beneficios son: la necesidad de "apretón de manos de tres vías" se consume en el proceso de creación de una conexión TCP, "de tres vías" representa tres transmisión de la red.

Si se mantiene la conexión TCP, no habrá segundo pedido de enviar este "enlace de tres vías" del consumo. En la misma TCP HTTP / 2 también puede estar conectado en la solicitud HTTP transmitida concurrentemente.

Perfil formato de mensaje .TCP una
Aquí Insertar imagen Descripción
ss número de secuencia: 4 bytes para la marca de orden de segmento de datos, la conexión TCP todos los datos de bytes transmitidos se compilan en un número de serie, un número de bytes desde el primer locales azar generada; ed del número de bytes a, dar a cada segmento se le asigna un número de serie; ss es el número de secuencia del primer byte del número de segmento de datos.

número de confirmación ACK: 4 bytes, los próximos espera recibir el otro del primer byte de datos de un número de segmento; primer byte del número de secuencia del segmento indica el número de datos que llevan; los números se refieren confirmaron se espera recibir el próximo número de bytes, por lo que este número más el último byte del segmento es el número de confirmación.

Acuse de recibo ACK: un bit, sólo cuando ACK = 1, 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

La sincronización SYN: para la sincronización de establecimiento de la conexión en serie. Significa que cuando SYN = 1, ACK = 0: esta es una solicitud de conexión segmentos de paquete. Si la conexión acordado, en los segmentos de mensaje de respuesta que SYN = 1, ACK = 1. En consecuencia, SYN = 1 indica que esta es una solicitud 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.

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

PS: ACK, SYN y FIN de estas palabras en mayúsculas representan los bits cuyo valor es o bien 1 o un 0; ack, SEC minúsculas representación número de palabra.
Aquí Insertar imagen Descripción
En segundo enlace de tres vías apreciará que
Aquí Insertar imagen Descripción
primero apretón de manos: se establece la conexión, el cliente envía paquetes SYN (syn = x) al servidor, y entra en el estado SYN_SENT, esperando el servidor para confirmar; el SYN: Número de secuencia de sincronización (Números Sincronizar de secuencia).

Segundo apretón de manos: servidor recibe paquetes SYN, debe confirmar el cliente SYN (ACK = x + 1), mientras que sí mismos envía un paquete SYN (syn = y), es decir, paquete SYN + ACK, entonces el servidor entra en un estado SYN_RECV;

Tercera apretón de manos: el cliente recibe el paquete SYN + ACK al servidor, el servidor envía un paquete ACK de acuse de recibo (ACK = y + 1), se envía este paquete, el cliente y el servidor en el ESTABLECIDO (conexión TCP tiene éxito) estado, completar los tres apretón de manos.

Tres o cuatro veces y agitaron .TCP:
Aquí Insertar imagen Descripción
1) Las cuestiones relativas al proceso del cliente un mensaje de liberación de conexión y deja de enviar datos. La liberación de la cabecera del paquete de datos, FIN = 1, el número de secuencia SEC = u (igual al número de secuencia del último byte transmitido previamente partir de los datos, además de 1) En este caso, el cliente entra en el FIN-WAIT-1 (terminación de espera 1) estado. disposiciones del PCT, segmento FIN, si no llevan datos, sino también consumir un número de serie.
2) el servidor recibe un mensaje de liberación de conexión, un mensaje de confirmación, ACK = 1, ACK = u + 1, y traer su propio número de secuencia de la SEQ = v, caso, el servidor pasa a la CLOSE-WAIT (Espere Cerrar ) estado. servidor TCP para informar proceso de aplicación de alto nivel, el cliente al servidor en la dirección de liberación, esta vez en un estado semi-cerrado, 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 peticiones de acuse de recibo del lado del servidor, en cuyo caso, el cliente entra en el estado FIN-WAIT-2 (2 terminación de espera), esperando el último paquete del servidor transmite una liberación de la conexión (también es necesario llegar a un acuerdo antes de que el servidor envía la datos).
4) el servidor envía se ha completado la última de datos, 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, se supone en este caso No. de serie ss = W, en este momento, el servidor en el último-ACK estado (reconocimiento último), en espera de un acuse de recibo del cliente.
5) Después de que el cliente recibe un servidor de mensajes de liberación de conexión debe enviar acuse de recibo, ACK = 1, ack = w + 1, y su número de serie ss = u + 1, En este caso, el cliente entra en el TIME- estado de espera (wait). Tenga en cuenta que la conexión TCP no ha sido puesto en libertad en este momento, el tiempo debe ser MSL 2 ** (duración máxima del segmento), cuando el cliente de deshacer la TCB correspondiente, antes de entrar en el estado CERRADO.
6) Mientras que el servidor ha recibido la confirmación enviada por el cliente, de inmediato entrar en estado cerrado. Del mismo modo, después de la revocación de TCB, es sobre la conexión TCP. Se puede ver, al final del tiempo de servidor de cliente extremos de conexión TCP anteriores.

Cuatro preguntas comunes de la entrevista:

[1] ¿Por qué el problema está conectada al enlace de tres vías cuando es la hora de cierre de cuatro vías apretón de manos?
A: Porque cuando el terminal recibe mensaje de petición de conexión de terminal SYN servidor de cliente puede ser enviado directamente paquete SYN + ACK. Caracterizado porque se utiliza el mensaje de ACK de respuesta, SYN etc se utiliza para sincronizar el paquete. Sin embargo, la conexión se cierra, cuando se recibe el paquete FIN del lado del servidor, probablemente no se cierra inmediatamente TOMA, sólo puede responder a un primer paquete ACK, dicho lado del cliente, "le envíe mensajes FIN he recibido." Sólo hasta el final de todos los mensajes de mi servidor se envían a través, puedo enviar paquetes FIN, y por lo tanto no pueden ser enviados juntos. Se requiere un apretón de manos de cuatro pasos.

[Pregunta 2] ¿Por qué estado TIME_WAIT necesidad de pasar por 2MSL (duración máxima del segmento) cerca de volver al estado?
R: Si bien es lógico, los cuatro paquetes han sido enviados, podemos ir directamente al estado cercano, pero tenemos la ilusión de una red no es confiable, puede ser el último ACK se pierde. Así estado TIME_WAIT se utiliza para retransmitir los paquetes ACK se pueden perder. Enviar a cabo la final del cliente respuesta ACK, pero el ACK se puede perder. Si no hay ningún servidor de ACK, FIN enviado segmento se repetirá. El cliente puede no cierra inmediatamente, debe ser confirmada 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 dos veces el MSL (vida máximo del segmento). 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.

[Pregunta 3] ¿Por qué no puede conectarse a través de dos vías apretón de manos?
A: 3-way apretón de manos para dos importantes funciones completas, ambas partes deben hacer los preparativos para enviar datos (ambos lados se conocen entre sí listo), sino también para permitir a las partes a negociar sobre el número de secuencia inicial, número de serie durante el apretón de manos se envió y reconocido.
Ahora ponga en un enlace de tres vías sólo requiere dos manos, un callejón sin salida es probable que ocurra. Como un ejemplo, considere la comunicación entre el ordenador C y S, S se supone que C transmite un paquete de solicitud de conexión, el paquete recibido es S, y envía el paquete de confirmación. Bajo el acuerdo de los dos se dieron la mano, S considera que la conexión se ha establecido con éxito, puede comenzar a enviar paquetes de datos. Sin embargo, C en el caso de S paquete de respuesta se pierde en la transmisión, y no sabrá si S está listo, no sé qué tipo de establecimiento número de serie, C S incluso duda de si ha recibido su propio paquete de solicitud de conexión. En este caso, C considera que la conexión no se ha establecido con éxito, se ignorará cualquier paquete de datos enviado por S, a la espera de la conexión de paquete de respuesta de confirmación. Después de que el paquete S tiempo de espera envió transmite repetidamente el mismo paquete. Esto crea un punto muerto.

[4] cómo hacer el problema 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, 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.

Publicado 99 artículos originales · ganado elogios 2 · Vistas 2589

Supongo que te gusta

Origin blog.csdn.net/weixin_41588751/article/details/105348030
Recomendado
Clasificación