Notas sobre la red informática: capa de transporte

capa de transporte

Desde la perspectiva de la comunicación y el procesamiento de la información, la capa de transporte es la cuarta capa en el modelo de referencia de cinco capas.Proporciona servicios de comunicación a la capa de aplicación superior. Pertenece al nivel más alto de la parte orientada a la comunicación y también es el nivel más bajo de funciones de usuario.

5.1 Servicios proporcionados por la capa de transporte

5.1.1 Funciones de la capa de transporte

La capa de transporte proporciona comunicación entre procesos de aplicación entre dos hosts , también conocida como comunicación de extremo a extremo . Dado que el protocolo de la capa de red no es confiable y puede provocar pérdida, desorden y duplicación de paquetes, la capa de transporte se implementa para proporcionar servicios confiables para la transmisión de datos.

Insertar descripción de la imagen aquí

Dado que UDP en la capa de transporte no es confiable, ¿por qué se dice que la capa de transporte proporciona servicios confiables?

Es cierto que UDP en la capa de transporte no es confiable, porque el uso de UDP no puede garantizar que los datagramas lleguen al destino correctamente. Después de que UDP detecta un error, puede optar por descartarlo o puede optar por informar el error al capa de aplicación. peroLa clave aún la deben elegir los propios usuariosSi el usuario elige TCP (como el software FTP), la capa de transporte natural es confiable. Sin embargo, si el usuario utiliza UDP (como software QQ, software de videoconferencia, etc.), la capa de transporte no es confiable.Por lo tanto, si la capa de transporte es confiable tiene mucho que ver con el protocolo utilizado por la capa de transporte, pero generalmente la capa de transporte es confiable de forma predeterminada.

Funciones de la capa de transporte :

Insertar descripción de la imagen aquí

  • Proporcionar comunicación lógica entre procesos de aplicación (la capa de red proporciona comunicación lógica entre hosts). "Comunicación lógica" significa que la comunicación entre capas de transporte parece transmitir datos en dirección horizontal como se muestra en la Figura 5-2, peroDe hecho, no existe una conexión física horizontal entre las dos capas de transporte.
  • Detección de errores: Al recibirEl encabezado y la parte de datos del mensaje.Se realiza la detección de errores (la capa de red solo verifica el encabezado del datagrama IP, no la parte de datos).
  • Proporcionar servicios sin conexión o orientados a conexión. Dependiendo de la aplicación , por ejemplo, algunas transmisiones de datos requieren rendimiento en tiempo real (como videoconferencias en tiempo real), la capa de transporte debe tener dos protocolos de transmisión diferentes, a saber, TCP orientado a conexión y UDP sin conexión.TCP proporciona un servicio de transmisión altamente confiable, mientras que UDP proporciona un servicio de transmisión eficiente pero poco confiable.
  • Reutilizar y deutilizar:La multiplexación significa que diferentes procesos de aplicación en el remitente pueden utilizar el mismo protocolo de capa de transporte para transmitir datos.Demultiplexar significa que la capa de transporte del receptor puede entregar correctamente los datos al proceso de aplicación de destino después de eliminar el encabezado del mensaje.

Los servicios orientados a la conexión también tienen las dos funciones siguientes :

  • Gestión de la conexión: el proceso de definir y establecer una conexión suele denominarse apretón de manos. Por ejemplo, el mecanismo de "apretón de manos de tres vías" de TCP.
  • Control de flujo y control de congestión: envíe datos a una velocidad generalmente aceptada por la otra parte y la red para evitar la pérdida de datos causada por la congestión de la red.

¿Qué principios deberían utilizarse para determinar si se utilizan servicios orientados a la conexión o servicios sin conexión en la capa de transporte?

Es necesario distinguirlo según la naturaleza de la aplicación de la capa superior. Por ejemplo, se debe utilizar el Protocolo de transferencia de archivos (FTP) al transferir archivos, y la transferencia de archivos debe ser confiable sin errores ni pérdidas, por lo que se debe utilizar TCP orientado a la conexión en la capa de transporte. Sin embargo, si la aplicación va a transmitir información de voz o vídeo en paquetes bajo demanda, entonces, para garantizar la naturaleza en tiempo real de la transmisión de información, la capa de transporte debe utilizar UDP sin conexión.

El proceso de solicitud parece ver un canal de comunicación lógico de un extremo a otro entre las dos entidades de la capa de transporte, ¿cómo entiende esto?

Insertar descripción de la imagen aquí

TCP está orientado a la conexión, pero la IP utilizada por TCP no tiene conexión. ¿Cuáles son las principales diferencias entre estos dos protocolos?

Insertar descripción de la imagen aquí

TCP está orientado a la conexión, pero la red utilizada por TCP puede estar orientada a la conexión (como la red X.25, que se ha eliminado y aquí solo se usa como ejemplo, no es necesario comprenderla) o sin conexión (como como la red IP que ahora se usa ampliamente). Elegir una red sin conexión hace que todo el sistema sea muy flexible, pero por supuesto también trae algunos problemas.

