- Por que você precisa do protocolo TCP? Em que nível você trabalha?
- Necessidade de garantir a entrega confiável, ordenada e completa dos pacotes, para que exista o protocolo TCP
- A camada IP não é confiável, portanto, na camada de transporte
- O que é uma conexão TCP
- Orientado a conexão (individual), confiável, fluxo de bytes (sem borda, ordenado)
- Como determinar exclusivamente uma conexão TCP
- Endereço de origem + porta, endereço de destino + porta determinam uma conexão exclusiva
- Diferenças e cenários de aplicativos do TCP UDP
- Do ponto de vista da conexão, o TCP primeiro estabelece uma conexão antes de transmitir e o UDP transmite diretamente
- Do ponto de vista do objeto, transmissão TCP um para um, UDP um para muitos (um para um, muitos para muitos)
- De um ponto de vista confiável, o TCP é entregue de forma confiável e a entrega de UDP não é garantida
- Da perspectiva do controle de congestionamento e fluxo, o TCP possui controle de congestionamento e controle de fluxo, o UDP não
- Da perspectiva da sobrecarga do cabeçalho, o TCP é longo e variável e o UDP é fixado em oito bytes
- Cenários de aplicativos: TCP (FTP, HTTP, etc.) UDP (vídeo, áudio, comunicação de transmissão)
- Aperto de mão três
- Cliente envia (inicia uma conexão com o servidor)
- Recebido pelo servidor e devolvido uma "resposta de confirmação"
- O cliente envia para o estado estabelecido e o lado do servidor se torna o estado estabelecido após recebê-lo (somente os dados podem ser enviados dessa vez, não as duas primeiras vezes porque foram estabelecidos)
- Por que três aperto de mão
- Evite conexões históricas (supondo que uma mensagem antiga chegue ao servidor antes da nova mensagem, o servidor retornará e a mensagem antiga recebida pelo cliente poderá ser uma mensagem expirada e, em seguida, envie o RST para encerrar a conexão. Por duas vezes, essa conexão é estabelecida, é ridícula)
- Número de série inicial síncrono
- Para evitar o desperdício de recursos (pacotes SYN novos e antigos chegam um após o outro, se o segundo handshake fizer com que várias conexões sejam estabelecidas)
- Qual é a quarta onda
- O cliente pretende fechar, envie a mensagem FIN_WAIT_1 fechada
- O servidor envia uma mensagem de resposta ACK e entra no estado CLOSED_WAIT
- O cliente entra no estado FIN_WAIT2 após receber
- Depois que o servidor processa os dados, ele envia FIN ao cliente
- Depois que o cliente receber, retorne ACK
- Depois que o servidor o recebeu, ele fechou
- Finalmente, depois que o cliente aguarda 2MSL, ele também é fechado
- Por que você precisa acenar quatro vezes
- Ao fechar a conexão, o cliente não envia, mas recebe dados
- Depois que o servidor retornar o ACK, pode haver dados a serem enviados e processados.Depois de enviar os dados, envie FIN
- O motivo pelo qual o tempo TIME_WAIT é 2MSL
- 1MSL é o tempo máximo de sobrevivência de uma mensagem
- Mas pode haver uma mensagem do remetente em Wanluo e o destinatário precisa responder e retornar, 2MSL
- Motivo da existência de TIME_WAIT
- Impedir o pacote de dados da conexão antiga (os dados da conexão antiga, porque o tempo TIME_WAIT é muito curto, a segunda conexão é iniciada, ele foi recebido, ultrajante)
- Garanta o fechamento correto da conexão (aguarde tempo suficiente para garantir que o último ACK possa ser recebido pela parte passiva do fechamento para ajudá-lo a fechar normalmente)
- Para ser continuado