Transporte de fiabilidade TCP
Todos estamos familiarizados co protocolo TCP como un protocolo de transporte fiable, pero como asegura a fiabilidade do transporte?
Para conseguir unha transmisión fiable, hai que considerar moitos factores, como a corrupción de datos, a perda, a duplicación e os fragmentos fóra de orde. Se non se poden resolver estes problemas, non se pode conseguir unha transmisión fiable.
Polo tanto, TCP emprega mecanismos como o número de secuencia, a resposta do recoñecemento, o control de reenvío, a xestión de conexións e o control da xanela para conseguir unha transmisión fiable.
Neste artigo, centrarémonos na xanela deslizante, o control de fluxo e o control de conxestión do TCP. O mecanismo de retransmisión está cuberto por separado na seguinte sección.
Control de fluxo de rede
O control do fluxo de rede ou o coñecemento do tráfico de rede é realmente unha manifestación da sutil relación entre produtores e consumidores. Probablemente atopaches este escenario moito no traballo ou nas entrevistas. Se a capacidade do produtor para producir supera moito a capacidade do consumidor para consumir, fará que a cola creza indefinidamente. Nun caso máis grave, pode saber que cando as mensaxes RabbitMQ se acumulan demasiado, pode causar a degradación do rendemento de todo o servidor MQ. O mesmo vale para TCP; Se se deixa sen controlar, introduciranse demasiadas mensaxes na rede e os consumidores superarán a súa capacidade, mentres que os produtores continuarán enviando mensaxes duplicadas, o que afectará moito ao rendemento da rede.
Para abordar este fenómeno, TCP proporciona un mecanismo para que o remitente controle a cantidade de datos enviados en función da capacidade de recepción real do receptor, que se coñece como control de fluxo. O receptor mantén unha xanela de recepción, mentres que o remitente mantén unha xanela de envío. Cómpre sinalar que estas fiestras son só para unha única conexión TCP e non todas as conexións comparten unha xanela.
TCP proporciona control de fluxo mediante unha variable para unha xanela de recepción. A xanela de recepción dá ao remitente unha indicación de canto espazo de caché aínda está dispoñible. O remitente controla a cantidade de datos enviados segundo a capacidade de aceptación real do receptor.
O host do receptor notifica ao remitente do tamaño dos datos que pode recibir e o remitente envía este límite. Este límite é o tamaño da xanela, recordas o encabezado TCP? Hai un campo de xanela de recepción, que se usa para indicar o número de bytes que o receptor é capaz ou disposto a recibir.
O servidor do remitente enviará periodicamente un paquete de sonda de xanela, que se usa para detectar se o host do receptor aínda é capaz de aceptar datos. Cando o búfer do receptor está en perigo de desbordamento, o tamaño da xanela está configurado nun valor menor para instruír ao remitente para controlar a cantidade de datos enviados.
Aquí tes un diagrama de control de fluxo de rede:
Control de conxestión de rede
Antes de introducir o control de conxestión, debemos entender que ademais da xanela de recepción e a xanela de envío, tamén hai unha xanela de conxestión, que se usa principalmente para resolver o problema de que ritmo o remitente comeza a enviar datos á xanela de recepción. Polo tanto, a xanela de conxestión tamén é mantida polo remitente TCP. Necesitamos un algoritmo para decidir cantos datos son apropiados para enviar, xa que o envío de poucos ou demasiados datos non é ideal, de aí o concepto dunha xanela de conxestión.
No control anterior de fluxo de rede, o que evitamos foi o remitente que cubría a caché do receptor con datos, pero non sabiamos o que estaba a suceder na rede. Normalmente, as redes informáticas están nun ambiente compartido. Como resultado, pode haber conxestión de rede debido á comunicación entre outros hosts.
Cando a rede está congestionada, se se segue a enviar un gran número de paquetes, pode causar problemas como atraso e perda de paquetes. Neste momento, TCP retransmitirá os datos, pero a retransmisión aumentará a carga na rede, obtendo maiores atrasos e máis perdas de paquetes. Isto pode entrar nun ciclo vicioso e seguir aumentando.
Así, TCP non pode ignorar o que está a suceder na rede. Cando a rede está conxestionada, TCP sacrifica a si mesmo reducindo a cantidade de datos que envía.
Polo tanto, proponse o control de conxestión, que ten como obxectivo evitar encher toda a rede con datos do remitente. Para regular a cantidade de datos que debe enviar o remitente, TCP define un concepto chamado Xanela de conxestión. O algoritmo de control de conxestión axustará o tamaño da xanela de conxestión segundo o grao de conxestión da rede, para controlar a cantidade de datos enviados polo remitente.
Que é unha xanela de conxestión? Que ten que ver isto coa xanela de envío?
A xanela de conxestión é unha variable de estado mantida polo remitente que determina a cantidade de datos que pode enviar o remitente. A xanela de conxestión cambia de xeito dinámico segundo o nivel de conxestión da rede.
A xanela de envío é un tamaño de xanela acordado entre o remitente e o receptor que indica a cantidade de datos que pode recibir o receptor. A xanela de conxestión e a xanela de envío están relacionadas; A xanela de envío normalmente é igual ao mínimo das fiestras de conxestión e recepción, é dicir, swnd = min (cwnd, rwnd).
A xanela de conxestión CWND cambia do seguinte xeito:
Se non hai conxestión na rede, é dicir, non se produce un tempo de espera de retransmisión, aumenta a xanela de conxestión.
Se hai conxestión na rede, a xanela de conxestión diminúe.
O remitente determina se a rede está conxestionada observando se o paquete de recoñecemento de ACK se recibe dentro do tempo especificado. Se o remitente non recibe o paquete de recoñecemento de ACK dentro do tempo especificado, considérase que a rede está conxestionada.
Ademais da xanela de conxestión, é hora de discutir o algoritmo de control de conxestión TCP. O algoritmo de control de conxestión TCP consta de tres partes principais:
Inicio lento:Inicialmente, a xanela de conxestión CWND é relativamente pequena e o remitente aumenta a xanela de conxestión exponencialmente para adaptarse rapidamente á capacidade da rede.
Evitación da conxestión:Despois de que a xanela de conxestión supere un certo limiar, o remitente aumenta a xanela de conxestión dun xeito lineal para retardar a taxa de crecemento da xanela de conxestión e evitar a sobrecarga da rede.
Recuperación rápida:Se se produce a conxestión, o remitente metade a xanela de conxestión e entra no estado de recuperación rápida para determinar a localización da recuperación da rede a través dos ACK duplicados recibidos e, a continuación, continúa aumentando a xanela de conxestión.
Inicio lento
Cando se establece unha conexión TCP, a xanela de conxestión CWND está configurada inicialmente nun valor MSS mínimo (tamaño máximo do segmento). Deste xeito, a taxa de envío inicial é aproximadamente Bytes MSS/RTT/segundo. O ancho de banda dispoñible normalmente é normalmente moito maior que o MSS/RTT, polo que TCP quere atopar a taxa de envío óptima, que se pode conseguir mediante un inicio lento.
No proceso de inicio lento, o valor da xanela de conxestión CWND inicializarase a 1 MSS e cada vez que se recoñece o segmento de paquetes transmitido, o valor de CWND aumentará por un MSS, é dicir, o valor de CWND converterase en 2 MSS. Despois diso, o valor de CWND duplícase por cada transmisión exitosa dun segmento de paquetes, etc. O proceso de crecemento específico móstrase na seguinte figura.
Non obstante, a taxa de envío non sempre pode crecer; O crecemento ten que rematar nalgún momento. Entón, cando remata a taxa de envío? O inicio lento normalmente remata o aumento da taxa de envío dun dos xeitos:
A primeira forma é o caso da perda de paquetes durante o proceso de envío de inicio lento. Cando se produce unha perda de paquetes, TCP establece a xanela de conxestión do remitente CWND a 1 e reinicia o proceso de inicio lento. Neste momento, introdúcese un concepto de SSRESHLOLD de inicio lento, cuxo valor inicial é a metade do valor de CWND que xera perda de paquetes. É dicir, cando se detecta a conxestión, o valor de SSRESH é a metade do valor da xanela.
A segunda forma é correlacionarse directamente co valor do limiar de inicio lento SSSHRESH. Dado que o valor de SSTresh é a metade do valor da xanela cando se detecta a conxestión, a perda de paquetes pode producirse con cada duplicación cando CWND é maior que SSRESH. Polo tanto, o mellor é definir CWND a SSRESH, o que fará que TCP cambie ao modo de control de conxestión e remate lento.
O último xeito de que o inicio lento poida rematar é se se detectan tres acks redundantes, TCP realiza unha retransmisión rápida e entra no estado de recuperación. (Se non está claro por que hai tres paquetes ACK, explicarase por separado no mecanismo de retransmisión.)
Evitación de conxestión
Cando TCP entra no estado de control de conxestión, CWND está configurado na metade do limiar de conxestión. Isto significa que o valor de CWND non se pode duplicar cada vez que se recibe un segmento de paquetes. Pola contra, adopta un enfoque relativamente conservador no que o valor de CWND aumenta só un MSS (lonxitude máxima do segmento de paquetes) despois de que cada transmisión se complete. Por exemplo, aínda que se recoñecen 10 segmentos de paquetes, o valor de CWND só aumentará nun MSS. Este é un modelo de crecemento lineal e tamén ten un límite superior ao crecemento. Cando se produce a perda de paquetes, o valor de CWND cambia a un MSS e o valor de SSRESH está configurado na metade de CWND. Ou tamén parará o crecemento de MSS cando se reciban 3 respostas redundantes de ACK. Se aínda se reciben tres ACK redundantes despois de reducir a metade do valor de CWND, o valor de SSRESH está rexistrado como a metade do valor de CWND e introdúcese o estado de recuperación rápida.
Recuperación rápida
No estado de recuperación rápida, o valor da xanela de conxestión CWND aumenta por un MSS para cada ACK redundante recibido, é dicir, ACK que non chega a secuencia. Para facer uso dos segmentos de paquetes que se transmitiron con éxito na rede para mellorar a eficiencia da transmisión o máximo posible.
Cando chega un ACK do segmento de paquetes perdidos, TCP diminúe o valor de CWND e entra no estado de evitación de conxestión. Isto é controlar o tamaño da xanela de conxestión e evitar aumentar aínda máis a conxestión da rede.
Se un tempo de espera ocorre despois do estado de control de conxestión, a condición de rede faise máis grave e TCP migra do estado de evitación de conxestión ao estado de inicio lento. Neste caso, o valor da xanela de conxestión CWND está definido en 1 MSS, a lonxitude máxima do segmento de paquetes e o valor do limiar de inicio lento SSSHRESH está configurado na metade de CWND. O propósito deste é aumentar de novo o tamaño da xanela de conxestión despois de que a rede se recupere para equilibrar a taxa de transmisión e o grao de conxestión da rede.
Resumo
Como protocolo de transporte fiable, TCP implementa un transporte fiable por número de secuencia, recoñecemento, control de retransmisión, xestión de conexións e control de fiestras. Entre eles, o mecanismo de control de fluxo controla a cantidade de datos enviados polo remitente segundo a capacidade de recepción real do receptor, que evita os problemas de conxestión da rede e degradación do rendemento. O mecanismo de control de conxestión evita a aparición de conxestión de rede axustando a cantidade de datos enviados polo remitente. Os conceptos de xanela de conxestión e xanela de envío están relacionados entre si, e a cantidade de datos no remitente está controlado axustando dinámicamente o tamaño da xanela de conxestión. O inicio lento, a evitación da conxestión e a recuperación rápida son as tres partes principais do algoritmo de control de conxestión TCP, que axustan o tamaño da xanela de conxestión a través de diferentes estratexias para adaptarse á capacidade e ao grao de conxestión da rede.
Na seguinte sección, examinaremos en detalle o mecanismo de retransmisión de TCP. O mecanismo de retransmisión é unha parte importante do TCP para conseguir unha transmisión fiable. Asegura a transmisión fiable de datos ao retransmitir datos perdidos, corrompidos ou atrasados. O principio de implementación e a estratexia do mecanismo de retransmisión introduciranse e analizaranse en detalle na seguinte sección. Estade atentos!
Tempo de publicación: FEB-24-2025