Obviamente, TCP proporciona muchas más funciones y servicios que los que puede proporcionar IP. Esto se debe a que TCP utiliza mecanismos como reconocimientos, ventanas deslizantes y temporizadores, por lo que puede detectar mensajes erróneos, mensajes duplicados y mensajes fuera de secuencia.

5.1.2 Direccionamiento y puertos de la capa de transporte

Conceptos básicos de puertos.

Como se mencionó anteriormente, la capa de enlace de datos se aborda mediante la dirección MAC y la capa de red se aborda mediante la dirección IP.La capa de transporte se aborda por número de puerto.

El puerto (puerto de software) es el punto de acceso al servicio de la capa de transporte. El puerto permite que varios procesos de aplicación en la capa de aplicación entreguen sus datos a la capa de transporte a través del puerto y le permite a la capa de transporte saber que los datos en sus segmentos de mensaje deben Pasar hacia arriba a través del puerto y entregarse al proceso correspondiente de la capa de aplicación.. En este sentido, el puerto se utiliza para identificar el proceso de la capa de aplicación. En otras palabras, el puerto es similar al número de dormitorio y el dormitorio alberga el proceso de solicitud.

El número de puerto

Dado que hay una gran cantidad de procesos de aplicaciones de red ejecutándose en un host al mismo tiempo, se necesita una gran cantidad de números de puerto para identificar diferentes procesos.

El puerto se identifica mediante un número de puerto de 16 bits y se permite un total de 2 16 = 65536 números de puerto. El número de puerto solo tiene significado local , es decir, el número de puerto solo se usa para identificar cada proceso en la capa de aplicación de esta computadora.. Por ejemplo, no hay conexión entre el puerto 8080 del host A y el puerto 8080 del host B.

Los puertos se pueden dividir en tres categorías según el rango de números de puerto:

  • Puertos conocidos (puertos reservados):El valor es generalmente 0~1023. Cuando aparece una nueva aplicación, se le debe asignar un puerto conocido para que otros procesos de la aplicación puedan interactuar con ella.

Insertar descripción de la imagen aquí

  • Puerto de registro:El valor es 1024~49151. Lo utilizan aplicaciones que no tienen números de puerto conocidos. El uso de dichos números de puerto debe registrarse en la IANA para evitar duplicaciones.

  • Puerto de cliente o puerto efímero: el valor es49152~65535. Debido a que este tipo de número de puerto se selecciona dinámicamente solo cuando el proceso del cliente se está ejecutando, se denomina puerto efímero o puerto efímero. Una vez completada la comunicación, este puerto se libera automáticamente para que lo utilicen otros procesos del cliente.

  • Socket: un host con una dirección IP puede proporcionar muchos servicios, como servicios web, servicios FTP, servicios SMTP, etc. Estos servicios se pueden implementar completamente a través de una dirección IP.Sólo a través de la dirección IP y el número de puerto se puede determinar de forma única el puerto de una conexión, lo que se denomina socket.

    Socket = (dirección IP del host, número de puerto). élIdentifica de forma única un proceso de solicitud en un host de la red

5.1.3 Servicios sin conexión y servicios orientados a conexión

La capa de transporte proporciona dos tipos de servicios:Servicios sin conexión y servicios orientados a la conexión, las implementaciones correspondientes sonProtocolo de datagramas de usuario (UDP) y protocolo de control de transmisión (TCP)

cuando se adoptatcp, la capa de transporte proporciona hacia arriba unCanal lógico confiable full duplex;

cuando se adoptaUDP, la capa de transporte proporciona hacia arriba uncanal lógico poco confiable

Características principales de UDP

  • No es necesario establecer una conexión antes de transmitir datos y no se requiere confirmación después de que llegan los datos.
  • Entrega poco confiable.
  • El encabezado del mensaje es corto, la sobrecarga de transmisión es pequeña y el retraso es corto.

Características principales de TCP

  • Orientado a la conexión, no proporciona servicios de transmisión o multidifusión.
  • Entrega confiable.
  • El encabezado del segmento del mensaje es largo y la sobrecarga de transmisión es alta.

En la capa de transporte de red, hay un TCB (Transmit ControlBlock) en el módulo TCP, queSe utiliza para registrar variables durante la operación TCP.Para TCP con múltiples conexiones, hay un TCB para cada conexión. Definición de estructura TCBIncluyendo el puerto de origen, el puerto de destino, la IP de destino, el número de secuencia, el número de secuencia de respuesta, el tamaño de la ventana de la otra parte, el tamaño de la ventana propia, el estado de TCP, etc., utilizados por esta conexión.

5.2 UDP

5.2.1 datagrama UDP

Conceptos básicos de UDP

La mayor diferencia entre UDP y TCP es que no tiene conexión.En realidad, UDP solo agrega funciones de puerto (para encontrar procesos) y funciones de detección de errores además de los servicios de datagramas IP.

