Colección de citas famosas - Colección de máximas - Protocolo de capa de transporte (TCP, UDP)

Protocolo de capa de transporte (TCP, UDP)

La capa de transporte define la conectividad de un extremo a otro entre las aplicaciones host. Los dos protocolos más comunes en la capa de transporte son el Protocolo de control de transmisión (TCP) y el Protocolo de datagramas de usuario (UDP).

Para simplificar la descripción del problema, este curso utiliza Telnet como ejemplo para describir tecnologías relacionadas. El dispositivo admite el inicio de sesión a través del protocolo Telnet y el protocolo Stelnet. Al utilizar Telnet, el protocolo Stelnet v1 presenta riesgos de seguridad. Se recomienda utilizar STelnet v2 para iniciar sesión en el dispositivo.

Para simplificar la descripción del problema, este curso utiliza FTP como ejemplo para describir tecnologías relacionadas. El dispositivo admite la transferencia de archivos mediante protocolo FTP, TFTP y SFTP. Existen riesgos al utilizar los protocolos FTP, TFTP y SFTP v1. Se recomienda utilizar SFTP v2 para operaciones de archivos.

TCP es un protocolo de capa de transporte orientado a conexión que proporciona servicios de transmisión confiables.

TCP es un protocolo de extremo a extremo orientado a la conexión. Como protocolo de control de transmisión, TCP puede proporcionar una transmisión de datos confiable para el host. TCP se basa en protocolos de red para proporcionar rutas de transmisión disponibles para el host.

TCP permite que un host ejecute múltiples procesos de aplicaciones simultáneamente. Cada host puede tener múltiples puertos de aplicaciones y la combinación de número de puerto, dirección IP de origen y destino identifica de forma única una sesión. Los puertos se dividen en puertos conocidos y puertos dinámicos. Algunos servicios de red utilizan puertos fijos. Estos puertos se denominan puertos conocidos y los números de puerto varían del 0 al 1023.

Por ejemplo: los servicios FTP, HTTP, Telnet y SNMP utilizan puertos conocidos.

Rango de puertos dinámicos 1024~65535 Estos números de puerto generalmente no están asignados a un determinado servicio, lo que significa que muchos servicios pueden usar estos puertos. Siempre que el programa en ejecución solicite al sistema que acceda a la red, el sistema puede asignar uno de estos números de puerto para que lo utilice el programa.

TCP suele utilizar IP como protocolo de capa de red. Aquí es donde los datos TCP se encapsulan en paquetes IP. El segmento de datos TCP consta de encabezado TCP y datos TCP. TCP puede tener un encabezado de hasta 60 bytes. Si no hay un campo Opciones, la longitud normal es de 20 bytes.

El encabezado TCP consta de algunos campos identificados como se muestra en la figura anterior. Aquí se muestran varios campos comunes.

Nota:

1) El host A (generalmente también llamado cliente) envía un segmento de datos SYN, lo que indica que espera establecer una conexión con el servidor A. El número de secuencia de este el segmento de datos (seq) es a;

2) El servidor A responde con un segmento de datos marcado como SYN+ACK. El número de secuencia (seq) de este segmento de datos es b, y el número de secuencia de confirmación es la secuencia. número de host A más 1 (a+1), como confirmación del mensaje SYN del host A.

3) El host A envía un segmento de datos marcado con ACK. El número de secuencia (seq) de este segmento de datos es a+1 y el número de secuencia de confirmación es el número de secuencia del servidor A más 1 (b). +1), como confirmación del segmento SYN del servidor A.

TCP es un protocolo de capa de transporte full-duplex confiable y orientado a la conexión.

La reanudación de la conexión TCP es un proceso de protocolo de enlace de tres vías.

La transmisión confiable de TCP también menciona que TCP utiliza tecnología de confirmación para garantizar que el dispositivo de destino haya recibido los datos enviados desde el dispositivo de origen y sean precisos.

El principio de funcionamiento de la tecnología de confirmación es el siguiente:

