Capítulo 5 Capa de transporte

1. Descripción general de la capa de transporte

  • La capa física , la capa de enlace de datos y la capa de red en la arquitectura de red informática introducidas en los cursos anteriores resuelven conjuntamente los problemas que enfrentan los hosts interconectados a través de redes heterogéneas y realizan la comunicación de host a host.

  • Pero las entidades reales que realmente se comunican en una red informática son los procesos en los hosts en ambos extremos de la comunicación.

  • Cómo proporcionar servicios de comunicación directa para procesos de aplicaciones que se ejecutan en diferentes hosts es tarea de la capa de transporte, y el protocolo de la capa de transporte también se denomina protocolo de un extremo a otro.

1689340870098

La capa de transporte proporciona directamente servicios para la comunicación lógica entre procesos de aplicación.

La capa de transporte protege los detalles del núcleo de la red subyacente (como la topología de la red, el protocolo de enrutamiento adoptado, etc.) de los usuarios de alto nivel y hace que el proceso de aplicación vea que existe una comunicación lógica de extremo a extremo entre dos. canal de entidades de capa de transporte.

De acuerdo con los diferentes requisitos de la aplicación, la capa de transporte de Internet proporciona dos protocolos de transporte diferentes para la capa de aplicación, a saber, TCP orientado a conexión y UDP sin conexión, estos dos protocolos son los contenidos principales que se analizarán en este capítulo.

2. El concepto de número de puerto de la capa de transporte, multiplexación y demultiplexación.

  • Los procesos que se ejecutan en una computadora se identifican mediante un identificador de proceso PID .

  • Las computadoras en Internet no usan un sistema operativo unificado y diferentes sistemas operativos (Windows, Linux, Mac OS) usan identificadores de proceso en diferentes formatos .

  • Para permitir la comunicación de red entre procesos de aplicación de computadoras que ejecutan diferentes sistemas operativos, se debe utilizar un método unificado para identificar los procesos de aplicación del sistema TCP/IP.

  • La capa de transporte del sistema TCP/IP utiliza números de puerto para distinguir diferentes procesos de aplicación en la capa de aplicación.

    • El número de puerto está representado por 16 bits y el rango de valores es 0 ~ 65535;
    • Números de puerto familiares: 0 ~ 1023, IANA asigna estos números de puerto a algunos de los protocolos de aplicación más importantes en el sistema TCP/IP, por ejemplo: FTP usa 21/20, HTTP usa 80 y DNS usa 53.
    • Números de puerto registrados: 1024~49151, utilizados por aplicaciones sin números de puerto conocidos. El uso de dichos números de puerto debe registrarse en la IANA de acuerdo con los procedimientos prescritos para evitar la duplicación. Ejemplo: Microsoft RDP Microsoft Remote Desktop utiliza el puerto 3389.
    • Número de puerto temporal: 49152 ~ 65535, reservado para que el proceso del cliente elija usarlo temporalmente. Cuando el proceso del servidor recibe el mensaje del proceso del cliente, conoce el número de puerto dinámico utilizado por el proceso del cliente. Una vez finalizada la comunicación, otros procesos del cliente pueden utilizar este número de puerto más adelante.
    • El número de puerto solo tiene significado local , es decir, el número de puerto solo se utiliza para identificar procesos en la capa de aplicación de la computadora . En Internet, el mismo número de puerto en diferentes computadoras no está relacionado.

Multiplexación en el emisor y demultiplexación en el receptor

1689341482395

  • El número de puerto conocido de la capa de transporte utilizado por los protocolos comunes de la capa de aplicación del sistema TCP/IP.

1689341543545

3. Comparación entre UDP y TCP

1689341963635

1689342032548

UDP admite unidifusión, multidifusión y difusión

TCP solo admite unidifusión

UDP está orientado a aplicaciones

TCP está orientado al flujo de bytes

UDP proporciona servicios de transmisión sin conexión y poco confiables a la capa superior (adecuado para aplicaciones en tiempo real como telefonía IP y videoconferencias)

TCP proporciona servicios de transmisión confiables orientados a la conexión a la capa superior (adecuado para aplicaciones que requieren una transmisión confiable, como la transmisión de archivos)

1689342516619

4. Control de flujo TCP

  • En general, siempre queremos que los datos se transfieran más rápido.

    • Pero si el remitente envía los datos demasiado rápido, es posible que el receptor no tenga tiempo de recibirlos, lo que provocará la pérdida de datos.
  • El llamado control de flujo (control de flujo) consiste en hacer que la velocidad de envío del remitente no sea demasiado rápida, para que el receptor tenga tiempo de recibir.

  • El control de flujo del remitente se puede implementar fácilmente en la conexión TCP utilizando el mecanismo de ventana deslizante.