ventaja:

  • No es necesario establecer una conexión antes de enviar datos.
  • Los hosts UDP no necesitan mantener tablas de estado de conexión complejas.
  • Los datagramas de usuario UDP tienen sólo 8 bytes de cabecera.
  • La congestión en la red no reducirá la tasa de envío del host de origen (no existe control de congestión). Esto es importante para algunas aplicaciones en tiempo real (como telefonía IP y videoconferencias en tiempo real).
  • UDP admite comunicaciones interactivas uno a uno, uno a muchos, muchos a uno y muchos a muchos.

La composición del datagrama UDP.

Los datagramas UDP tienen dos campos:Campos de datos y campos de encabezado. El campo del encabezado es 8B y consta de 4 campos.

Insertar descripción de la imagen aquí

  • Puerto de origen: 2B. Como se mencionó anteriormente, se utilizan 16 bits para representar el número de puerto, por lo que se requiere una longitud de 2B.
  • Puerto de destino: 2B.
  • Longitud: 2B.
  • Suma de comprobación: ocupa 2B y se utiliza para probar si hay errores en los datagramas de usuario UDP durante la transmisión (Se comprueban tanto el encabezado como la parte de datos.), si hay un error, simplemente deséchelo. Si este campo es opcional, cuando el host de origen no desea calcular la suma de verificación, puede establecer directamente este campo en 0.Alcance de la inspección: pseudoencabezado, encabezado de datagrama UDP y datos. Entre ellos, el pseudoencabezado se genera temporalmente al calcular la suma de verificación.

5.2.2 Verificación UDP

La suma de comprobación UDP solo proporciona detección de errores.Al calcular la suma de verificación, se agrega temporalmente un pseudo encabezado de 12 B antes del datagrama de usuario UDP.

El pseudo encabezado incluye el campo de dirección IP de origen, el campo de dirección IP de destino, el campo todo 0, el campo de protocolo (UDP está fijo en 17) y el campo de longitud de UDP (la Figura 5-5 asume que la longitud de los datos del usuario es 15B). ). Es importante recordar que el encabezado solo se usa para calcular y verificar la suma de verificación, no se transmite ni se transmite .

Insertar descripción de la imagen aquí

  • Durante la verificación, si la longitud de la parte de datos del datagrama UDP no es un número par de bytes, se debe completar un byte de 0.
  • Si la suma de verificación UDP verifica que el datagrama UDP es incorrecto, se puede descartar o entregar a la capa superior, pero se debe adjuntar un informe de error, es decir, se le dice a la capa superior que se trata de un datagrama incorrecto.
  • A través del pseudo encabezado, no solo puede verificar el número de puerto de origen, el número de puerto de destino y la parte de datos del datagrama de usuario UDP, sino también verificar la dirección IP de origen y la dirección de destino del datagrama IP.

Después del cálculo según el código binario en complemento a uno,Cuando no hay errores, el resultado debe ser todo 1.;De lo contrario, indica que se ha producido un error y el receptor debe descartar el mensaje UDP.

Las reglas de operación para la suma en complemento a uno de dos números son las siguientes:

  • La operación se realiza columna por columna desde el bit bajo al bit alto.
  • 0+0-0, 0+1=1, 1+1=0 (lleva 1 y suma a la siguiente columna).
  • Si la suma del bit más alto da como resultado un acarreo, entonces es necesario agregar 1 al resultado final.

5.3 TCP

5.3.1 segmento TCP