Cuando el dispositivo de destino recibe el segmento de datos enviado por el dispositivo de origen, enviará un mensaje de confirmación al origen. El dispositivo de origen recibe el mensaje de confirmación, continúa enviando segmentos de datos, etc.

Como se muestra en la figura, el host A envía segmentos de datos TCP al servidor A. Para facilitar la descripción, se supone que la longitud de cada segmento de datos es de 500 bytes.

Cuando el servidor A recibe con éxito el byte con el número de secuencia M+1499 y todos los bytes anteriores, lo confirmará con el número de secuencia M+1401=M+1500. Además, debido a que falló la transmisión del segmento de datos N+3, el servidor A no pudo recibir el byte con el número de secuencia M+1500, por lo que el servidor A confirmará nuevamente con el número de secuencia M+1500.

Nota: Como se mencionó anteriormente, si falla la transmisión del segmento de datos N+3, entonces el segundo número de confirmación M+1500, el host A enviará todos los N+3, N+4 y N+5. una vez.

La tecnología de ventana deslizante TCP realiza el control de flujo de la transmisión de datos entre dispositivos de un extremo a otro cambiando dinámicamente el tamaño de la ventana.

Como se muestra en la figura, el control de flujo se implementa entre el host A y el servidor A a través de una ventana deslizante. Para facilitar la comprensión, este ejemplo solo considera que cuando el host A envía datos al servidor A, el servidor A realiza el control de flujo a través de una ventana deslizante.

En el ejemplo:

El host A envía 4 segmentos de datos con una longitud de 1024 bytes al servidor, en el que el tamaño de la ventana del host es de 4096 bytes. Después de que el servidor A recibe el tercer byte, el área del búfer se llena y el cuarto segmento de datos se descarta. El servidor responde con ACK3073 (1024*3=3072) y el tamaño de la ventana se ajusta a 3072, lo que indica que el búfer del servidor solo puede manejar segmentos de datos de 3072 bytes. Entonces el host A cambia su velocidad de envío y envía segmentos de datos con un tamaño de ventana de 3072.

Antes de cerrar la conexión, el anfitrión debe confirmar la recepción del ACK de la otra parte.

TCP admite el modo full-duplex para la transmisión de datos, lo que significa que los datos se pueden transmitir en ambas direcciones al mismo tiempo. Antes de transmitir datos, TCP en realidad establece una conexión en dos direcciones mediante un protocolo de enlace de tres vías. Una vez completada la transmisión, las conexiones en ambas direcciones deben cerrarse.

El establecimiento de una conexión TCP es un proceso de protocolo de enlace de tres vías, y la terminación de una conexión TCP requiere cuatro despedidas.

Como se muestra en la figura:

1. El host A quiere finalizar la conexión, por lo que envía un segmento de datos que identifica FIN y ACK, el número de secuencia es a y la confirmación El número de secuencia es b.

2. El servidor A responde con un segmento de datos marcado ACK, con el número de secuencia b y el número de secuencia de confirmación a+1, como confirmación del mensaje FIN del host A.

3. El servidor A quiere finalizar la conexión, por lo que envía un segmento de datos marcado como FIN y ACK al host A. El número de secuencia es by la confirmación es a+1.

4. El host A responde con un segmento de datos marcado ACK, con el número de secuencia a+1 y el número de secuencia de confirmación b+1, como confirmación del mensaje FIN del servidor A.

Las cuatro interacciones anteriores completan el cierre de la conexión en ambas direcciones.

Pasos de desconexión de TCP, esto es más detallado:

/ctrl_qun/article/details/52518479

UDP es un protocolo de capa de transporte sin conexión, la confiabilidad de la transmisión no lo es garantizado.

