Aprendizagem do protocolo TCP UDP

Em primeiro lugar, a rede é dividida nas seguintes camadas, e o TCP/UDP trabalha na camada de transporte.

É usado principalmente para transferir dados entre programas. Os dados podem ser arquivos de texto, vídeos, imagens, etc. Para TCP/UDP, eles são todos um monte de números binários e não há muita diferença. A diferença específica é uma conexão baseado em (TCP) , um baseado em conexão (UDP).

 

Se compararmos a comunicação entre pessoas com a comunicação entre processos, existem duas formas, uma é escrever uma carta e a outra é fazer um telefonema. Não há resposta para escrever uma carta, incluindo se o destinatário a recebeu e se o endereço está correto. Tudo isso é desconhecido; mas fazer uma chamada pode determinar se a outra parte está conectada e se o número de telefone está correto. Tudo isso é conhecido. TCP e UDP são semelhantes às duas situações acima, consulte o diagrama abaixo para obter detalhes. A imagem vem da captura de tela do vídeo do mestre UP da estação B.

A razão pela qual o TCP pode garantir a conclusão correta do processo acima está principalmente nos três aspectos a seguir: handshake de três vias, confirmação de transmissão e onda de quatro vias .

Aperto de mão triplo:

O handshake triplo é um processo baseado em conexão. Ao enviar dados, o cliente primeiro libera um pacote de dados de solicitação ( pacote SYN ) e, se o servidor concordar com a conexão, ele responde com um pacote ( pacote SYN+ACK ) , e o cliente responde com um pacote ( ACK packet ), a conexão é estabelecida.

 Como o processo acima envia três pacotes, ele é chamado de handshake triplo.

Por que não um aperto de mão de duas vias, mas um aperto de mão de três?

Evite que mensagens inválidas sejam transmitidas repentinamente ao servidor e causem erros. Por exemplo, o cliente primeiro envia um pacote SYN para o servidor. Devido ao congestionamento da rede, o servidor não recebe o pacote SYN. ​​Nesse momento, o cliente envia outro pacote SYN e o servidor recebe e responde o pacote SYN+ACK ; neste momento O último pacote SYN foi enviado novamente para o servidor devido à recuperação da rede. Neste momento, o servidor pensou que eram duas conexões, mas o cliente ainda pensou que era uma conexão estabelecida, resultando em conflitos e inconsistências entre as duas partes. Se for um handshake de três vias, o servidor não poderá receber o pacote ACK final e, naturalmente, não considerará a conexão bem-sucedida. Portanto, o handshake de três vias é essencialmente para resolver o problema de canais de rede não confiáveis, para poder estabelecer conexões confiáveis ​​em canais não confiáveis .

método de envio:

O TCP estabelece uma conexão confiável em um canal de rede não confiável. Ele enfrenta principalmente os dois problemas a seguir, um é o problema da perda de pacotes e o outro é o problema da desordem . Para resolver esse problema, o protocolo TCP estabelece um buffer de envio para cada conexão. Área , conforme mostrado na figura abaixo: o primeiro número de série após a conexão estabelecida é 0, e o seguinte será +1 a cada vez , e cada vez que é enviado, uma parte dos dados é retirada de o buffer para formar uma mensagem enviada, e o número de série é anexado ao cabeçalho do protocolo TCP número e comprimento , o número de sequência e o comprimento dos dados contidos na mensagem de confirmação ACK, ou seja, o número de sequência inicial para a próxima transmissão da conexão . Esse método de envio pode confirmar que os dados enviados pelo remetente foram recebidos, de modo que vários pacotes de dados possam ser enviados continuamente, e o destinatário apenas precisa responder um ACK. A extremidade de envio pode dividir os dados a serem enviados em uma série de fragmentos ( cortando e enviando ) e enviá-los para a extremidade do par, e a extremidade do par pode remontar os dados completos de acordo com o número de sequência e comprimento. Se alguns pacotes de dados forem perdidos, a extremidade receptora pode pedir à extremidade transmissora para retransmitir. Por exemplo, se os dados de 100 bytes de 100-199 forem perdidos, a extremidade receptora enviará uma mensagem ACK=100 para a extremidade transmissora. Retransmita o dados deste pacote, e a extremidade receptora o completa.

Observe que o processo acima não distingue entre o cliente e o servidor, porque o TCP é full-duplex e o mecanismo acima é usado para ambas as extremidades.

Acene quatro vezes:

Tanto o servidor quanto o cliente podem iniciar ativamente uma solicitação de fechamento de conexão.

Por exemplo, o cliente envia ativamente uma solicitação de fechamento de conexão, o processo é mostrado na figura e a explicação específica é a seguinte:

  • O cliente envia um pacote FIN, e então entra no estado de espera 1 (WAIT-1), aguardando o pacote ACK enviado pelo servidor.
  • Depois de receber o pacote FIN, o servidor entra no estado de espera de fechamento (CLOSE-WAIT) após o envio do pacote ACK, e o cliente entra no estado de espera de término 2. O servidor ainda pode enviar dados não enviados neste momento e o cliente também pode receber dados.
  • Depois que o servidor envia os dados, ele envia um pacote FIN para o cliente e entra no estado de confirmação final.
  • Após recebê-lo, o cliente responde com o pacote ACK, entra no estado de espera de timeout e fecha a conexão após o timeout. O servidor fecha imediatamente a conexão após receber o pacote ACK.

 

Por que o cliente precisa aguardar o tempo limite?

Para garantir que a outra parte recebeu o pacote ACK, se o cliente liberar a conexão imediatamente após o envio do pacote ACK, mas devido a problemas de rede, o servidor não receberá o pacote ACK e o servidor permanecerá no final estado de confirmação. Se o servidor não receber o pacote ACK, o cliente espera por um período de tempo, então o servidor reenviará o pacote FIN e o cliente reenviará o pacote ACK em resposta ao pacote FIN e atualizará o período de tempo limite. Esse mecanismo, como o handshake de três vias, é para confirmação de desconexão confiável durante conexões de rede não confiáveis.

UDP

A conexão UDP é baseada na não conexão. Enviar dados é simplesmente encapsular o pacote de dados e, em seguida, enviá-lo para fora da placa de rede. Não há conexão de estado entre os pacotes de dados. A velocidade é maior, mas pode haver problemas de perda de pacotes.

A principal diferença entre TCP e UDP 

 

O TCP é adequado para cenários que exigem alta estabilidade de dados, enquanto o UDP é adequado para cenários que exigem alta velocidade e baixa integridade de dados.

Acho que você gosta

Origin blog.csdn.net/m0_46259216/article/details/127624748
Recomendado
Clasificación