Insertar descripción de la imagen aquí

  • Puerto de origen y puerto de destino: cada uno ocupa 2B. Al igual que UDP, el encabezado TCP también tiene un puerto de origen y un puerto de destino.
  • Número de serie: 4B. Aunque los segmentos TCP se entregan desde la capa de aplicación, TCP es un flujo de bytes (es decir, TCP se transmite byte a byte), por lo que el flujo de bytes transmitido en una conexión TCP debe estar numerado para garantizar la entrega en orden. .
  • Número de confirmación: 4B.TCP tiene un mecanismo de confirmación., por lo que el receptor necesita enviar un número de confirmación al remitente. Solo necesitas recordar una cosa sobre este número de confirmación:Si el número de confirmación es igual a N, significa que todos los datos hasta el número de secuencia N-1 se han recibido correctamente.
  • Desplazamiento de datos: 4 bits. El desplazamiento de datos aquí no es el desplazamiento de datos del fragmento en los datos, sinoIndica la longitud del encabezado., no confundir. Ocupar 4 bits puede representar un total de 15 estados del 001 al 1111, y la unidad básica es 4B, por lo que el desplazamiento de datos determina que la longitud máxima del encabezado es 60B.
  • Campo reservado: 6 bits. Reservado para uso futuro, pero actualmente debe establecerse en 0 y este campo se puede ignorar.
  • URG de emergencia:Cuando URG=1, el campo del puntero de emergencia es válido. Le dice al sistema que hay datos urgentes en este segmento y que deben transmitirse lo antes posible (equivalente a datos de alta prioridad).. Es como si hubiera una larga caravana esperando un semáforo en rojo. En ese momento llega una ambulancia. Es una emergencia. La ambulancia puede pasar por alto todos los coches sin esperar el semáforo en rojo. peroURG de emergencia debe usarse junto con el puntero de emergenciaPor ejemplo, vienen muchas ambulancias y ahora necesita un puntero de emergencia para señalar la última ambulancia. Una vez que pasa la última ambulancia, TCP le dice a la aplicación que reanude el funcionamiento normal, es decir, los datos comienzan desde el primer byte hasta El byte señalado por el puntero urgente son los datos urgentes.
  • Bit de acuse de recibo ACK:Sólo cuando ACK=1, el campo del número de confirmación es válido; cuando ACK=0, el número de confirmación no es válido. Regulaciones TCP, una vez establecida la conexión, todos los segmentos transmitidos deben tener el bit ACK establecido en 1 .
  • Broca de empuje PSH:Cuando TCP recibe un segmento con el bit de inserción establecido en 1, lo entrega al proceso de aplicación receptor lo más rápido posible, en lugar de esperar hasta que se llene todo el caché antes de entregarlo.
  • Restablecer bit RST:Cuando RST = 1, indica que ocurrió un error grave en la conexión TCP (como debido a una falla del host u otras razones), se debe liberar la conexión y luego se debe restablecer la conexión de transmisión.
  • Bit de sincronización SYN:El bit de sincronización SYN se establece en 1, lo que indica que se trata de una solicitud de conexión o un mensaje de recepción de conexión.
  • Bit de terminación FIN:Liberar una conexión. Cuando FIN = 1, indica que los datos del extremo emisor de este segmento de mensaje se han enviado y se requiere liberar la conexión de transmisión.
  • Campo de ventana: 2B.El campo de ventana se utiliza para controlar la cantidad de datos enviados por la otra parte, en bytes (B). Recuerde una frase: el campo de la ventana indica claramente la cantidad de datos que la otra parte puede enviar ahora . Por ejemplo, supongamos que el número de confirmación es 701 y el campo de la ventana es 1000. Esto muestra que a partir del número 701, la parte que envía este segmento todavía tiene espacio en el búfer de recepción para recibir 1000 B de datos.
  • Campo de suma de comprobación: 2B.El alcance de la verificación del campo de suma de comprobación incluye partes de encabezado y datos.. Al calcular la suma de verificación, como UDP, un pseudo encabezado de 12B (Simplemente cambie el 17 en el cuarto campo del pseudo encabezado UDP a 6, el resto es igual que UDP.)。
  • Campo de puntero de emergencia: 2B.
  • Campos de opción: Longitud variable. TCP originalmente especificaba solo una opción, la longitud máxima del segmento MSS. MSS le dice a la otra parte TCP: "La longitud máxima del campo de datos del segmento de mensaje que mi caché puede recibir es bytes MSS".
  • Rellenar campos:Para que toda la longitud del encabezado sea un múltiplo entero de 4B

5.3.2 Gestión de conexiones TCP

La conexión de transmisión TCP se divide en 3 etapas:Establecimiento de conexión, transferencia de datos y liberación de conexión.La gestión de las conexiones de transporte TCP tiene como objetivo garantizar que el establecimiento y liberación de las conexiones de transporte puedan realizarse con normalidad.

TCP considera las conexiones como la abstracción más básica.Cada conexión TCP tiene dos puntos finales., el punto final de la conexión TCP no es el host, ni la dirección IP del host, ni el proceso de aplicación, ni el puerto de protocolo de la capa de transporte.El punto final de una conexión TCP se llama socket o socket. El número de puerto se une a la dirección IP para formarenchufe

Cada conexión TCP está identificada de forma única por los dos puntos finales (dos sockets) en ambos extremos de la comunicación.. Por ejemplo, conexión TCP::={socket1, socket2}={(IP1:puerto1), (IP1:puerto2)}.

La conexión TCP y el establecimiento se realizan utilizandoenfoque cliente/servidor(C/S)。El proceso de aplicación que inicia activamente el establecimiento de la conexión se llama Cliente y el proceso de aplicación que espera pasivamente el establecimiento de la conexión se llama Servidor.

La conexión de transporte TCP se establece mediante "tres apretones de manos"método :

Insertar descripción de la imagen aquí

  • El TCP del cliente A envía un segmento de solicitud de conexión al servidor B.El bit de sincronización SYN = 1 en el encabezado (TCP estipula que el segmento SYN no puede transportar datos, pero consume un número de secuencia)y seleccione el número de serieseq = x, lo que indica que el número de secuencia del primer byte de datos al transmitir datos es X
  • El servidor recibe el datagrama y sabe por el bit SYN que es una solicitud para establecer una conexión. Si está de acuerdo, envíe la confirmación.B debe establecer SYN=1, ACK=1, su número de confirmación ack=x+1 y su número de secuencia elegido seq=y en el segmento del mensaje de confirmación.. Tenga en cuenta que este segmento no puede transportar datos en este momento (mnemotécnico: debido a que SYN = 1, no puede transportar datos).
  • Después de recibir este segmento de mensaje, A le da una confirmación a B, con ACK=1 y número de confirmación ack=y+1. El TCP de A notifica al proceso de aplicación superior que se ha establecido la conexión. Después de que el TCP de B recibe la confirmación del host A, también notifica a su proceso de aplicación de capa superior. En este momento, se ha establecido la conexión TCP. El mensaje ACK puede transportar datos (sin el campo SYN). Si no transporta datos , el número de secuencia no se consumirá.