Cuando la aplicación no tiene altos requisitos de confiabilidad de transmisión, pero tiene altos requisitos de velocidad y retraso de transmisión, el protocolo UDP se puede usar para reemplazar el protocolo TCP para controlar el reenvío de datos en la capa de transporte. . Cuando UDP envía datos desde el origen al destino, no es necesario establecer una conexión por adelantado. UDP utiliza un mecanismo simple y fácil de operar para transmitir datos entre aplicaciones. No utiliza la tecnología de confirmación ni el mecanismo de ventana deslizante en TCP. Por lo tanto, UDP no puede garantizar la confiabilidad de la transmisión de datos ni puede evitar la recepción de datos duplicados.

El encabezado UDP solo ocupa 8 bytes y no existe un mecanismo de confirmación al transmitir datos (nota, pero hay una suma de verificación).

Los mensajes UDP se dividen en dos partes: encabezado UDP y área de datos UDP. El encabezado consta del puerto de origen, el puerto de destino, la longitud del mensaje y la suma de comprobación. UDP es adecuado para la transmisión de datos en tiempo real, como comunicaciones de voz y vídeo. En comparación con TCP, UDP tiene una mayor eficiencia de transmisión y una menor sobrecarga, pero no puede garantizar la confiabilidad de la transmisión de datos. La identificación del encabezado UDP es la siguiente:

1) Número de puerto de origen de 16 bits: el número de puerto utilizado por la aplicación host de origen.

2) Número de puerto de destino de 16 bits: el número de puerto utilizado por la aplicación host de destino.

3) Longitud UDP de 16 bits: se refiere a la longitud en bytes del encabezado UDP y los datos UDP. Como la longitud del encabezado UDP es de 8 bytes, el valor mínimo del campo es 8.

4) Suma de comprobación UDP de 16 bits: este campo proporciona la misma función que el campo de suma de comprobación TCP; este campo es opcional.

Cuando se utiliza UDP para transmitir datos, la aplicación proporciona funciones como confirmación de llegada de mensajes, clasificación y control de flujo según sea necesario.

Cuando el host A envía paquetes de datos, estos paquetes de datos se envían a la red de manera ordenada. Cada paquete de datos se envía de forma independiente en la red, por lo que diferentes paquetes de datos pueden pasar a través de diferentes La ruta de la red es el host. B. En este caso, el paquete de datos enviado primero no necesariamente llega primero al host B. Debido a que los paquetes UDP no tienen números de secuencia, el Host B no podrá volver a ensamblar los paquetes en el orden original a través del protocolo UDP. Por lo tanto, la aplicación debe proporcionar confirmación de llegada de paquetes, clasificación, control de flujo y otras funciones (es decir, Paquetes UDP El acuse de recibo de llegada, la secuenciación y el control de flujo están determinados por la aplicación). Normalmente, UDP utiliza un mecanismo de transporte en tiempo real y marcas de tiempo para transmitir datos de voz y vídeo.

UDP es adecuado para transmitir tráfico sensible a retrasos, como voz y vídeo.

Cuando se utiliza el protocolo TCP para transmitir datos, si se pierde un segmento de datos o el extremo receptor no confirma un determinado segmento de datos, el extremo emisor reenviará el segmento de datos.

El reenvío de datos por TCP provocará retrasos en la transmisión y datos duplicados, lo que reducirá la experiencia del usuario. Para aplicaciones sensibles a retrasos, generalmente se puede ignorar una pequeña cantidad de pérdida de datos. Esto se debe a que el uso de la transmisión UDP puede mejorar la experiencia del usuario.

Resumen:

1. ¿Cuál es la función del bit de confirmación en el encabezado TCP?

El destino utiliza el indicador ACK en el encabezado TCP para confirmar que se han recibido los datos. Después de que el destino reciba con éxito el byte con el número de secuencia x, lo confirmará con el número de secuencia x+1.

2. ¿Qué bits de identificación en el encabezado TCP participan en el protocolo de enlace de tres vías de TCP?

Durante el proceso de protocolo de enlace de tres vías de TCP, los indicadores SYN y ACK se utilizan para solicitar y confirmar el establecimiento de una conexión.