El protocolo TCP involucra problemas y soluciones centrales en el escenario de IM (por lo tanto, una comprensión profunda de los principios subyacentes de TCP)

Para la alfabetización de problemas de ingeniería TCP, primero mire esto [ Explicación detallada del estado de las conexiones TCP y resolución de problemas_conexión TCP intermitente_blog de hguisu-blog de CSDN ]

Núcleo: el requisito previo para que TCP garantice la confiabilidad es que el enlace se pueda mantener normalmente y si el enlace se desconecta por varias razones. El enlace se restablecerá y el negocio realizado anteriormente requiere que la parte comercial garantice la confiabilidad y la consistencia; además, sobre esta base, TCP solo garantiza la confiabilidad y la consistencia de la capa de transporte, y la capa superior también necesita garantías comerciales.

  • El protocolo TCP es un protocolo confiable, pero en aplicaciones prácticas, el programa de aplicación todavía necesita manejar algunos detalles para garantizar que los datos se puedan transmitir como se espera. Es posible que algunos servicios necesiten implementar su propio mecanismo de confiabilidad por encima del nivel de TCP, como implementar un mecanismo de confirmación de mensajes en la capa de aplicación para garantizar que cada mensaje se reciba correctamente. ¿Por qué? ¿Cómo hacerlo?

        El protocolo TCP es de hecho un protocolo confiable, que proporciona muchas funciones para garantizar la transmisión confiable de datos, como el número de secuencia, el número de confirmación, el mecanismo de retransmisión, etc. Sin embargo, en aplicaciones prácticas, debido a la complejidad e imprevisibilidad del entorno de red, el protocolo TCP no puede garantizar por completo la transmisión confiable de datos. Las razones específicas son las siguientes:

        1. TCP solo garantiza la confiabilidad de los mensajes en la capa de transporte, no la confiabilidad de los mensajes en la capa de aplicación (por ejemplo, el mensaje llega a la capa de transporte pero no ha sido entregado a la empresa en este momento y el proceso se produce de manera inesperada). sale o el servicio se bloquea debido a varios motivos, como memoria repentina o CPU llena), no recibió el mensaje).
        