Utilizando el método del "apretón de manos de tres vías",El objetivo es evitar errores en los segmentos de mensajes durante el establecimiento de una conexión de transmisión.. Después de tres intercambios de segmentos de mensajes, se establece una conexión de transmisión entre los procesos de ambas partes comunicantes y luegoUtilice el modo dúplex completoEl segmento de datos se transmite normalmente en la conexión de transporte.

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

El proceso de liberación de conexión TCP:

  • Una vez completada la transmisión de datos, ambas partes comunicantes pueden liberar la conexión. Ahora el proceso de solicitud de A envía primero un segmento de liberación de conexión a su TCP, deja de enviar datos y cierra activamente la conexión TCP. A establece el FIN en el encabezado del segmento del mensaje de liberación de conexión en 1, su número de secuencia seq=u, y espera la confirmación de B. Cabe señalar aquí queDebido a que TCP es dúplex, es decir, puedes imaginar que hay dos rutas de datos en un par de conexiones TCP. Al enviar un mensaje FIN, el extremo que envía el FIN no puede enviar datos, es decir, una de las rutas de datos está cerrada, pero el otro extremo aún puede enviar datos.

    Insertar descripción de la imagen aquí

  • B envía una confirmación, el número de confirmación ack = u + 1 y el número de secuencia de este segmento es seg = v.El proceso del servidor TCP notifica a los procesos de aplicación de nivel superior. La conexión en esta dirección de A a B se libera y la conexión TCP está en un estado semicerrado. Si B envía datos, A aún necesita recibir

Insertar descripción de la imagen aquí

  • Si B ya no tiene datos para enviar a A, su proceso de solicitud notifica a TCP que libere la conexión.

Insertar descripción de la imagen aquí

  • Después de que A recibe el segmento de liberación de conexión, debe enviar un acuse de recibo. En el segmento del mensaje de confirmación, ACK = 1, el número de confirmación ack = w + 1 y su propio número de secuencia seq = u + 1.

Insertar descripción de la imagen aquí

La conexión TCP debe transcurrir durante 2MSL antes de que se libere realmente.

Insertar descripción de la imagen aquí

Resumir:

  • Conexión establecida
    • SYN=1,sec=x.
    • SYN=1,ACK=1,seq=y,ack=x+1。
    • ACK=1,seq=x+1,ack=y+1。
  • liberación de conexión
    • FIN=1,seq=u。
    • ACK=1,seq=v,ack=u+1。
    • FIN=1,ACK=1,seq=w,ack=u+1。
    • ACK=1,seq=u+1,ack=w+1。

Es necesario asegurarse de que el número de secuencia del último segmento TCP no esté en el rango de números de secuencia utilizado por la nueva conexión.El número de secuencia inicial seleccionado por TCP al establecer una nueva conexión debe ser diferente de los números de secuencia utilizados en conexiones anteriores. Por lo tanto, diferentes conexiones TCP no pueden utilizar el mismo número de secuencia inicial.

5.3.3 Transmisión confiable TCP

Numeración y confirmación de datos TCP

TCP está orientado a bytes. TCP considera el mensaje a transmitir comoflujo de datos compuesto de bytesy hacer que cada byte corresponda a un número de secuencia. Cuando se establece la conexión, ambas partes deben acordar un número de secuencia inicial. El valor del campo de número de secuencia en el encabezado de cada segmento de mensaje enviado por TCP representa el número de secuencia del primer byte de la parte de datos en el segmento de mensaje.

El reconocimiento de TCP es un reconocimiento del número de secuencia más alto de los datos recibidos.. El número de confirmación devuelto por el extremo receptor es el número de secuencia más alto de los datos recibidos más 1 . por lo tanto,El número de acuse de recibo indica el número de secuencia del primer byte de datos de los datos que el extremo receptor espera recibir a continuación.

Mecanismo de retransmisión TCP

Cada vez que TCP envía un segmento, configura un temporizador para este segmento. Siempre que el tiempo de retransmisión establecido por el temporizador alcance el tiempo especificado y no se reciba confirmación, el segmento será retransmitido.

Un algoritmo adaptativo para TCP

  • Registre la hora a la que se envía cada segmento y la hora a la que se recibe el segmento de acuse de recibo correspondiente. esteLa diferencia entre los dos tiempos es el retraso de ida y vuelta del segmento del mensaje.

  • El promedio ponderado de las muestras de retraso de ida y vuelta de cada segmento de mensaje esObtenga el retraso promedio de ida y vuelta (RTT) del segmento de mensaje

  • Cada vez que se mide una nueva muestra de retraso de ida y vuelta, el retraso promedio de ida y vuelta se vuelve a calcular de acuerdo con la siguiente fórmula.

    RTT=(1-α)×(antiguo RTT)+α×(nueva muestra de retraso de ida y vuelta)

