Compare TCP e UDP
Aprenda o que os protocolos de transporte acrescentam ao IP.
- Explicar como as portas entregam dados ao programa certo.
- Acompanhar a negociação inicial de três vias do TCP (three-way handshake).
- Escolher TCP ou UDP conforme as necessidades de entrega.
O IP leva um pacote até uma máquina, na base do melhor esforço. Ele não promete nada: pacotes podem se perder, duplicar ou chegar fora de ordem, e ele não faz ideia de qual programa deve recebê-los. A camada de transporte lida com esses dois problemas, e os dois protocolos principais fazem isso de formas bem diferentes.
Portas: da máquina ao programa
Uma porta é um número de 16 bits que identifica uma ponta de comunicação de um programa. Servidores escutam em portas conhecidas, como 443 para HTTPS e 53 para DNS. Clientes recebem uma porta temporária do sistema operacional.
Uma conexão TCP é identificada por quatro valores: endereço de origem, porta de origem, endereço de destino e porta de destino. É assim que um servidor atende milhares de conexões na porta 443 sem confundi-las.
TCP: uma conversa confiável
O TCP transforma pacotes não confiáveis em um fluxo de bytes confiável e ordenado. Ele numera cada byte, e quem recebe confirma o que chegou, de modo que dados perdidos possam ser reenviados e dados fora de ordem possam ser reorganizados.
Antes de tudo isso, os dois lados precisam combinar os números iniciais. Essa é a negociação inicial de três vias (three-way handshake).
Experimente
Até 15 XPAbra uma conexão TCP
Acompanhe os números de sequência. Cada lado escolhe um número inicial aleatório, e uma confirmação diz “o próximo número que espero”. Preveja antes de revelar.
Aqui está essa mesma conversa em uma captura real. [S] é SYN, [S.] é SYN-ACK, [.] é um ACK simples e [P.] são dados sendo entregues à aplicação.
1$ sudo tcpdump -n -S host 203.0.113.8
2IP 192.168.1.10.51514 > 203.0.113.8.443: Flags [S], seq 1000, length 0
3IP 203.0.113.8.443 > 192.168.1.10.51514: Flags [S.], seq 5000, ack 1001, length 0
4IP 192.168.1.10.51514 > 203.0.113.8.443: Flags [.], ack 5001, length 0
5IP 192.168.1.10.51514 > 203.0.113.8.443: Flags [P.], seq 1001:1501, ack 5001, length 500
6IP 203.0.113.8.443 > 192.168.1.10.51514: Flags [.], ack 1501, length 0UDP: é só enviar
O UDP acrescenta ao IP portas e uma soma de verificação, e quase nada além disso. Não há negociação inicial, confirmação nem retransmissão. Cada datagrama é independente: chega inteiro ou não chega.
Parece pior, mas é a escolha certa quando dados antigos não servem para nada. Em uma chamada de vídeo, um pacote retransmitido meio segundo depois chegaria quando aquele momento já passou, então é melhor pulá-lo e seguir em frente.
Experimente
Até 15 XPEscolha o transporte
Para cada aplicação, pergunte: dado atrasado é pior do que dado faltando? Se todo byte precisa chegar, você provavelmente quer TCP.
“Baixar uma atualização de software”
“Uma chamada de voz ao vivo”
“Carregar um extrato bancário”
“Uma consulta DNS”
“Atualizações de posição de um jogo multiplayer rápido”
“Enviar um e-mail”
Experimente
Até 15 XPLeia conexões e capturas
ss lista os sockets de uma máquina (netstat é o equivalente mais antigo). Clique na linha que responde a cada pergunta.
Qual linha mostra o servidor web esperando novas conexões HTTPS?
Principais conclusões
Portas direcionam os dados a um programa, e quatro valores identificam uma conexão TCP.
O TCP oferece um fluxo de bytes confiável e ordenado, ao custo de uma negociação inicial.
O UDP envia datagramas independentes e deixa a confiabilidade para a aplicação.
Quiz da aula
7 perguntas · aprovação com 5 acertos · até 50 XP
Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.
Dúvidas sobre esta lição
Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.
Carregando publicações…