Hoje, vamos começar focando no TCP. Anteriormente no capítulo sobre camadas, mencionamos um ponto importante. Na camada de rede e abaixo, o foco está mais nas conexões entre hosts, o que significa que seu computador precisa saber onde outro computador está para se conectar a ele. No entanto, a comunicação em uma rede geralmente é uma comunicação entre processos, e não entre máquinas. Portanto, o protocolo TCP introduz o conceito de porta. Uma porta pode ser ocupada por apenas um processo, o que fornece comunicação direta entre processos de aplicativos em execução em diferentes hosts.
A tarefa da camada de transporte é fornecer serviços de comunicação direta entre processos de aplicação em execução em hosts diferentes, por isso também é conhecida como um protocolo ponta a ponta. A camada de transporte oculta os detalhes essenciais da rede, permitindo que o processo de aplicação veja como se houvesse um canal de comunicação lógico ponta a ponta entre as duas entidades da camada de transporte.
TCP significa Protocolo de Controle de Transmissão e é conhecido como um protocolo orientado à conexão. Isso significa que, antes que um aplicativo possa começar a enviar dados para o outro, os dois processos precisam realizar um handshake. O handshake é um processo logicamente conectado que garante a transmissão confiável e o recebimento ordenado de dados. Durante o handshake, uma conexão é estabelecida entre os hosts de origem e destino por meio da troca de uma série de pacotes de controle e da definição de alguns parâmetros e regras para garantir a transmissão bem-sucedida dos dados.
O que é TCP? (Mylinking'sToque de redeeAgente de Pacotes de Redepoderia processar pacotes TCP ou UDP)
TCP (Transmission Control Protocol) é um protocolo de comunicação da camada de transporte baseado em fluxo de bytes, confiável e orientado à conexão.
Orientado para conexão: Orientado a conexão significa que a comunicação TCP é um-para-um, ou seja, comunicação ponto-a-ponto de ponta a ponta, diferente do UDP, que pode enviar mensagens para vários hosts ao mesmo tempo, portanto, a comunicação um-para-muitos não pode ser alcançada.
Confiável: A confiabilidade do TCP garante que os pacotes sejam entregues de forma confiável ao receptor, independentemente de alterações no link de rede, o que torna o formato do pacote de protocolo TCP mais complexo que o UDP.
Baseado em fluxo de bytes: A natureza do TCP baseada em fluxo de bytes permite a transmissão de mensagens de qualquer tamanho e garante a ordem das mensagens: mesmo que a mensagem anterior não tenha sido totalmente recebida, e mesmo que os bytes subsequentes tenham sido recebidos, o TCP não os entregará à camada de aplicação para processamento e descartará automaticamente os pacotes duplicados.
Após o host A e o host B estabelecerem uma conexão, a aplicação precisa apenas usar a linha de comunicação virtual para enviar e receber dados, garantindo assim a transmissão de dados. O protocolo TCP é responsável por controlar tarefas como estabelecimento, desconexão e espera da conexão. Vale ressaltar que aqui dizemos que a linha virtual significa apenas estabelecer uma conexão, enquanto a conexão do protocolo TCP indica apenas que os dois lados podem iniciar a transmissão de dados e garantir a confiabilidade dos dados. Os nós de roteamento e transporte são gerenciados pelos dispositivos de rede; o protocolo TCP em si não se preocupa com esses detalhes.
Uma conexão TCP é um serviço full-duplex, o que significa que os hosts A e B podem transmitir dados em ambas as direções em uma conexão TCP. Ou seja, os dados podem ser transferidos entre os hosts A e B em um fluxo bidirecional.
O TCP armazena temporariamente os dados no buffer de envio da conexão. Este buffer de envio é um dos caches configurados durante o handshake triplo. Posteriormente, o TCP enviará os dados do cache de envio para o cache de recebimento do host de destino no momento apropriado. Na prática, cada par terá um cache de envio e um cache de recebimento, como mostrado aqui:
O buffer de envio é uma área de memória mantida pela implementação TCP no lado do remetente, usada para armazenar temporariamente os dados a serem enviados. Quando o handshake triplo é realizado para estabelecer uma conexão, o cache de envio é configurado e usado para armazenar dados. O buffer de envio é ajustado dinamicamente de acordo com o congestionamento da rede e o feedback do destinatário.
Um buffer de recebimento é uma área de memória mantida pela implementação do TCP no lado receptor, usada para armazenar temporariamente os dados recebidos. O TCP armazena os dados recebidos no cache de recebimento e aguarda que o aplicativo superior os leia.
Observe que o tamanho do cache de envio e recebimento é limitado. Quando o cache está cheio, o TCP pode adotar algumas estratégias, como controle de congestionamento, controle de fluxo, etc., para garantir a transmissão confiável de dados e a estabilidade da rede.
Em redes de computadores, a transmissão de dados entre hosts é realizada por meio de segmentos. Então, o que é um segmento de pacote?
O TCP cria um segmento TCP, ou segmento de pacote, dividindo o fluxo de entrada em blocos e adicionando cabeçalhos TCP a cada bloco. Cada segmento só pode ser transmitido por um período limitado e não pode exceder o Tamanho Máximo do Segmento (MSS). Em seu caminho, um segmento de pacote passa pela camada de enlace. A camada de enlace possui uma Unidade Máxima de Transmissão (MTU), que é o tamanho máximo de pacote que pode passar pela camada de enlace de dados. A unidade máxima de transmissão geralmente está relacionada à interface de comunicação.
Então qual é a diferença entre MSS e MTU?
Em redes de computadores, a arquitetura hierárquica é muito importante porque leva em consideração as diferenças entre os diferentes níveis. Cada camada tem um nome diferente; na camada de transporte, os dados são chamados de segmento, e na camada de rede, os dados são chamados de pacote IP. Portanto, a Unidade Máxima de Transmissão (MTU) pode ser considerada o Tamanho Máximo do Pacote IP que pode ser transmitido pela camada de rede, enquanto o Tamanho Máximo do Segmento (MSS) é um conceito da camada de transporte que se refere à quantidade máxima de dados que pode ser transmitida por um pacote TCP por vez.
Observe que, quando o Tamanho Máximo do Segmento (MSS) for maior que a Unidade Máxima de Transmissão (MTU), a fragmentação do IP será realizada na camada de rede, e o TCP não dividirá os dados maiores em segmentos adequados ao tamanho da MTU. Haverá uma seção na camada de rede dedicada à camada IP.
Estrutura do segmento de pacote TCP
Vamos explorar o formato e o conteúdo dos cabeçalhos TCP.
Número de sequência: Um número aleatório gerado pelo computador quando a conexão é estabelecida como seu valor inicial quando a conexão TCP é estabelecida, e o número de sequência é enviado ao receptor através do pacote SYN. Durante a transmissão de dados, o remetente incrementa o número de sequência de acordo com a quantidade de dados enviados. O receptor avalia a ordem dos dados de acordo com o número de sequência recebido. Se os dados estiverem fora de ordem, o receptor os reordenará para garantir a ordem dos dados.
Número de reconhecimento: Este é um número de sequência usado no TCP para confirmar o recebimento de dados. Ele indica o número de sequência dos próximos dados que o remetente espera receber. Em uma conexão TCP, o destinatário determina quais dados foram recebidos com sucesso com base no número de sequência do segmento do pacote de dados recebido. Quando o destinatário recebe os dados com sucesso, ele envia um pacote ACK ao remetente, que contém o número de confirmação. Após receber o pacote ACK, o remetente pode confirmar que os dados foram recebidos com sucesso antes de confirmar o número de resposta.
Os bits de controle de um segmento TCP incluem o seguinte:
Bit ACK: Quando este bit é 1, significa que o campo de resposta de confirmação é válido. O TCP especifica que este bit deve ser definido como 1, exceto para pacotes SYN quando a conexão é estabelecida inicialmente.
Bit RST:Quando este bit é 1, indica que há uma exceção na conexão TCP e a conexão deve ser forçada a ser desconectada.
Bit SYN:Quando este bit é definido como 1, significa que a conexão deve ser estabelecida e o valor inicial do número de sequência é definido no campo de número de sequência.
Bit FIN:Quando este bit é 1, significa que nenhum outro dado será enviado no futuro e a conexão é desejada.
As várias funções e características do TCP são incorporadas pela estrutura dos segmentos de pacotes TCP.
O que é UDP? (Mylinking'sToque de redeeAgente de Pacotes de Redepoderia processar pacotes TCP ou UDP)
O Protocolo de Datagrama de Usuário (UDP) é um protocolo de comunicação sem conexão. Comparado ao TCP, o UDP não oferece mecanismos de controle complexos. O protocolo UDP permite que aplicativos enviem pacotes IP encapsulados diretamente sem estabelecer uma conexão. Quando o desenvolvedor opta por usar UDP em vez de TCP, o aplicativo se comunica diretamente com o IP.
O nome completo do Protocolo UDP é Protocolo de Datagrama do Usuário, e seu cabeçalho tem apenas oito bytes (64 bits), o que é bastante conciso. O formato do cabeçalho UDP é o seguinte:
Portas de destino e origem: Sua principal finalidade é indicar para qual processo o UDP deve enviar pacotes.
Tamanho do pacote: O campo de tamanho do pacote contém o tamanho do cabeçalho UDP mais o tamanho dos dados
Soma de verificação: Projetado para garantir a entrega confiável de cabeçalhos e dados UDP. A função da soma de verificação é detectar se ocorreu um erro ou corrupção durante a transmissão de um pacote UDP para garantir a integridade dos dados.
Diferenças entre TCP e UDP no MylinkingToque de redeeAgente de Pacotes de Redepoderia processar pacotes TCP ou UDP
TCP e UDP são diferentes nos seguintes aspectos:
Conexão: O TCP é um protocolo de transporte orientado à conexão que requer o estabelecimento de uma conexão antes que os dados possam ser transferidos. O UDP, por outro lado, não requer conexão e pode transferir dados imediatamente.
Objeto de serviço: O TCP é um serviço de dois pontos um-para-um, ou seja, uma conexão possui apenas dois pontos de extremidade para se comunicar. No entanto, o UDP suporta comunicação interativa um-para-um, um-para-muitos e muitos-para-muitos, permitindo a comunicação com vários hosts simultaneamente.
Confiabilidade: O TCP fornece o serviço de entrega confiável de dados, garantindo que os dados estejam livres de erros, perdas, não sejam duplicados e cheguem sob demanda. O UDP, por outro lado, faz o possível e não garante uma entrega confiável. O UDP pode sofrer com perdas de dados e outras situações durante a transmissão.
Controle de congestionamento, controle de fluxo: O TCP possui mecanismos de controle de congestionamento e fluxo, que podem ajustar a taxa de transmissão de dados de acordo com as condições da rede para garantir a segurança e a estabilidade da transmissão de dados. O UDP não possui mecanismos de controle de congestionamento e fluxo; mesmo que a rede esteja muito congestionada, ele não fará ajustes na taxa de transmissão do UDP.
Cabeçalho suspenso: O TCP tem um cabeçalho longo, normalmente 20 bytes, que aumenta quando campos opcionais são usados. O UDP, por outro lado, tem um cabeçalho fixo de apenas 8 bytes, portanto, o UDP tem uma sobrecarga de cabeçalho menor.
Cenários de aplicação TCP e UDP:
TCP e UDP são dois protocolos diferentes da camada de transporte e apresentam algumas diferenças em cenários de aplicação.
Como o TCP é um protocolo orientado à conexão, ele é usado principalmente em cenários que exigem entrega confiável de dados. Alguns casos de uso comuns incluem:
Transferência de arquivos FTP: O TCP pode garantir que os arquivos não sejam perdidos ou corrompidos durante a transferência.
HTTP/HTTPS: O TCP garante a integridade e a correção do conteúdo da web.
Como o UDP é um protocolo sem conexão, ele não oferece garantia de confiabilidade, mas possui características de eficiência e tempo real. O UDP é adequado para os seguintes cenários:
Tráfego de baixo pacote, como DNS (Sistema de Nomes de Domínio): As consultas DNS geralmente são pacotes curtos, e o UDP pode concluí-las mais rapidamente.
Comunicação multimídia, como vídeo e áudio:Para transmissão multimídia com altos requisitos de tempo real, o UDP pode fornecer menor latência para garantir que os dados possam ser transmitidos em tempo hábil.
Comunicação de transmissão: O UDP suporta comunicação um-para-muitos e muitos-para-muitos e pode ser usado para transmissão de mensagens de broadcast.
Resumo
Hoje aprendemos sobre o TCP. O TCP é um protocolo de comunicação da camada de transporte, orientado à conexão, confiável e baseado em fluxo de bytes. Ele garante a transmissão confiável e a recepção ordenada de dados por meio do estabelecimento de conexão, handshake e confirmação. O protocolo TCP utiliza portas para realizar a comunicação entre processos e fornece serviços de comunicação direta para processos de aplicativos em execução em diferentes hosts. As conexões TCP são full-duplex, permitindo transferências de dados bidirecionais simultâneas. Em contraste, o UDP é um protocolo de comunicação orientado à conexão, que não oferece garantias de confiabilidade e é adequado para alguns cenários com altos requisitos de tempo real. TCP e UDP diferem em modo de conexão, objeto de serviço, confiabilidade, controle de congestionamento, controle de fluxo e outros aspectos, e seus cenários de aplicação também são diferentes.
Horário da publicação: 03/12/2024