En la fórmula anterior, 0≤α<1.Si α está muy cerca de 1, significa que el retardo promedio de ida y vuelta RTT recién calculado ha cambiado mucho en comparación con el valor original, es decir, el valor de RTT se actualiza rápidamente.Si se elige α cerca de 0, significa que el RTT calculado ponderado no se ve muy afectado por la nueva muestra de retraso de ida y vuelta, es decir, el valor de RTT se actualiza lentamente., generalmente se recomienda que α sea 0,125 .

El tiempo de espera de retransmisión (RTO) del temporizador debeligeramente más grande queEl RTT obtenido anteriormente es

RTO=β×RTT(β>1)

Algoritmo Karn: cada vez que se retransmite un segmento de mensaje, aumenta el RTO.

Nuevo RTO = γ × (antiguo RTO), el valor típico del coeficiente γ es 2. Cuando ya no se produce la retransmisión del segmento del mensaje, los valores ponderados de RTT y RTO se actualizan en función del retraso de ida y vuelta del segmento del mensaje.

La encarnación del mecanismo confiable de TCP.

  • Cada datagrama IP se enruta de forma independiente, por lo que es posible que llegue al host de destino fuera de servicio.
  • Los datagramas IP viajan en círculos a través de la red debido a errores en los cálculos de enrutamiento. Finalmente, el valor del TTL de tiempo de vida en el encabezado del datagrama cayó a cero y el datagrama se descartó a mitad de camino.
  • De repente, hay una gran cantidad de tráfico en un determinado enrutador, por lo que el enrutador no tiene tiempo para procesar los datagramas que llegan, por lo que algunos datagramas se descartan.

5.3.4 Control de flujo TCP

En general, la gente siempre quiere 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 control de flujo sirve para evitar que el remitente envíe demasiado rápido, para que el receptor pueda recibirlo a tiempo sin causar congestión en la red.. El mecanismo de ventana deslizante se puede utilizar para implementar fácilmente el control de flujo en conexiones TCP.

Insertar descripción de la imagen aquí

  • TCP tiene un temporizador de duración para cada conexión.Siempre que una parte de la conexión TCP reciba la notificación de ventana cero de la otra parte, se inicia el temporizador continuo. Si expira el tiempo establecido por el temporizador continuo, se envía un segmento de detección de ventana cero (que transporta solo 1B de datos) y la otra parte proporciona el valor de la ventana actual al confirmar el segmento de detección.. Si la ventana sigue siendo cero, la parte que recibe este segmento restablece el temporizador de duración. Si la ventana no es cero, el punto muerto se puede romper.
  • Se pueden utilizar diferentes mecanismos para controlar el tiempo de envío de segmentos TCP.
    • TCP mantiene una variable igual a la longitud máxima del segmento (MSS). si soloCuando los datos almacenados en la caché alcanzan los bytes MSS, se ensamblan en un segmento TCP y se envían.
    • El proceso de solicitud del remitente indica que se requiere enviar el segmento del mensaje, es decir,Operaciones push soportadas por TCP(Se ha comparado anteriormente con el puntero de emergencia y no se explicará aquí).
    • Cuando expira un temporizador en el remitente, los datos almacenados en caché actualmente existentes se cargan en el segmento del mensaje (pero la longitud no puede exceder MSS) y se envían.

5.3.5 Conceptos básicos del control de congestión TCP

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

Las condiciones para que se produzca la congestión de recursos son:Suma de requisitos de recursos > recursos disponibles

Si se produce congestión en la red, el rendimiento de la red se deteriorará significativamente y el rendimiento de toda la red disminuirá a medida que aumenta la carga de entrada.

Comparación de las propiedades del control de congestión y control de flujo :

  • El control de la congestión tiene un solo propósito, que esPermitir que la red resista las cargas de red existentes.
  • El control de la congestión es unaUn proceso global que involucra a todos los hosts, todos los enrutadores y todos los factores relacionados con la reducción del rendimiento de la transmisión de la red.
  • El control de flujo a menudo se refiere al control del tráfico punto a punto entre un remitente y un receptor determinados.
  • Lo que tiene que hacer el control de flujo es suprimir la velocidad a la que el remitente envía datos para que el receptor tenga tiempo de recibirlos.
  • El control de la congestión es difícil de diseñar porque es un problema dinámico (más que estático).
  • La red actual se está desarrollando hacia la alta velocidad, lo que puede provocar fácilmente la pérdida de paquetes debido a un tamaño de caché insuficiente. peroLa pérdida de paquetes es un síntoma, no una causa, de la congestión de la red
  • En muchos casos, exactamenteEl propio control de la congestión se convierte en la causa del deterioro del rendimiento de la red o incluso del estancamiento., se debe prestar especial atención a este punto.