1689343663708

1689344628615

1689344771862

[[Pregunta 39 de 2010] Se establece una conexión TCP entre el host A y el host B, y la longitud máxima del segmento TCP es 1000 bytes. Si la ventana de congestión actual del host A es de 4000 bytes, después de que el host A envía dos segmentos máximos consecutivamente al host B, recibe con éxito el segmento de confirmación del primer segmento enviado por el host B y el tamaño de la ventana de recepción anunciado en el segmento de confirmación es 2000 bytes, entonces el número máximo de bytes que el host A puede enviar al host B en este momento es A
A.1000
B.2000
C.3000
D.4000

【Análisis】

La ventana de envío del remitente TCP = min [ventana de autocongestión, la ventana de recepción del receptor TCP]

El tema no proporciona el valor inicial de la ventana de envío del remitente TCP, luego toma el valor de la ventana de congestión como valor de la ventana de envío

1689345263218

5. Control de congestión de TCP

  • En un cierto período de tiempo, si la demanda de un recurso en la red excede la parte disponible que el recurso puede proporcionar, el rendimiento de la red se deteriorará, situación que se denomina congestión.

    • La capacidad de enlace (es decir, el ancho de banda) en una red informática, las cachés y los procesadores en los nodos de conmutación, etc., son todos recursos de la red.
  • Si se produce congestión y no se controla, el rendimiento de toda la red disminuirá a medida que aumente la carga de entrada.

1689509634019

A continuación se presentan los principios básicos de estos cuatro algoritmos de control de congestión, asumiendo las siguientes condiciones:

  1. Los datos se envían en una dirección y solo los acuses de recibo se envían en la otra dirección.
  2. El receptor siempre tiene suficiente espacio en el buffer, por lo que el tamaño de la ventana de envío del remitente está determinado por el nivel de congestión de la red.
  3. La unidad de discusión es el número máximo de segmentos de mensajes MSS, no bytes.

5.1 Inicio lento y prevención de congestión

1689510004578

  • El remitente mantiene una variable de estado llamada ventana de congestión cwnd, cuyo valor depende del grado de congestión de la red y cambia dinámicamente.

    • El principio de mantenimiento de la ventana de congestión cwnd: mientras no haya congestión en la red, la ventana de congestión aumentará, pero mientras la red esté congestionada, la ventana de congestión disminuirá.
    • La base para juzgar la ocurrencia de congestión de la red: el mensaje de confirmación que debería haber llegado no se recibió a tiempo (es decir, se produjo una retransmisión por tiempo de espera).
  • El remitente toma la ventana de congestión como ventana de envío swnd, es decir, swnd = cwnd.

  • Mantenga una variable de estado ssthresh de umbral de inicio lento:

    • Cuando cwnd <ssthresh, utilice el algoritmo de inicio lento;
    • Cuando cwnd > ssthresh, deje de usar el algoritmo de inicio lento y use en su lugar el algoritmo para evitar la congestión;
    • Cuando cwnd = ssthresh, se puede utilizar el algoritmo de inicio lento o el algoritmo para evitar la congestión.

1689510470723

temporizador de retransmisión expiró

Si considera que es probable que la red esté congestionada, realice el siguiente trabajo:

  • Actualice el valor ssthresh a la mitad del valor cwnd cuando se produzca congestión;

  • Disminuya el valor de cwnd a 1 y reinicie el algoritmo de inicio lento.

1689510572620

"Inicio lento" significa que hay pocos segmentos inyectados en la red al principio, y no significa que la ventana de congestión cwnd crezca lentamente;

"Evitar la congestión" no significa que la congestión se pueda evitar por completo, sino que se controla que la ventana de congestión crezca linealmente durante la fase de evitación de la congestión, lo que hace que la red sea menos propensa a la congestión;

5.2 Retransmisión rápida y recuperación rápida

  • El algoritmo de inicio lento y evitación de congestión es el algoritmo de control de congestión de TCP (versión TCP Tahoe) propuesto en 1988.

  • En 1990, se agregaron dos nuevos algoritmos de control de congestión (para mejorar el rendimiento de TCP), que son la retransmisión rápida y la recuperación rápida (versión TCP Reno).

    • En ocasiones, se pierden segmentos individuales en la red, pero la red en realidad no está congestionada.
      • Esto hará que el remitente retransmita horas extras y crea erróneamente que la red está congestionada;
      • El remitente establece la ventana de congestión cwnd en el valor mínimo 1 e inicia el algoritmo de inicio lento por error, lo que reduce la eficiencia de la transmisión.
  • El uso del algoritmo de retransmisión rápida permite al remitente conocer la pérdida de segmentos de mensajes individuales lo antes posible.

  • La llamada retransmisión rápida consiste en hacer que el remitente retransmita lo antes posible, en lugar de esperar a que expire el temporizador de retransmisión antes de retransmitir.

    • Se requiere que el receptor no espere la confirmación adicional cuando envía los datos, sino que envíe la confirmación inmediatamente;
    • Incluso si se recibe un segmento fuera de secuencia, se debe emitir inmediatamente un acuse de recibo duplicado del segmento recibido;
    • Una vez que el remitente recibe tres confirmaciones duplicadas consecutivas, retransmite el segmento correspondiente inmediatamente en lugar de esperar a que expire el temporizador de retransmisión del segmento antes de retransmitir.
    • Para segmentos perdidos individuales, el remitente no retransmitirá horas extras y no creerá erróneamente que hay congestión (y luego reducirá la ventana de congestión cwnd a 1). El uso de una retransmisión rápida puede aumentar el rendimiento de toda la red en aproximadamente un 20%.

1689511130245

  • Una vez que el remitente recibe 3 acuses de recibo repetidos, sabe que sólo se pierden segmentos individuales. Entonces, el algoritmo de inicio lento no se inicia, pero se ejecuta el algoritmo de recuperación rápida;
    • El remitente ajusta el valor ssthresh del umbral de inicio lento y el valor cwnd de la ventana de congestión a la mitad de la ventana actual; comienza a ejecutar el algoritmo para evitar la congestión.
    • Algunas implementaciones de recuperación rápida aumentan el valor de la ventana de congestión cwnd al comienzo de la recuperación rápida, que es igual a new = ssthresh + 3.
      • Dado que el remitente recibió 3 acuses de recibo repetidos, significa que 3 segmentos de datos abandonaron la red;
      • Estos tres segmentos de mensaje ya no consumen recursos de la red sino que permanecen en el búfer de recepción del receptor;
      • Se puede observar que en lugar de acumular segmentos de mensajes en la red, se han reducido 3 segmentos de mensajes. Por tanto, la ventana de congestión se puede ampliar adecuadamente.

1689511433554

[Pregunta 39 de 2009] Una conexión TCP siempre envía segmentos TCP con una longitud máxima de segmento de 1 KB. El remitente tiene suficientes datos para enviar. Cuando se agota el tiempo de espera cuando la ventana de congestión es de 16 KB, si la transmisión de los segmentos TCP dentro de los siguientes 4 RTT (tiempo de ida y vuelta) es exitosa, cuando todos los segmentos TCP enviados dentro del cuarto tiempo RTT obtienen una respuesta positiva, la congestión El tamaño de la ventana es C
A.7KB
B.8KB
C.9KB
D.16KB

1689511751832

6. Selección del tiempo de retransmisión del tiempo de espera de TCP

1689512106718

  • No puede utilizar directamente la muestra de RTT obtenida de una determinada medición para calcular el tiempo de retransmisión RTO.

  • Utilizando las muestras de RTT obtenidas de cada medición, se calculan los tiempos de ida y vuelta promedio ponderados (también conocidos como tiempos de ida y vuelta suavizados).

1689512178285

  • Los RTT de tiempo de ida y vuelta promedio ponderados obtenidos de esta manera son más suaves que los valores de RTT medidos.

  • Obviamente, el tiempo extra de retransmisión RTO debería ser ligeramente mayor que el tiempo promedio ponderado de ida y vuelta RTT.

1689512463149

7. Realización de una transmisión confiable de TCP

  • TCP se basa en una ventana deslizante en bytes para lograr una transmisión confiable

1689513176672

1689513273595

  • Aunque la ventana de envío del remitente se configura de acuerdo con la ventana de recepción del receptor, al mismo tiempo, la ventana de envío del remitente no siempre es tan grande como la ventana de recepción del receptor.

    • El valor de la ventana de transmisión de la red debe experimentar un cierto retraso, y este tiempo aún es incierto.
    • El remitente también puede reducir adecuadamente el tamaño de su ventana de envío según la situación de congestión de la red en ese momento.
  • TCP no estipula claramente cómo tratar los datos que llegan desordenados.

    • Si el receptor descarta los datos que llegan desordenados, entonces la gestión de la ventana de recepción será relativamente sencilla, pero esto no es bueno para la utilización de los recursos de la red, porque el remitente transmitirá repetidamente más datos.

    • TCP generalmente almacena temporalmente los datos que llegan desordenados primero en la ventana de recepción y luego los entrega en secuencia al proceso de aplicación de la capa superior después de recibir los bytes faltantes en el flujo de bytes.

  • TCP requiere que el receptor tenga mecanismos de reconocimiento acumulativo y reconocimiento complementario, lo que puede reducir la sobrecarga de transmisión. El receptor puede enviar una confirmación en el momento adecuado o enviar el mensaje de confirmación junto con ella cuando tenga datos para enviar.

    • El receptor no debe retrasar demasiado el envío del acuse de recibo; de lo contrario, el remitente retransmitirá tiempos de espera innecesarios, lo que a su vez desperdiciará recursos de la red. El estándar TCP estipula que el retraso de confirmación no debe exceder los 0,5 segundos. Si se recibe una secuencia de segmentos con una longitud máxima, DEBE enviarse un acuse de recibo para cada dos segmentos [RFC 1122].
    • En realidad, el transporte a cuestas no ocurre con mucha frecuencia, ya que la mayoría de las aplicaciones rara vez envían datos en ambas direcciones al mismo tiempo.
  • La comunicación TCP es una comunicación full-duplex. Cada parte de la comunicación envía y recibe segmentos. Por lo tanto, cada lado tiene su propia ventana de envío y ventana de recepción. Cuando se trata de estas ventanas, asegúrese de determinar de qué lado se trata.

[Pregunta 38 de 2009] Se ha establecido una conexión TCP entre el host A y el host B. El host A envió dos segmentos TCP consecutivos al host B, que contienen 300 bytes y 500 bytes de carga útil respectivamente. El primer segmento El número de serie es 200. Después del host B recibe dos segmentos correctamente, el número de serie de confirmación enviado al host A es D
A.500
B.700
c.800
D.1000

1689514561841

[Pregunta 40 de 2011] Se ha establecido una conexión TCP entre el host A y el host B, y el host A envió tres segmentos TCP consecutivos al host B, que contienen cargas útiles de 300 bytes, 400 bytes y 500 bytes respectivamente. El número de secuencia del tercero El segmento es 900. Si el host B solo recibe correctamente el primer y tercer segmento, el número de secuencia de confirmación enviado por el host B al host A es B
A.300
B.500
C.1200
D.1400

1689514822623

8. Gestión de conexiones de transporte TCP

8.1 Establecimiento de conexión TCP

  • TCP es un protocolo orientado a conexión, que transmite segmentos TCP basados ​​en conexiones de transporte.

  • El establecimiento y liberación de una conexión de transporte TCP es un proceso esencial en toda comunicación orientada a conexión.

  • Una conexión de transporte TCP tiene las siguientes tres fases:

    1. Establecer una conexión TCP
    2. transmisión de datos
    3. liberar la conexión TCP

1689514993359

  • La gestión de conexiones de transporte de TCP tiene como objetivo permitir que el establecimiento y liberación de conexiones de transporte se realicen normalmente.

  • El establecimiento de la conexión TCP debe resolver los siguientes tres problemas:

    1. Permitir que ambas partes de TCP conozcan la existencia de cada una;
    2. Permitir que ambas partes de TCP negocien algunos parámetros (como el valor máximo de la ventana, si se utilizan opciones de expansión de ventana y opciones de marca de tiempo, y calidad del servicio, etc.);
    3. Permite que ambas partes de TCP asignen recursos de la entidad de transporte (como el tamaño del búfer, entradas en la tabla de conexiones, etc.).

TCP utiliza un "apretón de manos de tres mensajes" para establecer una conexión

1689515528005

[Pregunta 39 de 2011] El host A envía un segmento TCP (SYN = 1, seq = 11220) al host B, esperando establecer una conexión TCP con el host B. Si el host B acepta la solicitud de conexión, entonces el host B envía al host A el El segmento TCP correcto podría ser C
A.(SYN=0, ACK=0, seq=11221, ack=11221)
B.(SYN=1,ACK=1, seq=11220, ack=11220)
C.(SYN= 1 , ACK=1, secuencia=11221, confirmación=11221)
D. (SYN=O, ACK=0, secuencia=11220, confirmación=11220)

1689515927870

8.2 Liberación de conexión TCP

1689516328677

9. El formato del encabezado del segmento TCP.

  • Para lograr una transmisión confiable, TCP adopta un enfoque orientado al flujo de bytes.

  • Sin embargo, cuando TCP envía datos, toma algunos o todos los bytes del búfer de envío y le agrega un encabezado para convertirlo en un segmento TCP antes de enviarlo.

    • Un segmento TCP consta de dos partes: encabezado y carga de datos;
    • Todas las funciones de TCP se reflejan en la función de cada campo en su encabezado.

1689516691650

1689516967179

Puerto de origen: ocupa 16 bits, escribe el número del puerto de origen y se utiliza para identificar el proceso de aplicación que envía el segmento TCP.

Puerto de destino: ocupa 16 bits, escribe el número de puerto de destino y se utiliza para identificar el proceso de aplicación que recibe el segmento TCP.

Número de serie: ocupa 32 bits, el rango de valores es [0,232-1], después de que el número de serie aumenta al último, el siguiente número de serie vuelve a 0. Indica el número de secuencia del primer byte de la carga útil de datos de este segmento TCP.

1689517225075

Número de confirmación: ocupa 32 bits y el rango de valores es [0,22-1]. Después de que el número de confirmación aumente al último, el siguiente número de confirmación volverá a 0. Indica el número de secuencia del primer byte de la carga de datos que se espera que reciba el siguiente segmento TCP de la otra parte, y también es un reconocimiento de todos los datos recibidos anteriormente. Si el número de confirmación = n, significa que todos los datos hasta el número de secuencia n-1 se han recibido correctamente y se espera recibir los datos con el número de secuencia n.

Bit de bandera de confirmación ACK: el campo del número de confirmación es válido solo cuando el valor es 1; el campo del número de confirmación no es válido cuando el valor es 0. TCP estipula que una vez establecida la conexión, todos los segmentos TCP transmitidos deben establecer ACK en 1.

1689517496725

Desplazamiento de datos: ocupa 4 bits y toma 4 bytes como unidad. Se utiliza para indicar qué tan lejos está el comienzo de la parte de carga útil de datos del segmento TCP desde el comienzo del segmento TCP. Este campo en realidad indica la longitud del encabezado del segmento TCP.
La longitud fija del encabezado es de 20 bytes, por lo que el valor mínimo del campo de compensación de datos es (0101)2. La longitud máxima del encabezado es de 60 bytes, por lo que el valor máximo del campo de compensación de datos es (1111)2.

Reservado: ocupa 6 bits, reservado para uso futuro, pero actualmente debe establecerse en 0.

Ventana: ocupa 16 bits, en bytes. Indica la ventana de recepción de la parte que envía este segmento. El valor de la ventana sirve como base para que el receptor permita al remitente configurar su ventana de envío. Esto es para controlar la capacidad de envío del remitente mediante la capacidad de recepción del receptor, lo que se denomina control de flujo.

Indicador de sincronización SYN: se utiliza para sincronizar el número de serie cuando se establece la conexión TCP.

Indicador de terminación FIN: se utiliza para liberar la conexión TCP.

Restablecer bandera RST: se utiliza para restablecer la conexión TCP. Cuando RST = 1, indica que la conexión TCP es anormal y la conexión debe liberarse y luego restablecerse. Establecer RST en 1 también se utiliza para rechazar un segmento ilegal o negarse a abrir una conexión TCP.

Enviar bit de bandera PSH: el TCP del receptor entregará el segmento al proceso de aplicación lo antes posible después de recibir el segmento con el bit de bandera establecido en 1, en lugar de esperar hasta que el búfer de recepción esté lleno antes de entregarlo.

Bit de bandera urgente URG: cuando el valor es 1, el campo de puntero urgente es válido; cuando el valor es 0, el campo de puntero urgente no es válido.

Puntero urgente: ocupa 16 bits, en bytes, utilizado para indicar la longitud de los datos urgentes. Cuando el remitente tiene datos urgentes, los datos urgentes se pueden poner en cola al frente del búfer de envío y encapsularlos inmediatamente en un segmento TCP para su envío. El puntero urgente indicará cuánto tiempo contienen los datos urgentes en la carga útil de datos de este segmento de mensaje, y los datos ordinarios siguen a los datos urgentes.

Relleno: dado que la longitud de la opción es variable, el relleno se utiliza para garantizar que el encabezado del segmento del mensaje pueda ser divisible por 4 (porque el campo de desplazamiento de datos, es decir, el campo de longitud del encabezado, está en unidades de 4 bytes). .

referencia:

5.9 El formato de encabezado de un segmento TCP_哔哩哔哩_bilibili

Supongo que te gusta

Origin blog.csdn.net/m0_57385165/article/details/131758237
Recomendado
Clasificación