2. Cuando la conexión TCP se desconecta debido a una anomalía, como una desconexión de la red o un corte de energía, el servicio no será válido cuando se restablezca la conexión. Imagínese si la empresa no retransmite el paquete de datos en este momento, ¿no se perdería?

        3. Cuando hay congestión o pérdida de paquetes en la red, el protocolo TCP iniciará el mecanismo de retransmisión para garantizar la transmisión confiable de datos. Sin embargo, el protocolo TCP no conoce el modo de transmisión de datos que espera la aplicación. Por ejemplo, la aplicación puede esperar una transmisión de datos en tiempo real y el mecanismo de retransmisión puede causar una transmisión de datos retrasada, lo que afecta el rendimiento de la aplicación.

        La implementación de su propio mecanismo de confiabilidad en la capa de aplicación puede hacer que el programa de aplicación sea más flexible y confiable, y también puede optimizarse y personalizarse de acuerdo con los requisitos especiales del programa de aplicación. Los métodos específicos incluyen: usar el mecanismo KeepAlive de TCP o el mecanismo de latido de negociación para formular políticas de acuerdo con los escenarios comerciales.

  • Los paquetes enviados por tcp pueden pasar por diferentes rutas, cómo combinar los paquetes y entregarlos en el extremo receptor

    En el protocolo TCP, los datos se dividen en varios paquetes de datos para su transmisión, y cada paquete de datos tiene un número de secuencia y una suma de verificación. El extremo receptor utiliza esta información para confirmar la integridad y el orden de los paquetes de datos y fusionarlos en los datos completos. flujo se entrega a la aplicación.

    Cuando los paquetes TCP pasan por diferentes rutas, pueden ocurrir desordenes, pérdidas, repeticiones, etc. Para solucionar estos problemas, el protocolo TCP utiliza algunos mecanismos para asegurar la confiabilidad y el orden de la transmisión de datos, tales como:

    • Número de secuencia: cada paquete TCP tiene un número de secuencia, que se utiliza para identificar la posición del paquete en el flujo de datos. El receptor verifica los números de secuencia para confirmar el orden de los paquetes y los fusiona en un flujo de datos completo en el orden correcto.

    • Respuesta de confirmación: cuando el extremo receptor recibe un paquete de datos TCP, enviará una respuesta de reconocimiento al extremo emisor, diciéndole al extremo emisor que el paquete de datos se ha recibido correctamente. Si el remitente no recibe un acuse de recibo, volverá a enviar el paquete de datos hasta que el receptor envíe un acuse de recibo.

    • Ventana deslizante: el protocolo TCP utiliza un mecanismo de ventana deslizante para controlar la velocidad a la que el remitente envía paquetes de datos y la velocidad a la que el receptor los recibe. El extremo emisor ajusta el tamaño de la ventana deslizante de acuerdo con la respuesta de confirmación devuelta por el extremo receptor para controlar la velocidad de envío; el extremo receptor ajusta el tamaño de la ventana deslizante de acuerdo con su propia potencia de procesamiento y tamaño de caché para controlar la velocidad de recepción

          1.  Varias razones conducen a la desconexión de TCP o a la fluctuación de la red, un alto retraso puede causar la pérdida de paquetes ( refiriéndose a la situación en la que los paquetes de datos se pierden durante la transmisión de la red, pero el protocolo TCP pasará el mecanismo de retransmisión y el mecanismo de verificación para garantizar una transmisión confiable) de datos. )

          2. (Esencialmente, el paquete perdido por TCP en sí mismo no se llama pérdida de paquete) TCP solo garantiza la confiabilidad del mensaje en la capa de transporte, no la confiabilidad del mensaje en la capa de aplicación (por ejemplo: el mensaje ha llegado a la capa de transporte). capa, pero no se ha entregado a la empresa en este momento, y de repente la memoria O la CPU está llena, o la batería está agotada y otras razones hacen que el proceso se cierre inesperadamente y no se reciba ningún mensaje).

        El protocolo TCP es un protocolo de transmisión confiable, que garantiza la confiabilidad de la transmisión de datos a través de varios mecanismos. En el protocolo TCP, cuando el remitente envía datos, divide los datos en varios paquetes y asigna un número de secuencia a cada paquete. Después de recibir el paquete de datos, el receptor enviará una respuesta ACK al remitente para confirmar que se ha recibido el paquete de datos. Si el remitente no recibe una respuesta ACK dentro de un cierto período de tiempo, el paquete de datos se considerará perdido y se activará un mecanismo de retransmisión.

        Por lo tanto, cuando el remitente TCP envía datos, si el paquete de datos se pierde, el mecanismo de retransmisión se activará hasta que el receptor reciba los datos y envíe una respuesta ACK. Incluso si se produce una pérdida de paquetes durante la transmisión de la red, el protocolo TCP garantizará una transmisión de datos confiable a través del mecanismo de retransmisión.

        En el protocolo TCP, el receptor también tomará algunas medidas para garantizar la transmisión confiable de datos. Por ejemplo, cuando el receptor recibe un paquete de datos, verifica la suma de verificación del paquete de datos para asegurarse de que el paquete de datos no haya sido alterado. Si se encuentra un error en el paquete de datos, enviará una respuesta NACK al remitente, solicitando volver a enviar el paquete de datos.

        Por lo tanto, la llamada pérdida de paquetes de TCP se refiere a la pérdida de paquetes de datos durante la transmisión de la red, pero el protocolo TCP garantizará la transmisión confiable de datos a través del mecanismo de retransmisión y el mecanismo de verificación. En el protocolo TCP, tanto el extremo emisor como el extremo receptor tomarán algunas medidas para garantizar la transmisión confiable de datos.

  • fondo de reconocimiento de negocios

        No ACK, los datos TCPestán fuera de control después de que se transmiten. Si hay una desconexión o una desconexión de la red en este momento, es fácil causar la pérdida de mensajes y no se puede rastrear. Por lo tanto, hemos agregado una respuesta para cada solicitud para resolver el problema de no poder monitorear ACKla transmisión de mensajes.
        Debido a la imprevisibilidad y complejidad del entorno de la red, el protocolo TCP no puede evitar por completo la pérdida o el daño de los datos. Por lo tanto, en las aplicaciones prácticas, las empresas a menudo necesitan usar ACK (mensajes de reconocimiento) para garantizar una transmisión de datos confiable.
        Cuando el remitente envía datos, el receptor debe enviar un mensaje de confirmación ACK al remitente para informarle que los datos se han recibido correctamente. Si el remitente no recibe el mensaje de confirmación ACK dentro de un cierto período de tiempo, pensará que los datos se han perdido o que hay otros problemas, y necesita ser retransmitido. Por lo tanto, el mensaje de confirmación ACK puede ayudar al remitente a descubrir la pérdida o el daño de los datos a tiempo, fortaleciendo así la transmisión confiable de datos.
        Además, el mensaje de confirmación ACK de necesidades comerciales también se puede utilizar para resolver problemas como el retraso de la red. Si los datos se retrasan durante la transmisión, el mensaje de confirmación ACK puede ayudar al remitente a encontrar y retransmitir los datos a tiempo, evitando así la pérdida y el retraso de los datos.

        En resumen, además del protocolo TCP, la empresa necesita utilizar el mensaje de confirmación ACK para garantizar la transmisión confiable de datos, a fin de garantizar el funcionamiento normal de la empresa.

  • El principio de los agujeros de enlace descendente del servicio y las razones de los mensajes de enlace descendente fuera de servicio
  1. Almacenamiento distribuido del lado del servidor, los mensajes de la misma sesión están en el mismo clúster, pero pueden distribuirse en diferentes máquinas. Las situaciones anormales pueden ocurrir fuera de servicio y vacías, por lo que el SDK debe manejarlas minuciosamente.
  2. El último mensaje recibido después de que el cliente se desconecta es x, y cuando el cliente se vuelve a conectar, el mensaje recibido puede ser x+n (muchos mensajes no se recibieron correctamente durante el proceso de desconexión), y el mensaje está vacío en este momento.

  • El principio central del bloqueo de cabecera de cola TCP y por qué se usa QUIC

        El bloqueo de cabeza de línea se refleja principalmente en dos puntos:

                1. Debido a la ventana deslizante, cuando el extremo receptor está muy congestionado en la red o el búfer es insuficiente, el tamaño de la ventana se ajusta, lo que hace que el extremo emisor bloquee el envío de datos.

                2. Cuando la congestión o fluctuación de la red en el extremo de envío es grave, por ejemplo, cuando la ventana deslizante envía un determinado paquete y lo retransmite con el tiempo, los paquetes detrás de la cola de la ventana se bloquearán en el búfer del extremo de envío hasta el anterior. los paquetes de datos se envían con éxito Enviar, lo que hace que el remitente se bloquee.

                Los problemas anteriores son los problemas más serios que enfrentan las conexiones largas. En una solicitud de conexión TCP normal, debido a la confiabilidad y consistencia del protocolo TCP, en un entorno de red débil y un escenario con una alta tasa de pérdida de paquetes, el tiempo de demora del mensaje será muy grande. Incluso si la red reanuda la transmisión normal de datos, se retrasos en la entrega de los paquetes de datos que lleguen posteriormente a la capa empresarial.

       
        Para QUIC, debido a que usa UDP, los problemas anteriores no ocurrirán en absoluto y su ocupación de ancho de banda aumentará en comparación con TCP.Es completamente factible mejorar el rendimiento en tiempo real de los mensajes con un cierto consumo de ancho de banda. Además, en comparación con el control de flujo de TCP, QUIC realiza un control de flujo en los niveles de conexión y transmisión, respectivamente. Para obtener más información, consulte [ Principio de QUIC y use_quic retransmission_John_ToDebug's blog-CSDN blog ]

  • Lógica masiva de ACK
  1. Es para reducir la presión del mensaje de acuse de recibo en tiempo real del enlace ascendente en el enlace TCP único de Marte (lo que afecta el rendimiento en tiempo real de otros mensajes de mayor prioridad en el enlace actual)
  2. Reducir la presión del servidor

  • Un solo puerto puede transportar múltiples enlaces largos tcp

        Un solo puerto puede transportar miles de conexiones TCP al mismo tiempo, según la configuración del hardware del servidor, la configuración del sistema operativo, el ancho de banda de la red y otros factores.
        En aplicaciones prácticas, puede optimizar el rendimiento del servidor ajustando la configuración de red del servidor, ajustando los parámetros del sistema operativo, etc., para aumentar la cantidad de conexiones TCP que puede transportar un solo puerto. Por ejemplo, los parámetros del protocolo TCP/IP se pueden ajustar para optimizar la eficiencia del uso del ancho de banda de la red, o se pueden usar métodos multihilo o multiproceso para procesar las solicitudes de conexión, etc.
        Además, para aplicaciones de alta simultaneidad, la tecnología de equilibrio de carga también se puede utilizar para compartir la carga del servidor, lo que aumenta aún más la cantidad de conexiones TCP que puede transportar un solo puerto.

  • TCP¿Por qué las conexiones largas necesitan multiplexación por división de tiempo?

        Si el cliente crea una TCPconexión larga para cada negocio, a medida que aumenta la cantidad de negocios, se deben mantener más y más conexiones largas. Para algunas empresas, es posible que no se transmitan algunos mensajes en un día, pero se deben mantener conexiones largas todo el tiempo. Estas conexiones largas consumirán mucha energía, tráfico, ancho de banda, memoria, etc., lo cual es muy poco amigable para los dispositivos. como los teléfonos móviles, para resolver este tipo de problema, hemos desarrollado la tecnología de multiplexación por división de tiempo de conexión larga TCP, es decir, múltiples servicios coexisten en una conexión larga TCP al mismo tiempo, los servicios son transparentes entre sí , y los datos no interfieren entre sí

  • Garantía de confiabilidad de mensajes de enlace ascendente

        El mensaje de enlace ascendente se refiere al mensaje enviado desde el cliente al servidor. Para el mensaje de enlace ascendente, mantenemos SDKun búfer de envío interno. Antes de enviar el mensaje al servidor, el mensaje se guardará en el búfer. Para cada mensaje, necesita ACKEl mensaje se elimina del búfer solo después de que el o supera el ciclo de vida del mensaje.Si el tiempo de espera o la desconexión no recibe una respuesta del servidor, SDKse retransmitirá periódicamente.

        Con la retransmisión de mensajes, debe haber deduplicación de mensajes, de lo contrario, puede causar la duplicación de mensajes.Para evitar el problema de la duplicación de mensajes, nuestro cliente mantendrá SDKun número de serie que aumenta monótonamente, a través del cual Heavy. Después de que el servidor reciba un nuevo mensaje, registrará el número de secuencia del mensaje. Cuando reciba un mensaje con un número de secuencia menor o igual que él, lo considerará un mensaje duplicado y lo descartará directamente para garantizar que el el mensaje no se repite.

        El resultado del envío de cada mensaje ascendente se devolverá a la capa empresarial. Cuando el mensaje no se envía, la capa empresarial puede decidir si retransmitirlo o tomar otras medidas correctivas de acuerdo con sus propias necesidades, para garantizar completamente el confiabilidad del mensaje ascendente.

  • Garantía de confiabilidad de mensajes de enlace descendente

        El mensaje de enlace descendente se refiere al mensaje reenviado por el servidor al cliente. Para este tipo de mensaje, hemos diseñado un IDmecanismo para una secuencia ordenada local dentro de la sesión. La sesión aquí se refiere a una sala de chat, un grupo de chats individuales, etc., en una sesión Se generarán números de serie incrementales e independientes en la sesión de grupo, y los números de serie entre sesiones no tienen nada que ver entre sí. Este método puede mejorar en gran medida el rendimiento del servidor que envía números, pero los números de serie emitidos por el servidor no aumentan continuamente y hay saltos. Para resolver este problema, diseñamos una estructura similar a una lista enlazada unidireccional. En comparación con la lista enlazada tradicional, esta lista enlazada está en orden inverso. Cada mensaje en la sesión guarda un pedido anticipado, este mensaje SeqId, SeqIdmensaje único global Id(para seguimiento de mensajes). Cuando el cliente recibe el primer mensaje en la sesión, grabará el mensaje. SeqIdCuando reciba un nuevo mensaje en la sesión, detectará el nuevo mensaje SeqId. Si el nuevo mensaje es SeqIdmenor o igual que el último mensaje recibido SeqId, prueba que el mensaje se repite, de lo contrario, verifique el pedido anticipado del nuevo mensaje SeqId, si el pedido anticipado del nuevo mensaje es consistente SeqIdcon el último mensaje recibido SeqId, prueba que los dos mensajes son continuos y envía directamente el mensaje Volver al capa de negocios. Si son inconsistentes, significa que hay un espacio entre los dos mensajes. En este momento, el cliente tardará un tiempo. Si el espacio entre los dos mensajes no se puede llenar, el cliente irá activamente al servidor para extraer el mensaje. espacio entre los dos mensajes contenido para garantizar que los mensajes se ordenen y no se pierdan.

        Después de la desconexión y reconexión, el cliente también enviará SeqIdla última información recibida de cada sesión al servidor, y el servidor combinará la información transmitida por el cliente con SeqIdla situación actual de cada sesión para enviar los mensajes perdidos durante la desconexión del cliente. para asegurarse de que el mensaje no se perderá durante la desconexión del cliente.

  • Los beneficios de usar múltiples conexiones largas TCP sobre una sola conexión larga TCP

    • Mejore el rendimiento simultáneo: el uso de varias conexiones TCP largas puede permitir que el cliente establezca varias conexiones con el servidor al mismo tiempo, mejorando así las capacidades de procesamiento simultáneo. Esto es muy útil para escenarios de alta concurrencia, como servidores web, colas de mensajes, etc.

    • Reduzca la demora: el uso de varias conexiones largas de TCP puede evitar el problema de bloqueo de cabecera de línea en una sola conexión larga de TCP, lo que reduce la demora. En una única conexión TCP larga, si la solicitud anterior tarda demasiado en procesarse, las solicitudes posteriores se bloquearán, lo que aumentará la demora general. El uso de varias conexiones TCP largas puede dispersar las solicitudes en varias conexiones, lo que evita problemas de bloqueo de cabeza de línea y, por lo tanto, reduce los retrasos.

    • Mejore la confiabilidad: el uso de múltiples conexiones TCP largas puede mejorar la confiabilidad del sistema. Si falla una sola conexión TCP larga, todo el sistema no estará disponible. El uso de varias conexiones TCP largas puede dispersar las solicitudes en varias conexiones, incluso si una de las conexiones falla, no afectará la disponibilidad de todo el sistema.

        Cabe señalar que el uso de múltiples conexiones TCP persistentes también traerá algunos problemas, como aumentar la carga en el servidor y aumentar el uso del ancho de banda de la red. Por lo tanto, en las aplicaciones prácticas, se deben hacer concesiones y elecciones de acuerdo con situaciones específicas.

        

Preguntas y respuestas

        P: Los recursos de Internet son ciertos

        R: Sí, los recursos de la red son limitados y el uso de varias conexiones TCP largas también ocupará ciertos recursos de la red. Por lo tanto, en las aplicaciones prácticas, se deben hacer concesiones y elecciones de acuerdo con situaciones específicas.

        Si se utilizan varias conexiones TCP persistentes al mismo tiempo, puede causar congestión en la red y competencia de recursos, lo que reduce el rendimiento y la confiabilidad del sistema. Además, si se usan varias conexiones TCP largas y el volumen de datos de cada conexión es pequeño, la sobrecarga de establecer y cerrar conexiones puede exceder la sobrecarga de transmitir datos, desperdiciando así los recursos de la red.

        Por lo tanto, en las aplicaciones prácticas, se deben hacer concesiones y elecciones de acuerdo con situaciones específicas. Si necesita mejorar el rendimiento simultáneo y la confiabilidad del sistema, puede considerar el uso de varias conexiones largas TCP; si los recursos de la red son limitados, puede considerar usar una única conexión larga TCP y usar otros métodos para mejorar el rendimiento y la confiabilidad. del sistema, como usar un grupo de conexiones, optimizar el proceso de procesamiento de solicitudes, etc.

        P: ¿La congestión de cada enlace TCP es independiente?

        R: Sí, cada enlace TCP es independiente y el control de congestión entre ellos es independiente entre sí.

        Cuando la red está congestionada, el protocolo TCP ajustará la tasa de envío de datos según el grado de congestión de la red y la tasa de transmisión de datos. Si un enlace TCP está congestionado, el protocolo TCP reducirá la tasa de envío del enlace para evitar una mayor congestión. En este momento, la velocidad de envío de otros enlaces TCP no se verá afectada y aún pueden continuar enviando datos a la velocidad máxima.

        Cabe señalar que aunque cada enlace TCP es independiente, comparten el mismo recurso de red. Por lo tanto, cuando la red está congestionada, todos los enlaces TCP pueden verse afectados, lo que genera un mayor retraso en la transmisión, una mayor tasa de pérdida de paquetes y otros problemas. Para evitar esta situación, se deben tomar algunas medidas para optimizar la utilización de los recursos de la red, como usar algoritmos de control de congestión, establecer la tasa de envío de datos de manera razonable, etc.

        P: Cuando la red está congestionada, ¿no deberían congestionarse todos los enlaces TCP?

        R: Sí, cuando la red está congestionada, todos los enlaces TCP pueden verse afectados, lo que genera un mayor retraso en la transmisión, una mayor tasa de pérdida de paquetes y otros problemas. Por lo tanto, cuando la red está congestionada, todos los enlaces TCP pueden estar congestionados.

        El protocolo TCP ajustará la tasa de envío de datos según el grado de congestión de la red y la tasa de transmisión de datos. Cuando la red está congestionada, el protocolo TCP reducirá la tasa de envío para evitar que la congestión se agrave aún más. Dado que cada enlace TCP es independiente, el protocolo TCP realiza un control de congestión en cada enlace para evitar la congestión de enlaces.

        Cabe señalar que cuando la red está congestionada, todos los enlaces TCP comparten el mismo recurso de red. Por lo tanto, cuando la red está congestionada, todos los enlaces TCP pueden verse afectados. Para evitar esta situación, se deben tomar algunas medidas para optimizar la utilización de los recursos de la red, como usar algoritmos de control de congestión, establecer la tasa de envío de datos de manera razonable, etc.

        P: ¿Qué sucede cuando el enlace tcp a está congestionado pero el enlace tcp b no está congestionado?

        R: En caso de congestión de la red, cada enlace TCP puede estar congestionado. Sin embargo, dado que las características de transmisión y las características de los datos transmitidos de cada enlace TCP pueden ser diferentes, en situaciones reales, puede haber situaciones en las que un enlace TCP esté congestionado mientras que el otro enlace TCP no esté congestionado.

        Por ejemplo, suponga que los enlaces TCP A y B transmiten diferentes cantidades de datos, el enlace A transmite una mayor cantidad de datos y el enlace B transmite una menor cantidad de datos. Cuando la red está ligeramente congestionada, el enlace A puede estar congestionado, pero el enlace B puede no verse afectado. En este momento, el protocolo TCP controlará la congestión del enlace A y reducirá su tasa de envío para evitar que la congestión se agrave aún más. La velocidad de envío del enlace B no se ve afectada porque no está congestionado.

        Debe tenerse en cuenta que cuando la red está muy congestionada, todos los enlaces TCP pueden verse afectados, lo que genera un mayor retraso en la transmisión y una mayor tasa de pérdida de paquetes. Por lo tanto, en aplicaciones prácticas, se deben tomar algunas medidas para optimizar la utilización de los recursos de la red, como usar algoritmos de control de congestión, establecer la velocidad de envío de datos de manera razonable, etc.

       P: TCP no ha recibido el acuse de recibo del par después de enviar los datos y, después de varios reintentos, ¿descartará el paquete de datos actual y continuará enviando el siguiente mensaje?

        R: Después de que TCP envíe los datos, si no ha recibido la respuesta ACK del extremo del par y aún no ha recibido la respuesta ACK después de varios reintentos, el protocolo TCP considerará que el paquete de datos se ha perdido y activará el mecanismo de retransmisión. . El protocolo TCP realizará múltiples retransmisiones.Si las múltiples retransmisiones aún fallan, se abandonará el envío del paquete de datos y se continuará enviando el siguiente mensaje.

En el protocolo TCP, cuando el remitente envía datos, esperará la respuesta ACK del receptor. Si no se recibe una respuesta ACK dentro de un cierto período de tiempo, los datos se reenviarán. Si no se recibe ACK después de varias retransmisiones, se abandonará el envío del paquete de datos y se enviará el siguiente mensaje. Esto asegura una transmisión de datos confiable y evita problemas como la congestión de la red y la carga excesiva.

       P: Después de que TCP envíe los datos, si no ha recibido la respuesta ACK del par y aún no ha recibido la respuesta ACK después de varios reintentos, el protocolo TCP considerará el paquete de datos como perdido y activará el mecanismo de retransmisión. El protocolo TCP realizará múltiples retransmisiones.Si las múltiples retransmisiones aún fallan, se abandonará el envío del paquete de datos y se continuará enviando el siguiente mensaje. En este caso, puede haber agujeros en los datos que llegan al extremo receptor.

        R: Sí, cuando el remitente TCP envía datos, si el paquete de datos se pierde, el mecanismo de retransmisión se activará hasta que el receptor reciba los datos y envíe una respuesta ACK. Si el remitente no recibe una respuesta ACK después de múltiples retransmisiones, dejará de enviar el paquete de datos y continuará enviando el siguiente mensaje. En este caso, el receptor puede experimentar mensajes vacíos.

        Cuando se produce un agujero en el mensaje en el protocolo TCP, el receptor puede utilizar el mecanismo de ventana deslizante del protocolo TCP para solucionarlo. El mecanismo de ventana deslizante puede controlar el espacio del búfer del receptor para garantizar que el receptor solo reciba paquetes de datos ordenados y puede almacenar en búfer una cierta cantidad de paquetes de datos para su recepción posterior. Además, el protocolo TCP también puede usar números de secuencia para garantizar el orden de los paquetes de datos y garantizar que el receptor reciba los paquetes de datos en el orden correcto.

        Si el remitente aún no recibe una respuesta ACK después de múltiples retransmisiones, puede deberse a una falla en la red o que el receptor haya cerrado la conexión. En este caso, el remitente puede optar por restablecer la conexión o renunciar al envío del paquete de datos según la situación específica.

Supongo que te gusta

Origin blog.csdn.net/John_ToStr/article/details/130305411
Recomendado
Clasificación