El control de la congestión se divide en control de bucle cerrado y control de bucle abierto.

  • El método de control de bucle abierto esAl diseñar la red, considere de antemano los factores relacionados con la congestión y esfuércese por evitar la congestión cuando la red esté funcionando.
  • El control de circuito cerrado esBasado en el concepto de bucle de retroalimentación.. Las siguientes medidas pertenecen al control de circuito cerrado:
    • Supervise los sistemas de red para detectar cuándo y dónde se produce la congestión.
    • Obtenga información sobre situaciones de congestión donde se pueden tomar medidas.
    • Ajustar el funcionamiento de los sistemas de red para resolver los problemas que surjan.

5.3.6 Cuatro algoritmos para el control de la congestión

Cuando el host en el extremo emisor determina la velocidad a la que se envían los segmentos del mensaje, no solo debe considerar la capacidad de recepción del extremo receptor, sino también la situación general para no causar congestión en la red.

TCP requiere que el remitente mantenga las dos ventanas siguientes:

  • Ventana del receptor rwnd: el último valor de ventana prometido por el receptor en función del tamaño actual del búfer de recepción.Refleja la capacidad del extremo receptor.. El extremo receptor notifica al extremo emisor colocándolo en el campo de ventana en el encabezado del mensaje TCP.
  • Ventana de congestión cwnd:El valor de ventana establecido por el remitente en función de su propia estimación de congestión de la red refleja la capacidad actual de la red.

El límite superior de la ventana de envío del remitente debe serTome la menor de las dos variables, la ventana del receptor rwnd y la ventana de congestión cwnd., el menor entre rwnd y cwnd controla la velocidad a la que el remitente envía datos.

El límite superior de la ventana de envío=Min[rwnd,cwnd]

Insertar descripción de la imagen aquí

El tamaño de la ventana de recepción se puede notificar al extremo emisor de acuerdo con el campo de ventana en el encabezado del mensaje TCP ¿Cómo mantiene el extremo emisor la ventana de congestión?

El principio del algoritmo de inicio lento.

  • Cuando el host recién comienza a enviar segmentos de mensajes, primero puede configurar la ventana de congestión cwnd=1, es decir, establecerla en un valor de la longitud máxima del segmento MSS.
  • Después de recibir un acuse de recibo para un nuevo segmento, la ventana de congestión aumenta en 1., es decir, aumentar el valor de MSS en uno.
  • El uso de este método para aumentar gradualmente la ventana de congestión cwnd del remitente puede hacer que la tasa de inyección de paquetes en la red sea más razonable.

Después de utilizar el algoritmo de inicio lento, la ventana de congestión cwnd se duplica después de cada ronda de transmisión, es decir, el tamaño de cwnd aumenta exponencialmente. De esta manera, el inicio lento siempre aumenta la ventana de congestión cwnd a un umbral de inicio lento específico ssthresh (umbral) y luego cambia al algoritmo para evitar la congestión (el tiempo experimentado por una ronda de transmisión es en realidad el tiempo de ida y vuelta RTT. Por ejemplo , la ventana de congestión cwnd = 4. El tiempo de ida y vuelta RTT en este momento es el tiempo total que le toma al remitente enviar 4 segmentos de mensajes consecutivos y recibir la confirmación de estos 4 segmentos de mensajes).

El principio del algoritmo para evitar la congestión.

Para evitar que el crecimiento de la ventana de congestión cwnd cause congestión en la red, también se necesita una variable de estado, a saber, el umbral de inicio lento ssthresh.

Cuando cwnd <ssthresh, se utiliza el algoritmo de inicio lento.
Cuando cwnd>ssthresh, deje de utilizar el algoritmo de inicio lento y utilice 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

El algoritmo para evitar la congestión funciona de la siguiente manera:La ventana de congestión cwnd del remitente aumenta en el tamaño de un MSS cada vez que pasa un retardo de ida y vuelta RTT. Por lo general, crece de forma lineal.

No importa en la fase de inicio lento o en la fase de evitación de congestión, siempre que el remitente determine que la red está congestionada (la base es que el acuse de recibo no se recibe a tiempo), debeEl umbral de inicio lento ssthresh se establece en la mitad del valor de la ventana de envío cuando se produce congestión (pero no menos de 2), luego la ventana de congestión cwnd se restablece a 1 y se ejecuta el algoritmo de inicio lento.El propósito de esto es reducir rápidamente la cantidad de paquetes enviados por el host a la red, de modo que el enrutador que experimenta congestión tenga tiempo suficiente para procesar la acumulación de paquetes en la cola.

  • Cuando se inicializa una conexión TCP,Establecer ventana de congestión en 1, como se muestra en la Figura 5-16. La unidad de ventana de la figura no utiliza bytes sino segmentos. El valor inicial del umbral de inicio lento se establece en 16 segmentos, es decirssthresh=16La ventana de envío del remitente no puede exceder el valor mínimo de la ventana de congestión cwnd y la ventana de recepción rwnd.. Se supone que la ventana del receptor es lo suficientemente grande. Entonces ahora el valor de la ventana de envío es igual al valor de la ventana de congestión .

Insertar descripción de la imagen aquí

  • Al ejecutar el algoritmo de inicio lento, el valor inicial de la ventana de congestión cwnd es 1 y se envía el primer segmento de mensaje M 0 .

Insertar descripción de la imagen aquí

  • Cada vez que el remitente recibe un acuse de recibo, incrementa cwnd en 1, por lo que el remitente puede enviar dos segmentos de mensaje M 1 y M 2 .

    Insertar descripción de la imagen aquí

  • El extremo receptor envía un total de dos acuses de recibo.Cada vez que el remitente recibe un acuse de recibo de un nuevo segmento, aumenta el cwnd del remitente en 1. Ahora cwnd aumenta de 2 a 4 y se pueden enviar los siguientes 4 segmentos

    Insertar descripción de la imagen aquí

  • Cada vez que el remitente recibe un acuse de recibo de un nuevo segmento, aumenta la ventana de congestión del remitente en 1. Por lo tanto, la ventana de congestión cwnd aumenta exponencialmente con las rondas de transmisión.

Insertar descripción de la imagen aquí

  • Cuando la ventana de congestión cwnd crece hasta el valor umbral inicial ssthresh (cuando cwnd=16), se ejecuta el algoritmo para evitar la congestión y la ventana de congestión crece según una ley lineal.

    Insertar descripción de la imagen aquí

  • Supongamos que cuando el valor de la ventana de congestión aumenta a 24, la red agota el tiempo de espera, lo que indica que está congestionada.

Insertar descripción de la imagen aquí

  • El valor ssthresh actualizado pasa a ser 12 (la mitad del valor de la ventana de envío de 24), la ventana de congestión se restablece a 1 y se ejecuta el algoritmo de inicio lento.

Insertar descripción de la imagen aquí

  • Cuando cwnd = 12, se implementa el algoritmo para evitar la congestión: la ventana de congestión crece linealmente y el tamaño del MSS aumenta en uno por cada retraso de ida y vuelta.

Insertar descripción de la imagen aquí

Resumir:

  • Disminuye multiplicativamente. Significa que no importa en la fase de inicio lento o en la fase de evitación de congestión, siempre que ocurra un tiempo de espera (se produzca una congestión de la red), elEl umbral de inicio lento ssthresh se establece en la mitad del valor actual de la ventana de congestión.. Cuando la red está congestionada con frecuencia, el valor de ssthresh disminuirá rápidamente para reducir la cantidad de paquetes inyectados en la red.
  • La suma aumenta. SignificaAl ejecutar el algoritmo para evitar la congestión, después de recibir acuses de recibo para todos los segmentos del mensaje (después de un tiempo de ida y vuelta), la ventana de congestión cwnd aumenta en un tamaño de MSS., aumentando lentamente la ventana de congestión para evitar una congestión prematura de la red.
  • Evitar la congestión no significa que se pueda evitar por completo la congestión.. Todavía es imposible evitar por completo la congestión de la red utilizando las medidas anteriores.Evitar la congestión significa controlar la ventana de congestión para que crezca linealmente durante la fase de evitación de la congestión, haciendo que la red sea menos propensa a la congestión.

Insertar descripción de la imagen aquí

Algoritmo de retransmisión rápida

Primero, se requiere que el receptor envíe un acuse de recibo duplicado inmediatamente después de recibir un segmento de mensaje desordenado. Esto permite al remitente saber anticipadamente que hay segmentos que no han llegado al receptor. Siempre que el remitente reciba tres acuses de recibo duplicados consecutivos, debe retransmitir inmediatamente los segmentos del mensaje que la otra parte aún no ha recibido.
Insertar descripción de la imagen aquí

Algoritmo de recuperación rápida

  • Cuando el remitente recibe tres tramas de confirmación repetidas consecutivas, realiza el algoritmo de "reducción multiplicativa" y establece el umbral de inicio lento ssthresh en la mitad de la ventana de congestión actual. Pero luego no se ejecuta el algoritmo de inicio lento.

  • Dado que el remitente ahora cree que es probable que la red no esté congestionada, no realiza el algoritmo de inicio lento ahora, es decir, la ventana de congestión cwnd no se establece en 1. En cambio, el umbral de inicio lento ssthresh se establece en la mitad de La ventana de congestión actual y luego se inicia el algoritmo para evitar la congestión ("crecimiento aditivo"), lo que hace que la ventana de congestión aumente lentamente de manera lineal.

Insertar descripción de la imagen aquí

El algoritmo de recuperación rápida es el siguiente:

  • Cuando el remitente recibeCuando 3 ACK repetidos consecutivos, restablezca el umbral de inicio lento ssthresh (la mitad de la ventana de congestión).
  • La diferencia desde el principio es que la ventana de congestión cwnd no está configurada en 1, sino en el nuevo ssthresh.
  • Si el valor de la ventana de envío aún permite el envío de segmentos de mensajes, el segmento continuará enviándose de acuerdo con el algoritmo para evitar la congestión.

Supongo que te gusta

Origin blog.csdn.net/pipihan21/article/details/129572306
Recomendado
Clasificación