A camada de transporte: UDP e TCP

Aprenda como a camada de transporte transforma a entrega de melhor esforço da internet entre hospedeiros em comunicação entre processos de aplicação. Veja como os números de porta entregam cada segmento ao socket correto, o que o UDP acrescenta ao IP e quando uma aplicação deve escolhê-lo, e como um protocolo confiável é construído passo a passo com somas de verificação, reconhecimentos, números de sequência, temporizadores e janelas deslizantes, usando Go-back-N e repetição seletiva. Depois, acompanhe o TCP em detalhes: seu formato de segmento, números de sequência e de reconhecimento baseados em bytes, o estabelecimento e o encerramento da conexão, a estimativa do tempo de ida e volta e os tempos limite, a retransmissão e a retransmissão rápida, e o controle de fluxo com a janela de recepção.

IntermediárioAula 3 de 8 do curso Curso de Redes de computadores

O que você vai aprender

  1. Descreva os serviços que a camada de transporte acrescenta à camada de rede e acompanhe como cada segmento recebido chega ao processo de aplicação correto por meio de números de porta e sockets.
    • Descreva os serviços da camada de transporte e seus limites
      Explique como a camada de transporte transforma a entrega entre hospedeiros em comunicação entre processos e compare o que TCP e UDP oferecem às aplicações.
    • Entregue segmentos ao socket correto usando portas
      Use números de porta para explicar multiplexação e demultiplexação e identifique qual socket recebe um segmento UDP ou TCP.
  2. Leia o cabeçalho UDP, calcule e confira sua soma de verificação e decida, para uma determinada aplicação, se o serviço mínimo do UDP é uma escolha melhor que o TCP.
    • Leia o cabeçalho UDP e calcule sua soma de verificação
      Interprete os quatro campos do cabeçalho UDP e calcule a soma de verificação da internet com aritmética de complemento de um.
    • Decida quando o UDP é o protocolo de transporte adequado
      Avalie a velocidade e o controle do UDP diante de sua falta de confiabilidade, controle de fluxo e controle de congestionamento e escolha o protocolo de transporte conforme as necessidades de uma aplicação.
  3. Projete, passo a passo, um protocolo que entrega dados corretamente por um canal que corrompe e perde pacotes e, depois, torne-o eficiente com transmissão em pipeline usando Go-back-N e repetição seletiva.
    • Recupere dados com erros de bits usando reconhecimentos e números de sequência
      Construa um protocolo pare e espere para um canal que corrompe bits e explique por que ele precisa de somas de verificação, reconhecimentos, retransmissões e números de sequência.
    • Trate a perda de pacotes com temporizadores e meça o desempenho do protocolo pare e espere
      Acrescente um temporizador de contagem regressiva para lidar com pacotes perdidos, acompanhe o protocolo do bit alternante em cenários de perda e calcule por que o pare e espere desperdiça um enlace rápido.
    • Transmita pacotes em pipeline com o Go-back-N
      Acompanhe o remetente e o receptor do Go-back-N com reconhecimentos cumulativos e um único temporizador e explique seu limite de tamanho de janela.
    • Retransmita apenas os pacotes perdidos com repetição seletiva
      Acompanhe a repetição seletiva com reconhecimentos individuais, temporizadores por pacote e armazenamento em buffer no receptor, explique seu limite de janela mais restrito e compare-a com o Go-back-N.
  4. Descreva a conexão TCP e o formato do segmento, determine números de sequência e de reconhecimento em um fluxo de bytes e acompanhe como as conexões são abertas e fechadas.
    • Descreva a conexão TCP e a estrutura de seus segmentos
      Explique o que é uma conexão TCP, como o TCP trata os dados da aplicação como um fluxo de bytes e para que serve cada campo do cabeçalho TCP.
    • Numere bytes usando números de sequência e de reconhecimento
      Determine os números de sequência e de reconhecimento dos segmentos nas duas direções de uma conexão, incluindo chegadas fora de ordem e retorno cíclico.
    • Abra e feche conexões TCP
      Acompanhe o estabelecimento de conexão em três etapas e o encerramento da conexão com números de sequência e estados e explique TIME_WAIT, reinicializações e inundação de SYN.
  5. Estime o tempo de ida e volta e defina o tempo limite do TCP, acompanhe como o TCP detecta e corrige perdas e use a janela de recepção para impedir que o remetente cause o transbordamento do buffer do receptor.
    • Estime o tempo de ida e volta e defina o tempo limite
      Calcule o tempo de ida e volta suavizado do TCP, sua variação e o tempo limite de retransmissão e explique como o tempo limite aumenta após uma perda.
    • Acompanhe as retransmissões e os reconhecimentos do TCP
      Acompanhe o remetente e o receptor TCP diante de reconhecimentos perdidos, atrasados e duplicados, aplique suas regras de reconhecimento e use a retransmissão rápida.
    • Evite o transbordamento do buffer de recepção com controle de fluxo
      Calcule a janela de recepção, aplique o limite do remetente para dados não reconhecidos e explique janelas zero, fator de escala da janela e o limite de vazão definido por uma janela.

Guia de estudo de Camada de transporte

5 capítulos

1

Dos hospedeiros aos processos de aplicação

Um hospedeiro pode executar um navegador, uma chamada e uma transferência de arquivo ao mesmo tempo. Cada aplicação precisa de seus próprios dados, embora compartilhem uma interface de rede. Os protocolos de transporte fornecem esse serviço no nível de processo acima do IP. Acompanhe um segmento do socket de envio ao socket de recepção e depois use portas e endereços para distinguir a entrega UDP das conexões separadas mantidas por um servidor TCP.

1.1 O que TCP e UDP acrescentam ao IP

Uma aplicação envia dados por um socket, a interface entre seu processo e a camada de transporte. A camada de transporte faz com que processos em diferentes hospedeiros pareçam se comunicar diretamente. Isso é comunicação lógica: os dados ainda atravessam enlaces e roteadores, mas a aplicação trabalha por meio de seu socket local.

Acompanhe os dados pelas camadas

No remetente, o protocolo de transporte recebe dados da aplicação, divide-os em partes quando necessário e acrescenta um cabeçalho de transporte. O segmento resultante vai para o IP. O IP acrescenta seu próprio cabeçalho, produzindo um datagrama IP para ser transportado pela rede. No destino, o IP entrega o segmento ao protocolo de transporte, que interpreta o cabeçalho de transporte e entrega os dados a um socket.

A lógica do protocolo é executada nos hospedeiros das extremidades. Roteadores comuns encaminham datagramas IP; eles não realizam reconhecimento e retransmissão TCP em nome das aplicações. Pense em um endereço IP como o endereço de um prédio e no socket de recepção como o destinatário dentro dele. Levar uma carta ao prédio e entregá-la à pessoa correta são tarefas distintas.

O IP oferece entrega de melhor esforço entre hospedeiros. Datagramas podem ser perdidos, duplicados, reordenados ou corrompidos. A camada de transporte estende a entrega aos processos e pode acrescentar mecanismos que corrigem essas falhas.

Compare os serviços
ServiçoUDPTCP
Estilo de comunicaçãoMensagens independentesConexão com fluxo de bytes
Entrega confiável e em ordemNãoSim
Controle de fluxo do receptorNãoSim
Controle de congestionamento da redeSem mecanismo integradoSim
Atraso máximo ou vazão mínimaSem garantiaSem garantia
Cifragem por si sóNãoNão

O UDP, Protocolo de Datagramas do Usuário, acrescenta portas e uma verificação de erros à entrega do IP. Um segmento pode chegar sem qualquer troca prévia de estabelecimento de conexão. O UDP não recupera um segmento perdido nem retém um segmento posterior até que um anterior chegue.

O TCP, Protocolo de Controle de Transmissão, estabelece o estado da conexão antes da transferência normal de dados. Ele numera bytes, verifica erros, obtém reconhecimentos e retransmite dados ausentes. A aplicação receptora recebe um fluxo de bytes confiável e em ordem. O controle de fluxo protege seu buffer; o controle de congestionamento responde à carga da rede.

A confiabilidade não torna confiável a rede subjacente. Se um datagrama IP desaparece, o TCP envia outra cópia dos dados ausentes. Se bytes posteriores chegam primeiro, o receptor pode retê-los até que a lacuna seja preenchida. A aplicação recebe os dados após a correção da entrega, mas pode esperar mais. Nem o TCP nem o UDP pode prometer um prazo de entrega ou reservar capacidade de rede apenas por operar sobre o IP de melhor esforço.

Escolha o serviço no socket

Um socket de fluxo normalmente seleciona TCP; um socket de datagrama seleciona UDP. HTTP/1.1 e HTTP/2, transferência de correio eletrônico por SMTP e acesso remoto por SSH usam TCP. Consultas DNS comuns frequentemente usam UDP. O HTTP/3 usa QUIC sobre UDP: o QUIC fornece fluxos confiáveis e segurança acima do serviço mínimo do UDP.

Uma conexão TCP por si só não mantém uma senha em sigilo. O TLS acrescenta cifragem e autenticação acima do TCP; o QUIC integra o TLS ao seu projeto. A confiabilidade responde se os bytes chegam à aplicação corretamente e em ordem. A confidencialidade responde se um observador pode lê-los.

Principais conclusões

  • O IP entrega dados entre hospedeiros; a camada de transporte os entrega entre processos de aplicação.
  • O TCP corrige perdas e problemas de ordem nos hospedeiros das extremidades.
  • O UDP fornece entrega de mensagens sem recuperação ou controle de fluxo integrados.
  • Nem o TCP nem o UDP, por si só, garante prazo, vazão ou cifragem.

1.2 Portas e seleção de sockets

Um hospedeiro frequentemente tem muitos sockets abertos. A multiplexação reúne dados de saída desses sockets e acrescenta cabeçalhos de transporte. A demultiplexação seleciona o socket de recepção para cada segmento que chega.

Leia as informações de endereçamento

Tanto o TCP quanto o UDP contêm uma porta de origem de 16 bits e uma porta de destino de 16 bits. Os valores vão de 0 a 65.535. A porta de destino identifica o serviço receptor; a porta de origem ajuda a outra extremidade a endereçar sua resposta. A IANA agrupa as portas em portas de sistema de 0 a 1023, portas de usuário de 1024 a 49151 e portas dinâmicas de 49152 a 65535.

Os servidores escutam em portas convencionadas: SSH usa 22, SMTP 25, DNS 53, HTTP 80 e HTTPS geralmente 443. Os clientes costumam receber uma porta efêmera temporária do sistema operacional. Sua faixa configurada não precisa ser igual à faixa dinâmica da IANA: um padrão comum do Linux é de 32768 a 60999, enquanto o Windows geralmente usa de 49152 a 65535.

Ao receber um datagrama IP, o hospedeiro primeiro identifica o protocolo de transporte. O valor 6 no campo de protocolo IPv4 significa TCP e 17 significa UDP; o IPv6 identifica o protocolo da camada superior por meio de sua cadeia de campos de próximo cabeçalho. A porta TCP 53 e a porta UDP 53 pertencem a espaços de nomes de transporte diferentes. O receptor então usa endereços e portas para selecionar um socket e coloca os dados em fila para a aplicação.

UDP: muitos clientes, um socket de recepção

No modelo básico de servidor UDP não conectado, o socket de recepção é selecionado pelo endereço IP de destino e pela porta de destino. Diferentes clientes podem enviar dados para esse mesmo socket.

Um servidor em 203.0.113.53 escuta na porta UDP 53. Requisições de 198.51.100.7:51000 e 192.0.2.44:62011 chegam a esse único socket do servidor. A primeira resposta vai de 203.0.113.53:53 para 198.51.100.7:51000. A aplicação obtém o endereço e a porta de origem de cada requisição para poder responder ao cliente correto. Um socket UDP conectado também pode restringir a extremidade da qual recebe dados; nenhuma negociação UDP é acrescentada.

TCP: distinga conexões por quatro valores

Um servidor TCP tem um socket de escuta e sockets de conexão separados. Uma conexão é identificada pela quádrupla de IP de origem, porta de origem, IP de destino e porta de destino.

Para um servidor em 203.0.113.10:80, estas são conexões diferentes:

  • 198.51.100.7:50312 → 203.0.113.10:80
  • 198.51.100.7:50313 → 203.0.113.10:80
  • 192.0.2.44:50312 → 203.0.113.10:80

As duas primeiras diferem na porta de origem. A primeira e a terceira compartilham uma porta de origem, mas diferem no endereço de origem. As três usam a porta 80 do servidor. Uma porta de servidor separada para cada cliente é desnecessária porque a quádrupla completa distingue seus sockets de conexão. Um processo pode atender muitos desses sockets.

Quando nenhum socket corresponde

Um SYN enviado a uma porta TCP fechada normalmente recebe uma reinicialização, com o indicador RST ativado. Um segmento UDP enviado a uma porta sem receptor normalmente provoca uma mensagem ICMP de “porta inalcançável”. Firewalls, filtragem e limites de resposta podem afetar o que retorna. Em uma sondagem de porta, SYN-ACK é evidência de um serviço TCP em escuta; RST indica recusa. O silêncio, por si só, não permite distinguir filtragem de perda ou de um hospedeiro indisponível.

Principais conclusões

  • A multiplexação combina o tráfego de saída dos sockets; a demultiplexação seleciona um socket de recepção.
  • Números de porta têm 16 bits e pertencem a um protocolo de transporte.
  • Um servidor UDP básico pode receber dados de muitos clientes por um único socket.
  • O TCP distingue sockets de conexão usando os dois endereços IP e as duas portas.
  • Portas TCP e UDP fechadas normalmente produzem respostas diferentes.
2

Mensagens UDP, somas de verificação e escolhas da aplicação

O UDP mantém o serviço de transporte simples: um cabeçalho curto, entrega a um socket e uma soma de verificação. Essa simplicidade é útil quando uma aplicação quer controlar o momento de envio das mensagens, mas deixa a recuperação e o gerenciamento de taxa para a aplicação ou um protocolo acima do UDP. Leia o cabeçalho e acompanhe a soma com transporte circular para a soma de verificação. Depois, avalie uma aplicação por seus prazos e necessidades de entrega, em vez de tratar todos os serviços em tempo real como iguais.

2.1 O cabeçalho UDP e a soma de verificação da internet

O UDP envia cada mensagem independentemente, sem negociação nem estado compartilhado de sequência da conexão. Seu cabeçalho fixo de 8 bytes contém quatro campos, cada um com 16 bits: porta de origem, porta de destino, comprimento e soma de verificação.

Conte os bytes corretos

O comprimento abrange o cabeçalho UDP e seus dados. Ele é de pelo menos 8 bytes. Uma mensagem com 40 bytes de dados tem comprimento UDP 48. Com um cabeçalho IPv4 de 20 bytes e sem opções IP, o datagrama IP completo tem 68 bytes. O cabeçalho IP está fora do comprimento UDP.

A soma de verificação detecta alguns erros de bits no cabeçalho UDP e nos dados. Ela também abrange um pseudocabeçalho construído com informações de endereçamento IP, o número do protocolo e o comprimento UDP. Esses valores ajudam a detectar um segmento entregue com informações de endereçamento incorretas. O pseudocabeçalho é uma entrada do cálculo; ele não é uma parte adicional transmitida do cabeçalho UDP.

Some com transporte circular de vai um

Trate os dados de entrada do cálculo como palavras de 16 bits. Defina o campo da soma de verificação como zero durante o cálculo. Some as palavras, trazendo qualquer vai um além do 16º bit de volta à extremidade menos significativa. Essa é a soma em complemento de um. Por fim, inverta todos os 16 bits da soma após o transporte circular para obter a soma de verificação. Se a contagem de bytes for ímpar, acrescente um byte zero apenas para o cálculo.

Para três palavras ilustrativas, use hexadecimal para tornar o vai um visível:

  1. Some A35C e 69C3 para obter 10D1F. O 1 inicial é um vai um além dos 16 bits.
  2. Traga-o de volta: 0D1F + 1 = 0D20.
  3. Some 1234: 0D20 + 1234 = 1F54.
  4. Complemente cada bit: FFFF − 1F54 = E0AB.

A soma de verificação é E0AB. Simplesmente descartar o vai um inicial produziria a soma errada. Em binário, a soma final é 0001 1111 0101 0100 e seu complemento é 1110 0000 1010 1011.

Confira no receptor

O receptor repete a soma com transporte circular sobre o pseudocabeçalho e o segmento recebido, agora incluindo o campo da soma de verificação. Um segmento inalterado produz apenas uns, FFFF. Aqui, 1F54 + E0AB = FFFF. Um resultado que contém um bit zero indica um erro. O UDP descarta silenciosamente um segmento cuja soma de verificação fornecida e diferente de zero falha; ele não envia uma substituição nem corrige os dados.

Um resultado composto apenas de uns significa que a verificação passou, não que todos os erros possíveis foram excluídos. Alterações compensatórias em palavras diferentes podem deixar a soma inalterada. A soma de verificação detecta erros; ela não localiza os bits incorretos nem os corrige.

Por que os hospedeiros das extremidades verificam novamente

Uma verificação de enlace protege um enlace específico. Alguns enlaces podem não ter essa verificação, e também pode ocorrer corrupção dentro dos equipamentos entre enlaces. Uma verificação fim a fim testa o que chegou ao hospedeiro de destino. Isso ilustra o princípio fim a fim: uma propriedade necessária em todo o caminho deve ser verificada nas extremidades.

Sobre IPv4, um campo de soma de verificação UDP igual a zero indica que o remetente omitiu a soma de verificação. Uma soma calculada igual a zero é transmitida com todos os bits iguais a um para preservar essa distinção. O IPv6 normalmente exige uma soma de verificação UDP, com exceções para túneis especificadas de forma restrita. O TCP também usa uma soma de verificação da internet com pseudocabeçalho e exige sua soma de verificação.

Principais conclusões

  • O comprimento UDP inclui seu cabeçalho de 8 bytes e exclui o cabeçalho IP.
  • Traga cada vai um de volta aos 16 bits menos significativos e depois complemente a soma.
  • Uma soma de verificação composta apenas de uns no receptor significa que a verificação passou.
  • O UDP descarta um segmento cuja soma de verificação diferente de zero falhou, sem retransmiti-lo.
  • A soma de verificação pode deixar de detectar erros e não pode corrigi-los.
  • Um campo de soma de verificação igual a zero sobre IPv4 significa que a soma de verificação UDP foi omitida.

2.2 Escolha o UDP conforme as necessidades da aplicação

O serviço simples do UDP dá à aplicação controle sobre suas mensagens. Não há negociação de transporte antes da primeira mensagem, nem fila de retransmissão UDP ou mecanismo UDP que retenha dados posteriores por causa de uma mensagem anterior ausente. A aplicação decide o que enviar e quais perdas importam.

Ajuste a recuperação ao tempo útil de chegada

Considere áudio de voz enviado em partes de 20 ms: 50 mensagens por segundo. Uma parte ausente deve ser reproduzida em 60 ms, mas detectar a perda e obter outra cópia leva cerca de 150 ms. Essa parte recuperada chegaria tarde demais. Uma aplicação de voz pode reproduzir as partes posteriores no momento certo e ocultar o som ausente, por exemplo, suavizando a lacuna.

A quantidade decisiva é o tempo restante antes da reprodução, não a duração de 20 ms de uma parte. Se a recuperação puder terminar antes do prazo, a retransmissão pode ajudar. O TCP deve entregar bytes em ordem, portanto um byte anterior ausente também pode atrasar a entrega de bytes posteriores já recebidos. Essa espera costuma ser chamada de bloqueio de início de fila dentro do fluxo.

Uma transferência de arquivo tem outra prioridade: cada byte deve chegar corretamente, e esperar pela recuperação é aceitável. O TCP já fornece esse serviço. Usar UDP transferiria o trabalho de detectar perdas, solicitar dados de substituição e restaurar a ordem para a aplicação ou outro protocolo.

O que o cabeçalho pequeno oferece

O cabeçalho do UDP tem 8 bytes; o do TCP tem pelo menos 20. Um servidor UDP pode receber mensagens de muitos clientes sem estabelecer conexões de transporte individuais. Ainda existem buffers de socket e recursos de aplicação, portanto “não orientado a conexão” não significa que o hospedeiro não armazene nada.

Usos comuns do UDP incluem consultas DNS comuns na porta 53, sincronização de tempo NTP na 123, gerenciamento SNMP na 161 e atribuição de endereços DHCP nas 67 e 68. Chamadas e jogos frequentemente escolhem UDP para que as mensagens cheguem no momento adequado. O vídeo sob demanda geralmente usa HTTP sobre TCP ou QUIC, portanto “vídeo usa UDP” é uma regra ampla demais.

O QUIC mostra quanto um protocolo pode acrescentar acima do UDP: fluxos confiáveis, controle de congestionamento e segurança TLS 1.3. Ele foi padronizado em 2021 e geralmente usa a porta UDP 443; o HTTP/3 é executado sobre QUIC. O próprio UDP não adquiriu esses serviços.

Mantenha as mensagens pequenas o suficiente

O UDP preserva os limites das mensagens. Uma operação de recebimento lê uma mensagem, não um fluxo de bytes montado a partir de vários envios. A aplicação deve fornecer um buffer de leitura grande o suficiente; um buffer menor pode truncar a mensagem.

Para IPv4 com um cabeçalho IP de 20 bytes, a carga útil máxima teórica é 65.535 − 20 − 8 = 65.507 bytes. Enviar perto desse limite pode exigir fragmentação IP. Em um caminho que suporta datagramas IPv4 de 1.500 bytes, cabem 1.500 − 20 − 8 = 1.472 bytes de dados sem fragmentação quando não há opções IP. Outros caminhos e cabeçalhos podem reduzir esse valor.

Considere os controles ausentes

O UDP não tem controle de fluxo integrado para proteger um receptor lento. Se seu buffer de socket ficar cheio, as mensagens recebidas poderão ser descartadas. Ele também não tem controle de congestionamento integrado. Aplicações UDP responsáveis fornecem controle de taxa adequado para não sobrecarregar um caminho compartilhado. Algumas redes filtram UDP, portanto as aplicações podem precisar de uma alternativa.

Omitir o estabelecimento de conexão e a recuperação pode reduzir o atraso, mas o UDP não aumenta a capacidade de um enlace nem evita perdas no IP. Avalie o protocolo completo da aplicação: o trabalho que ele acrescenta acima do UDP pode importar mais que o tamanho do cabeçalho.

Principais conclusões

  • Escolha a recuperação conforme a possibilidade de ainda usar os dados recuperados.
  • O UDP preserva mensagens, mas não oferece recuperação de perdas nem ordenação.
  • Aplicações acima do UDP devem lidar com a capacidade do receptor e a carga da rede.
  • O QUIC fornece fluxos confiáveis e seguros acima do UDP.
3

Construa a confiabilidade e mantenha dados em trânsito

Um protocolo confiável precisa de evidências sobre o que chegou e de um plano para quando essas evidências estiverem ausentes. Comece com um canal que inverte bits, depois acrescente perda de pacotes e respostas atrasadas. Quando a correção estiver assegurada, calcule quanto tempo o protocolo pare e espere deixa um remetente ocioso. Janelas deslizantes permitem que vários pacotes trafeguem ao mesmo tempo; Go-back-N e repetição seletiva fazem escolhas diferentes quanto a reconhecimentos, armazenamento em buffer e retransmissão.

3.1 Somas de verificação, respostas e detecção de duplicatas

Um protocolo de transferência confiável de dados fornece à aplicação receptora dados corretos, em ordem e sem duplicatas, mesmo quando o canal subjacente danifica pacotes. Construa o projeto perguntando o que pode dar errado em cada etapa. Nesses protocolos, os dados da aplicação trafegam em uma direção e as respostas de controle retornam na direção oposta.

Descreva o comportamento com estados

Uma máquina de estados finitos (FSM) registra o estado atual do remetente ou do receptor. Cada transição tem um evento que a dispara e as ações a executar. Um estado como “esperando por ACK 0” registra qual evidência o remetente precisa antes de prosseguir. Na notação de FSM, Λ indica ausência de evento ou de ação; uma seta tracejada de entrada marca o estado inicial.

Com um canal perfeitamente confiável, a versão 1.0 precisa apenas de envio e entrega. O remetente empacota os dados, o receptor os extrai e nenhum dos dois precisa de resposta. A inclusão de erros de bits muda o projeto.

Detecte um erro e solicite outra cópia

A versão 2.0 usa três mecanismos:

  • Uma soma de verificação permite que o receptor verifique se um pacote foi corrompido.
  • Um ACK informa o recebimento correto; um NAK informa que os dados foram danificados.
  • A retransmissão envia outra cópia quando necessário.

Juntos, eles formam a solicitação automática de retransmissão (ARQ). O remetente envia um pacote e espera uma resposta antes de enviar o próximo: pare e espere. Ele mantém uma cópia do pacote atual porque pode precisar reenviá-lo.

Mas os pacotes de resposta atravessam o mesmo canal não confiável. Um ACK danificado deixa o remetente em dúvida: o receptor aceitou os dados ou é necessária outra cópia? Reenviar só é seguro se o receptor puder distinguir uma cópia de substituição de novos dados da aplicação. Uma soma de verificação sozinha não identifica duplicatas; duas cópias válidas têm o mesmo conteúdo válido.

Dê uma identidade a cada pacote pendente

A versão 2.1 acrescenta um número de sequência. Com apenas um pacote pendente, um número de um bit alternando 0, 1, 0, 1 é suficiente nesse modelo de canal com pare e espere. O receptor lembra qual número espera. Ele entrega uma vez um pacote válido com esse número e depois muda o número esperado. Um pacote com o número anterior é uma duplicata: reconheça-o novamente, mas não entregue seus dados outra vez.

O remetente mantém o número atual durante a retransmissão. Ele só passa ao outro número após receber o ACK correspondente e legível. Nesse projeto que trata apenas erros, uma resposta corrompida ou um NAK causa uma retransmissão.

Substitua NAKs por ACKs repetidos

A versão 2.2 elimina os NAKs. O receptor responde a um pacote danificado ou duplicado com um ACK para o último pacote que aceitou. Portanto, o ACK precisa de um número.

Suponha que o pacote 0 contenha “A” e chegue corretamente. O receptor entrega “A” e envia ACK 0. O pacote 1, contendo “B”, é corrompido, então o receptor repete ACK 0. O remetente está esperando por ACK 1; esse ACK duplicado sinaliza que ele deve reenviar o pacote 1. A cópia de substituição válida é entregue como “B” e reconhecida com ACK 1.

Descartar dados duplicados e reconhecer novamente o pacote duplicado são ações diferentes. Se o receptor ignorasse silenciosamente uma cópia de substituição cujo ACK anterior ficou ilegível, o remetente nunca saberia que a entrega foi bem-sucedida. O TCP também evita NAKs, embora sua numeração de bytes e suas regras de retransmissão rápida sejam diferentes das desse protocolo simples.

Principais conclusões

  • Uma soma de verificação detecta corrupção, mas não consegue identificar uma duplicata por si só.
  • O ARQ combina detecção de erros, resposta do receptor e retransmissão.
  • O pare e espere mantém um pacote de dados pendente.
  • Números de sequência alternados permitem que o receptor entregue cada pacote uma vez.
  • Uma duplicata é reconhecida novamente sem que seus dados sejam entregues outra vez.

3.2 Temporizadores e eficiência do pare e espere

Uma resposta não ajuda se nunca chegar. Quando o canal pode perder um pacote de dados ou um ACK, o remetente precisa de uma forma de prosseguir sem receber uma mensagem. A versão 3.0 acrescenta um temporizador de contagem regressiva ao protocolo do bit alternante.

Lide com o silêncio sem entregar duas vezes

O remetente inicia o temporizador sempre que envia o pacote atual, inclusive uma cópia de substituição. Um ACK correspondente e intacto para o temporizador e permite o envio do próximo pacote. Um ACK corrompido ou com número errado é ignorado. Se o tempo do temporizador expirar primeiro, o remetente reenvia o mesmo pacote e reinicia o temporizador.

Quando um pacote de dados é perdido, o receptor não tem nada a reconhecer; a expiração do tempo limite provoca o envio da cópia de substituição. Quando um ACK é perdido, o receptor já entregou os dados. Quando a cópia de substituição chega, o número de sequência identifica uma duplicata. O receptor descarta seus dados e envia o ACK novamente.

Uma expiração prematura do tempo limite ocorre quando o pacote original ou o ACK apenas demorou. A cópia de substituição desperdiça esforço de transmissão, mas a detecção de duplicatas preserva a entrega correta. Um tempo limite útil deve comportar o tempo de ida e volta esperado e o processamento do receptor. Curto demais, produz retransmissões desnecessárias; longo demais, atrasa a recuperação de uma perda real.

Separe o tempo de transmissão do tempo de espera

Considere o comprimento do pacote como L bits e a taxa do enlace como R bit/s. O remetente precisa de L/R segundos para colocar um pacote no enlace. Ignorando o tempo de transmissão e processamento do ACK, um ciclo de pare e espere leva RTT+L/R. A fração do tempo dedicada ao envio é

U=L/RRTT+L/R.

Para pacotes de 1.500 bytes em um enlace de 1 Gbit/s, primeiro converta bytes em bits:

L=1.500×8=12.000 bits.

Então L/R=12 μs=0,012 ms. Com um RTT de 40 ms,

U=0,01240,012≈0,000300.

O remetente fica ativo cerca de 0,03% do tempo. A vazão é de cerca de 12.000 bits a cada 0,040012 s, ou 300 kbit/s. Mesmo um enlace muito rápido transporta pouco tráfego útil porque o remetente passa quase todo o ciclo esperando.

Transmita os pacotes em pipeline

A transmissão em pipeline permite que vários pacotes não reconhecidos estejam em trânsito. Se até N pacotes couberem na janela de envio, a utilização ideal passa a ser

U=min⁡(1,N(L/R)RTT+L/R).

No mesmo enlace, 1.000 pacotes resultam em uma utilização de cerca de 0,30. Para mantê-lo totalmente ocupado, são necessários pelo menos 40,012/0,012≈3.334,33 tempos de transmissão de pacote, portanto arredonde para cima para 3.335 pacotes. Arredondar para baixo deixa um pequeno intervalo ocioso antes do primeiro ACK.

Um pipeline maior precisa de números de sequência suficientes para distinguir seus pacotes e de espaço em buffer suficiente para reter dados não reconhecidos. O receptor também pode precisar de armazenamento em buffer, dependendo do protocolo. Go-back-N e repetição seletiva resolvem essas escolhas de projeto de maneiras diferentes.

Aumentar apenas a taxa do enlace reduz o já breve tempo de transmissão. Para um tamanho de pacote e RTT fixos, isso reduz a utilização do pare e espere. Mais dados em trânsito permitem que o remetente use a capacidade disponível.

Principais conclusões

  • Um temporizador permite prosseguir quando dados ou respostas são perdidos.
  • Uma expiração prematura do tempo limite desperdiça capacidade, mas números de sequência evitam a entrega duplicada.
  • Use bits para o comprimento do pacote quando a taxa do enlace estiver em bit/s.
  • A utilização do pare e espere é o tempo de transmissão dividido pelo tempo total do ciclo.
  • A transmissão em pipeline melhora a utilização ao permitir vários pacotes pendentes.
  • Arredonde para cima o tamanho necessário da janela em pacotes inteiros e limite a utilização a 1.

3.3 Janelas Go-back-N e ACKs cumulativos

O Go-back-N (GBN) permite até N pacotes enviados, mas não reconhecidos. A janela deslizante do remetente avança quando os reconhecimentos confirmam a entrega. O receptor permanece simples: ele aceita apenas o próximo pacote em ordem.

Mantenha separadas as faixas do remetente

A variável base identifica o pacote não reconhecido mais antigo. nextseqnum identifica o próximo pacote novo a enviar. Antes do retorno cíclico dos números de sequência, as faixas são:

  • Abaixo de base: já reconhecidos.
  • De base até nextseqnum − 1: enviados, aguardando reconhecimento.
  • De nextseqnum até base + N − 1: disponíveis para novos dados.
  • Em base + N ou acima: bloqueados até a janela avançar.

Para base = 10, nextseqnum = 13 e N=5, os pacotes de 10 a 12 estão pendentes. Os pacotes 13 e 14 podem ser enviados. O pacote 15 não pode. Uma janela limita os dados pendentes, não o número total de pacotes de uma transferência.

Reconhecimentos cumulativos avançam a base

No GBN, ACK n confirma todos os pacotes até n, inclusive. Ele move base para n+1. Portanto, um ACK cumulativo posterior pode cobrir ACKs anteriores que foram perdidos. Essa convenção de numeração identifica o último pacote aceito; a convenção de ACK do TCP identifica o próximo byte esperado.

O GBN mantém um temporizador para o pacote pendente mais antigo. O envio do primeiro pacote pendente o inicia. Um ACK que avança a base o reinicia se ainda houver dados pendentes; o reconhecimento de todos os dados o para. Quando o tempo do temporizador expira, o remetente retransmite todos os pacotes enviados que continuam não reconhecidos. Essa quantidade pode ser menor que a janela máxima N.

Acompanhe um pacote ausente

Use uma janela de quatro e envie os pacotes 0, 1, 2 e 3. O pacote 2 é perdido. O receptor entrega 0 e 1 e envia ACK 0 e ACK 1. O pacote 3 chega após a lacuna: o receptor o descarta e repete ACK 1.

Os dois primeiros ACKs abrem espaço para os pacotes 4 e 5. Eles também chegam após o pacote 2 ausente, portanto ambos são descartados e recebem ACK 1 como resposta. A base do remetente permanece em 2. Quando o tempo limite expira, ele retransmite 2, 3, 4 e 5. Agora eles chegam em ordem e todos podem ser entregues.

As cópias de 3, 4 e 5 estavam intactas na primeira vez. O GBN as reenvia porque seu receptor optou por não armazenar pacotes fora de ordem em buffer. Isso economiza estado no receptor ao custo de tráfego extra após uma perda.

Deixe um número de sequência fora da janela

Um campo de k bits fornece 2k números de pacote, reutilizados ciclicamente. O GBN exige

N≤2k−1.

Com três bits, os números vão de 0 a 7 e a maior janela do remetente é sete. Se todos os oito fossem permitidos, o receptor poderia aceitar de 0 a 7 e voltar a esperar 0. Se todos os ACKs fossem perdidos, um 0 antigo retransmitido pareceria novo. Com apenas os pacotes de 0 a 6 enviados, o receptor espera 7 e pode reconhecer o 0 retransmitido como antigo. A aritmética da janela perto do retorno cíclico segue a ordem cíclica, não o valor numérico comum.

Principais conclusões

  • No GBN, ACK n confirma todos os pacotes até n, inclusive.
  • O receptor descarta pacotes que chegam após uma lacuna.
  • Um temporizador acompanha o pacote pendente mais antigo.
  • A expiração de um tempo limite reenvia os pacotes enviados e não reconhecidos.
  • A maior janela GBN com números de k bits é 2^k − 1.

3.4 Repetição seletiva e reutilização de números de sequência

A repetição seletiva (SR) guarda pacotes recebidos corretamente mesmo quando pacotes anteriores estão ausentes. Cada pacote válido recebe seu próprio ACK. O remetente pode então substituir apenas um pacote cujo tempo do temporizador expire.

Acompanhe cada pacote separadamente

A janela do remetente começa em send_base, o pacote não reconhecido mais antigo, e contém N números de sequência permitidos. Cada pacote pendente tem um temporizador lógico. Um ACK marca esse pacote específico como recebido. Um ACK posterior à base não desloca a janela por si só: a base permanece na primeira lacuna. Quando essa lacuna é reconhecida, a base salta sobre quaisquer pacotes seguintes já reconhecidos.

A janela do receptor começa em rcv_base, o próximo pacote necessário para a entrega. Um pacote válido dentro da janela é reconhecido. Dados fora de ordem são armazenados em buffer. Quando o pacote da base chega, o receptor o entrega e também todos os pacotes consecutivos armazenados após ele, parando na próxima lacuna.

Um pacote na janela imediatamente anterior é uma duplicata antiga. O receptor o reconhece novamente sem entregá-lo. Essa regra é essencial quando o ACK original foi perdido: o remetente ainda pode estar esperando, mesmo que o receptor já tenha avançado.

Recupere uma perda

Use N=4 e suponha que o pacote 2 seja perdido depois que o remetente envia os pacotes de 0 a 3. O receptor entrega e reconhece 0 e 1, depois armazena 3 em buffer e o reconhece. Os dois primeiros ACKs permitem que o remetente transmita 4 e 5. Ambos são armazenados em buffer e reconhecidos individualmente, mas send_base permanece em 2.

Quando o tempo do temporizador do pacote 2 expira, apenas o 2 é reenviado. Sua chegada permite que o receptor entregue 2, 3, 4 e 5 juntos e mova rcv_base para 6. Quando ACK 2 chega ao remetente, sua base também avança para 6, passando pelos pacotes de 3 a 5, cujos ACKs ele já possui.

Por que a janela ocupa no máximo metade do espaço de números

O receptor pode estar à frente do remetente porque os ACKs são atrasados ou perdidos. Os novos números aceitáveis não devem se sobrepor a números que ainda possam ser retransmitidos como pacotes antigos.

Com números de dois bits de 0 a 3 e uma janela de três, suponha que o receptor aceite 0, 1 e 2. Sua nova janela é {3, 0, 1}. Se todos os ACKs desaparecerem, um 0 antigo retransmitido caberá nessa janela e parecerá novo. O receptor não consegue distingui-lo de um 0 realmente novo enviado após a perda de um 3.

Para janelas de remetente e receptor de mesmo tamanho, o limite seguro é

N≤2k−1.

Portanto, uma numeração de três bits permite janelas SR de até quatro, enquanto o GBN permite sete.

CaracterísticaGo-back-NRepetição seletiva
Significado do ACKTodos os pacotes até nApenas o pacote n
Estado dos temporizadoresUm temporizador para o pacote mais antigoUm temporizador lógico por pacote
Ação do receptor diante de pacote fora de ordemDescartarArmazenar em buffer e enviar ACK
Recuperação após expiração do tempo limiteTodos os pacotes pendentesO pacote cujo tempo limite expirou
Distinga uma cópia antiga após o retorno cíclico

Os limites de janela tratam das janelas atuais, mas uma rede real também pode manter uma cópia antiga em trânsito até que os números sejam reutilizados. Um tempo máximo de vida do pacote limita por quanto tempo essas cópias podem sobreviver. O TCP chama isso de tempo máximo de vida de um segmento (MSL). Em taxas altas, o TCP pode reutilizar rapidamente seu espaço de sequência de 32 bits, portanto a proteção contra a reutilização de números de sequência (PAWS) baseada em marcas de tempo ajuda a rejeitar dados antigos.

Principais conclusões

  • A SR reconhece e temporiza cada pacote pendente individualmente.
  • Pacotes fora de ordem são armazenados em buffer até que a lacuna de entrega seja preenchida.
  • Um ACK posterior marca o recebimento, mas a base do remetente permanece no primeiro pacote não reconhecido.
  • Duplicatas antigas devem ser reconhecidas novamente.
  • Janelas SR de mesmo tamanho podem ocupar no máximo metade do espaço de números de sequência.
  • Cópias muito atrasadas também exigem proteção quando os números são reutilizados.
4

Segmentos TCP, números de bytes e conexões

O TCP mantém um fluxo de bytes separado em cada direção de uma conexão. Seu cabeçalho associa esses fluxos a portas, identifica seus bytes e transporta reconhecimentos e sinais de controle. Leia o formato do segmento e acompanhe os números durante a transferência de dados, o estabelecimento e o fechamento. Manter as duas direções separadas facilita muito o entendimento dos reconhecimentos incorporados aos dados, dos fechamentos parciais e dos números de sequência adicionais usados por SYN e FIN.

4.1 O fluxo de bytes e o cabeçalho de segmento TCP

Uma conexão TCP é um estado mantido em dois hospedeiros das extremidades: buffers, contadores de bytes e outras variáveis criadas durante o estabelecimento. Ela é ponto a ponto, entre duas extremidades, e full-duplex, permitindo que ambas enviem dados ao mesmo tempo. Roteadores comuns encaminham seus datagramas IP sem manter o estado TCP das extremidades.

Bytes não têm limites de mensagem

O TCP preserva a ordem dos bytes, mas não os limites das escritas da aplicação. Três escritas de 100 bytes podem chegar à aplicação em uma única leitura de 300 bytes ou em leituras de 50 e 250 bytes. Uma aplicação que troca mensagens deve fornecer sua delimitação, por exemplo, com um campo de comprimento ou um delimitador. Uma leitura curta não estabelece que uma mensagem completa chegou.

As escritas da aplicação entram em um buffer de envio. O TCP escolhe partes para transmitir, retendo dados não reconhecidos para uma possível retransmissão. Os dados recebidos entram em um buffer de recepção até que a aplicação receptora os leia.

Dimensione os dados separadamente dos cabeçalhos

O tamanho máximo de segmento (MSS) limita os dados de aplicação em um segmento. Ele exclui os cabeçalhos TCP e IP. Para um caminho que suporta datagramas IP de 1.500 bytes com cabeçalhos IPv4 de 20 bytes e TCP de 20 bytes,

MSS=1.500−20−20=1.460 bytes.

As opções ocupam mais espaço, portanto o remetente deve considerar os comprimentos reais dos cabeçalhos. Cada extremidade anuncia o MSS que pode receber durante a negociação; limites do caminho podem restringir ainda mais o que pode ser enviado. Sem uma opção MSS, os valores padrão presumidos são 536 bytes de dados para IPv4 e 1.220 para IPv6.

Leia os campos do cabeçalho
CampoTamanhoFinalidade
Portas de origem e destino16 bits cadaIdentificar as extremidades das aplicações
Número de sequência32 bitsIdentificar o primeiro byte de dados
Número de reconhecimento32 bitsIndicar o próximo byte esperado
Deslocamento dos dados4 bitsInformar o comprimento do cabeçalho em palavras de 32 bits
Janela de recepção16 bitsAnunciar a capacidade do receptor
Soma de verificação16 bitsDetectar erros com um pseudocabeçalho
Ponteiro de dados urgentes16 bitsLocalizar dados urgentes quando URG está ativado

O cabeçalho mínimo tem cinco palavras de 32 bits, ou 20 bytes. Um deslocamento dos dados de 8 significa 32 bytes, incluindo 12 bytes além do cabeçalho fixo. O deslocamento máximo é 15: 60 bytes no total, permitindo até 40 bytes de opções.

Interprete indicadores e opções

SYN sincroniza números de sequência durante a abertura. FIN fecha uma direção de envio. RST aborta ou recusa uma conexão. ACK torna válido o campo de reconhecimento. PSH solicita a entrega imediata à aplicação; ele não cria um limite de mensagem. URG torna o ponteiro de dados urgentes válido, embora se recomende que novas aplicações evitem esse mecanismo. ECE e CWR transportam sinais de notificação explícita de congestionamento.

Opções comuns incluem MSS, fator de escala da janela, marcas de tempo e reconhecimento seletivo (SACK). O fator de escala amplia a faixa da janela de recepção. As marcas de tempo ajudam a medir o RTT e a rejeitar segmentos antigos. O SACK descreve blocos recebidos após uma lacuna.

Sem opções, TCP mais IPv4 acrescentam 40 bytes. Um segmento completo com 1.460 bytes de dados ocupa um datagrama IP de 1.500 bytes, com cerca de 97,3% de dados de aplicação. Um ACK puro não tem dados, mas ainda ocupa esses 40 bytes de cabeçalho.

Principais conclusões

  • O TCP é um fluxo de bytes full-duplex e ponto a ponto.
  • As aplicações fornecem sua própria delimitação de mensagens.
  • O MSS conta apenas dados de aplicação; o deslocamento dos dados conta palavras de cabeçalho de 32 bits.
  • SYN, FIN e RST têm funções diferentes no gerenciamento da conexão.
  • As opções estendem o TCP sem alterar os campos fixos do cabeçalho.

4.2 Números de sequência e o próximo byte esperado

Os números de sequência TCP contam bytes, não segmentos. O número de sequência de um segmento indica seu primeiro byte de dados. Seu número de reconhecimento descreve a direção oposta: o próximo byte que esse remetente espera receber.

Divida um fluxo em segmentos

Um número de sequência inicial (ISN) de 3.000 é usado pelo SYN. Portanto, o primeiro byte de dados é 3.001. Um arquivo de 10.000 bytes com MSS de 1.460 precisa de seis segmentos completos de dados e um segmento menor:

SegmentoPrimeiro byteBytes de dados
13.0011.460
24.4611.460
35.9211.460
47.3811.460
58.8411.460
610.3011.460
711.7611.240

Cada próximo número de sequência soma o comprimento dos dados do segmento anterior. O byte final é 13.000, portanto o recebimento bem-sucedido de todo o arquivo produz o ACK cumulativo 13.001.

Reconheça um prefixo contínuo

ACK n confirma todos os bytes até n−1, inclusive. Ele não confirma o byte n. Se o receptor possui os bytes até 4.460, ele espera 4.461. Um segmento que começa em 5.921 deixa uma lacuna. Um receptor que armazena esse segmento em buffer ainda envia ACK 4.461 porque seu prefixo contínuo não aumentou.

É por isso que o reconhecimento não pode ser simplesmente o maior número de sequência observado. Bytes posteriores mostram que algo chegou após a lacuna; eles não a preenchem. Quando a faixa ausente chega, um ACK cumulativo pode saltar sobre dados já armazenados em buffer.

Acompanhe as duas direções independentemente

Suponha que o próximo byte de um cliente seja 1.000 e o próximo byte de um servidor seja 5.000. O cliente envia 200 bytes de dados com sequência 1.000 e reconhecimento 5.000. A resposta do servidor contém 1.200 bytes com sequência 5.000 e reconhecimento 1.200. O próximo ACK puro do cliente tem sequência 1.200 e reconhecimento 6.200.

O servidor não derivou seu próprio número de sequência do comprimento da requisição. Cada direção tem sua própria numeração. Transportar um ACK com dados de saída é o reconhecimento incorporado aos dados. Um ACK puro não consome espaço de sequência; SYN e FIN consomem um número cada, mesmo sem dados.

Gerencie valores iniciais e retorno cíclico

As extremidades escolhem um ISN ao abrir uma conexão. Um relógio e uma função pseudoaleatória com chave dos endereços e das portas da conexão ajudam a separar uma nova conexão de segmentos antigos atrasados e dificultam que alguém de fora adivinhe números válidos. Começar toda conexão em zero enfraqueceria ambas as proteções.

Os campos têm 32 bits, portanto a numeração retorna ciclicamente módulo 232, cerca de 4,3 bilhões de bytes. A 1 Gbit/s, percorrer esse espaço leva cerca de 34 s; a 10 Gbit/s, cerca de 3,4 s. O PAWS baseado em marcas de tempo fornece uma verificação adicional de segmentos antigos em caminhos rápidos.

Para aritmética comum longe do retorno cíclico, o próximo byte após um segmento de dados é seu número de sequência mais o comprimento dos dados. Quando SYN ou FIN está presente, inclua o número adicional que esse indicador de controle consome. Aplique o cálculo separadamente a cada direção.

Principais conclusões

  • O número de sequência de um segmento identifica seu primeiro byte.
  • ACK n confirma os bytes até n − 1 e indica o próximo byte esperado.
  • Uma lacuna mantém o ACK cumulativo fixo mesmo quando dados posteriores são armazenados em buffer.
  • Cada direção tem numeração independente.
  • Dados, SYN e FIN consomem espaço de sequência; ACKs puros não.
  • Os números de sequência retornam ciclicamente módulo 2^32.

4.3 Abertura, fechamento parcial e liberação de uma conexão

O estabelecimento TCP permite que ambas as extremidades anunciem um número de sequência inicial e saibam que a outra extremidade o recebeu. O fechamento posterior libera cada direção separadamente. Essas trocas de controle usam o mesmo espaço de sequência dos dados.

Acompanhe o estabelecimento de conexão em três etapas
  1. O cliente cria o estado da conexão, envia SYN com ISN 7.000 e entra em SYN_SENT.
  2. O servidor responde com SYN-ACK, sequência 21.000 e reconhecimento 7.001. Ele fica em SYN_RCVD enquanto espera a confirmação.
  3. O cliente registra o número do servidor e envia ACK com sequência 7.001 e reconhecimento 21.001. O cliente entra em ESTABLISHED; o servidor faz o mesmo quando esse ACK chega.

Cada SYN consome um número. O terceiro segmento já pode transportar dados de aplicação. A negociação comum custa uma ida e volta antes que o cliente possa enviar esses primeiros dados. Uma troca de duas mensagens não informaria ao servidor que o cliente recebeu seu ISN e poderia levá-lo a aceitar um SYN antigo atrasado como uma nova requisição.

Na interface de sockets, connect inicia uma abertura ativa. Um servidor escuta requisições, e accept retorna um novo socket de conexão após o estabelecimento. O socket de escuta permanece disponível para outros clientes.

Feche cada direção

Uma extremidade envia FIN quando não tem mais bytes a enviar. A outra extremidade reconhece esse FIN avançando seu ACK para uma unidade além dele. Ela ainda pode enviar seus próprios bytes restantes: isso é um fechamento parcial. Seu FIN posterior fecha a outra direção e também precisa de um ACK. O fechamento geralmente usa quatro segmentos, embora um FIN e um ACK possam ser combinados.

Para um cliente que fecha primeiro, a sequência usual de estados é ESTABLISHED → FIN_WAIT_1 após enviar FIN → FIN_WAIT_2 quando esse FIN é reconhecido → TIME_WAIT após receber e reconhecer o FIN da outra extremidade → CLOSED. A outra extremidade passa por CLOSE_WAIT enquanto sua aplicação termina, depois por LAST_ACK após enviar seu próprio FIN e, por fim, por CLOSED ao receber o ACK.

Permita a recuperação do último ACK

No percurso usual de fechamento ativo, TIME_WAIT dura o dobro do tempo máximo de vida de um segmento. Se o ACK final desaparecer, a outra extremidade poderá reenviar seu FIN e receber outro ACK. A espera também dá tempo para que segmentos antigos expirem antes da reutilização da quádrupla da conexão. O valor de MSL de dois minutos do padrão resulta em quatro minutos; as implementações podem usar durações diferentes, sendo 60 segundos um valor conhecido no Linux.

Um RST é diferente de FIN: ele aborta a conexão ou recusa uma requisição. Um SYN para uma porta fechada normalmente recebe RST. SYN-ACK indica que há um serviço em escuta; o silêncio pode resultar de filtragem, perda ou destino indisponível.

Proteja negociações incompletas

Uma inundação de SYN envia muitas requisições de abertura sem concluí-las. Um servidor que reserva recursos para cada conexão semiaberta pode esgotar seu estado disponível. Cookies SYN adiam a alocação desse estado por conexão. O servidor codifica informações verificáveis da conexão no ISN escolhido usando um segredo e uma entrada dependente do tempo. Um ACK final válido retorna o cookie em seu número de reconhecimento, permitindo que o servidor o verifique e crie o estado. O servidor ainda tem um socket de escuta e recursos compartilhados; ele evita armazenar uma conexão incompleta individual para cada SYN.

Principais conclusões

  • A negociação confirma os dois números de sequência iniciais.
  • SYN e FIN consomem um número de sequência cada.
  • Um FIN fecha uma direção; a outra extremidade pode continuar enviando.
  • TIME_WAIT permite a recuperação do ACK final e a expiração de segmentos antigos.
  • RST aborta ou recusa uma conexão.
  • Cookies SYN reduzem o estado por requisição antes da conclusão da negociação.
5

Recuperação do TCP e o ritmo do receptor

Um ACK pode atrasar, um segmento pode desaparecer e a aplicação receptora pode parar de ler. O TCP precisa de respostas distintas a esses eventos. As estimativas de RTT orientam quanto tempo esperar, ACKs duplicados podem revelar uma lacuna antes da expiração do tempo limite, e a janela de recepção informa o espaço disponível em buffer. Acompanhe os bytes pendentes do remetente junto com os bytes armazenados pelo receptor para entender por que uma conexão recuperada ainda pode ter de esperar antes de enviar mais dados.

5.1 Meça o RTT e escolha um tempo limite de retransmissão

O TCP precisa de um tempo limite de retransmissão longo o suficiente para permitir tempos normais de ida e volta, mas curto o suficiente para recuperar-se prontamente de perdas. O RTT varia conforme as filas e os caminhos mudam, portanto o tempo limite acompanha tanto uma estimativa suavizada quanto o tamanho dos desvios recentes.

Obtenha uma amostra sem ambiguidade

O SampleRTT mede o intervalo entre o envio de dados e o recebimento de um ACK que os abrange. Em uma implementação básica, o TCP temporiza um segmento elegível por vez. O algoritmo de Karn exclui dados retransmitidos da amostragem comum de RTT: um ACK pode se referir à cópia original ou à substituta. Marcas de tempo negociadas podem eliminar essa ambiguidade.

A primeira amostra válida R inicializa EstimatedRTT com R e DevRTT com R/2. Antes de existir uma amostra, o tempo limite inicial recomendado é 1 s.

Atualize a variação antes da média

Para uma nova amostra, use o EstimatedRTT anterior para medir o desvio:

DevRTTnew=0,75DevRTTold+0,25∣SampleRTT−EstimatedRTTold∣.

Depois atualize a média móvel exponencialmente ponderada:

EstimatedRTTnew=0,875EstimatedRTTold+0,125SampleRTT.

Os pesos recomendados são β=1/4 e α=1/8. Amostras mais antigas mantêm menos influência após cada atualização. Atualizar a média primeiro mudaria o desvio usado na primeira equação.

Acompanhe uma atualização

Comece com EstimatedRTT = 100 ms e DevRTT = 10 ms; obtenha uma amostra de 120 ms.

  1. Desvio absoluto: ∣120−100∣=20 ms.
  2. Novo DevRTT: 0,75(10)+0,25(20)=12,5 ms.
  3. Novo EstimatedRTT: 0,875(100)+0,125(120)=102,5 ms.
  4. Tempo limite básico: 102,5+4(12,5)=152,5 ms.

A regra básica é

TimeoutInterval=EstimatedRTT+4DevRTT.

O padrão completo usa EstimatedRTT + max(G, 4 DevRTT), em que G é a granularidade do relógio. Quando a margem de quatro desvios excede o intervalo do relógio, a regra básica fornece o mesmo resultado.

O padrão recomenda elevar um valor calculado abaixo de 1 s para 1 s. Implementações reais podem usar um mínimo menor; um mínimo comum no Linux é 200 ms. Os 152,5 ms calculados são, portanto, uma estimativa bruta, não necessariamente o tempo definido no temporizador do hospedeiro. Um limite superior opcional deve ser de pelo menos 60 s.

Aumente o intervalo após a expiração do tempo limite

Quando o tempo do temporizador expira, o TCP reenvia os dados não reconhecidos mais antigos e duplica o tempo limite. Um valor atual de 0,75 s passa a 1,5 s, depois a 3 s após outra expiração. Tentativas imediatas repetidas acrescentariam tráfego a um caminho que já está falhando em entregar respostas.

Um ACK recém-chegado não necessariamente reduz esse tempo limite aumentado. O TCP precisa de uma nova medição válida de RTT para recalcular a estimativa. Sem marcas de tempo, a ambiguidade da retransmissão impede que um ACK dos dados reenviados seja usado como essa nova amostra. Quando novos dados elegíveis forem enviados e reconhecidos, uma nova amostra poderá reduzir o tempo limite calculado.

Principais conclusões

  • O algoritmo de Karn evita amostras ambíguas de dados retransmitidos.
  • Atualize DevRTT usando o EstimatedRTT anterior e depois atualize EstimatedRTT.
  • O tempo limite inclui uma margem de variação e limites da implementação.
  • A expiração do tempo limite duplica o intervalo de retransmissão atual.
  • Uma nova medição válida de RTT permite recalcular um tempo limite que foi aumentado.

5.2 ACKs cumulativos, temporizadores e retransmissão rápida

O TCP combina soma de verificação, números de sequência de bytes, ACKs cumulativos e retransmissão para entregar um fluxo confiável. O remetente deve distinguir um ACK que avança a entrega de um que repete o limite atual.

Acompanhe os eventos do remetente

SendBase é o primeiro byte não reconhecido; NextSeqNum é o próximo número de byte não utilizado. Novos dados da aplicação são enviados com sequência NextSeqNum, que então avança pelo comprimento dos dados. Se nenhum temporizador de retransmissão estiver em execução, o envio de dados pendentes o inicia.

O algoritmo básico recomendado usa um temporizador de retransmissão para o segmento não reconhecido mais antigo. A expiração do tempo limite retransmite esse segmento pendente mais antigo, duplica o intervalo e reinicia o temporizador. Um ACK maior que SendBase avança a base e reinicia o temporizador se ainda houver dados pendentes. Se tudo for reconhecido, o temporizador para. Um ACK duplicado não avança a base.

ACKs perdidos podem deixar de ser um problema

A envia 500 bytes começando em 501. B os recebe e envia ACK 1.001, que é perdido. Se nada mais confirmar esses bytes, o tempo limite de A expira e A os reenvia. B reconhece a duplicata, não entrega dados adicionais e envia ACK 1.001 novamente.

Agora suponha que A também tenha enviado os 500 bytes seguintes, começando em 1.001. Se ACK 1.501 chegar antes da expiração do tempo limite, ele confirma os dois segmentos. A perda de ACK 1.001 não exige retransmissão. Um ACK é cumulativo, portanto o remetente não precisa de um ACK separado que chegue para cada segmento.

Em uma expiração prematura do tempo limite, A reenvia apenas o segmento mais antigo. Se ACKs atrasados confirmarem depois os dois segmentos originais, A não precisará reenviar o segundo. A expiração de um tempo limite é evidência de que a resposta não chegou a tempo, não prova de que todos os segmentos pendentes desapareceram.

Use o momento dos ACKs para informar lacunas

Para dados em ordem sem ACK pendente, o receptor pode atrasar brevemente um ACK, por menos de 0,5 s, para combinar reconhecimentos. Ele deve reconhecer pelo menos um a cada dois segmentos de tamanho completo. Uma segunda chegada em ordem enquanto há um ACK pendente aciona um ACK cumulativo. A chegada fora de ordem após uma lacuna aciona um ACK duplicado imediato; o preenchimento de toda ou parte de uma lacuna também aciona um ACK imediato.

Corrija uma lacuna antes da expiração do tempo limite

Suponha que A envie cinco segmentos de 1.000 bytes começando em 1.001, 2.001, 3.001, 4.001 e 5.001. O segundo é perdido. O ACK de B após o primeiro é 2.001. Cada uma das três chegadas posteriores produz outro ACK 2.001.

Após três ACKs duplicados, A usa a retransmissão rápida para reenviar o segmento que começa em 2.001 sem esperar a expiração do tempo limite. Com os dados posteriores armazenados em buffer, preencher essa lacuna permite que B reconheça 6.001. O primeiro ACK 2.001 é o ACK original; os três seguintes são duplicatas. Uma ou duas duplicatas podem resultar de reordenação comum, o que explica a espera por mais evidências.

O TCP combina ideias dos dois protocolos de janela. Seus ACKs cumulativos e seu temporizador único básico se assemelham ao GBN, mas seu armazenamento em buffer e sua retransmissão direcionada se assemelham à SR. O SACK negociado informa blocos de bytes mantidos após o limite cumulativo para que o remetente possa identificar várias lacunas com mais precisão. O TCP não envia NAK quando uma soma de verificação falha; a lacuna resultante é revelada por ACKs posteriores ou pela expiração do tempo limite.

Principais conclusões

  • Um ACK cumulativo pode cobrir um ACK anterior que foi perdido.
  • O temporizador básico de retransmissão protege os dados não reconhecidos mais antigos.
  • A expiração de um tempo limite não exige retransmitir todos os segmentos pendentes.
  • Três ACKs duplicados acionam a retransmissão rápida no algoritmo básico.
  • O SACK informa blocos recebidos após uma lacuna sem mudar o significado do ACK cumulativo.

5.3 Janelas de recepção e espaço em buffer

O controle de fluxo impede que um remetente TCP cause o transbordamento do buffer do receptor. Ele responde à velocidade com que a aplicação receptora lê os dados. O controle de congestionamento responde à carga na rede; os dois controles protegem recursos diferentes.

Calcule o espaço disponível

Considere RcvBuffer como a capacidade do buffer, LastByteRcvd como o último byte em ordem armazenado e LastByteRead como o último byte lido pela aplicação. Nesse modelo de dados contíguos, o espaço ocupado é LastByteRcvd − LastByteRead. A janela de recepção é

rwnd=RcvBuffer−(LastByteRcvd−LastByteRead).

O receptor anuncia o espaço disponível no campo de janela dos segmentos que envia de volta. O remetente mantém sua contagem de bytes não reconhecidos dentro desse limite:

LastByteSent−LastByteAcked≤rwnd.

Para RcvBuffer = 40.000 bytes, LastByteRcvd = 30.000 e LastByteRead = 18.000, a ocupação é 12.000 e rwnd é 28.000 bytes. ACK 30.001 com essa janela permite bytes não reconhecidos até 58.000. Se o remetente já enviou até 34.000, ele tem 4.000 bytes pendentes e pode enviar mais 24.000. A janela é um limite para todos os bytes pendentes, não uma permissão extra além deles.

Retome após uma janela zero

Quando não resta espaço, o receptor anuncia rwnd = 0 e o remetente interrompe a transmissão normal de novos dados. Quando a aplicação lê, o receptor anuncia o espaço recém-disponível em uma atualização de janela.

Essa atualização pode ser um ACK puro, que não é entregue de forma confiável por si só. Se ele for perdido, o remetente poderá continuar esperando mesmo que haja espaço. Sondagens de janela zero, que geralmente transportam um byte, levam o receptor a retornar sua janela atual. As sondagens são espaçadas em intervalos crescentes; elas não são envios normais em grande volume por uma janela fechada.

Relacione a janela à vazão

Com janela e RTT fixos, a vazão ideal limitada pela janela satisfaz

vaza˜o≤rwndRTT.

Use bytes e segundos para obter bytes/s. Uma janela de 65.535 bytes com RTT de 0,1 s permite cerca de 655.350 bytes/s, ou 5,2 Mbit/s. Uma taxa de enlace maior não consegue eliminar esse limite da janela.

Para preencher um caminho, a janela deve cobrir seu produto largura de banda-atraso. A 1 Gbit/s e 0,1 s, os dados necessários em trânsito são 100 milhões de bits, ou 12,5 MB. Esse é um tamanho de janela necessário para essa taxa ideal, não uma garantia de que ela será alcançada.

Aplique escala ao campo e evite atualizações minúsculas

O campo de 16 bits sozinho não consegue representar uma janela tão grande. Uma opção de fator de escala da janela negociada nos SYNs multiplica os valores de janela posteriores por 2s, com s≤14. A maior escala resulta em um pouco menos de 1 GiB. Um deslocamento de 7 permite no máximo 8.388.480 bytes; um deslocamento de 8 permite 16.776.960, suficiente para o exemplo de 12,5 MB. O fator de escala permanece fixo para sua direção, enquanto o espaço anunciado muda. Os próprios campos de janela dos SYNs não são escalados.

Anunciar cada pequeno espaço de alguns bytes recém-liberados pode causar a síndrome da janela boba: muitos segmentos minúsculos com grande sobrecarga de cabeçalho. Para evitá-la, o receptor espera que haja uma quantidade útil de espaço livre, geralmente um MSS ou metade do buffer, o que for menor. O algoritmo de Nagle trata pequenas escritas do remetente retendo-as enquanto dados anteriores permanecem não reconhecidos ou até que haja dados suficientes para formar um segmento completo.

Principais conclusões

  • O controle de fluxo protege o receptor; o controle de congestionamento protege a rede.
  • Subtraia da capacidade os dados armazenados em buffer que ainda não foram lidos para obter rwnd.
  • Subtraia de rwnd os dados já pendentes antes de enviar mais.
  • Sondagens de janela zero permitem a recuperação após a perda de uma atualização de reabertura.
  • A janela dividida pelo RTT limita a vazão ideal sujeita à janela.
  • O fator de escala da janela fixa o multiplicador no estabelecimento, enquanto o espaço livre continua mudando.
  • As regras de atualização do receptor e o algoritmo de Nagle tratam causas diferentes de segmentos minúsculos.

Exercícios resolvidos de Camada de transporte

5 Lições Interativas

1

Acompanhe dados de um socket a outro

9 passos
Acompanhe a entrega na camada de transporte, selecione sockets de recepção e explique como TCP e UDP atendem às aplicações.
  1. 1
    IntroduçãoUm hospedeiro, várias conversas

    Um notebook pode navegar em uma página enquanto faz uma chamada. As duas aplicações compartilham a entrega IP, mas cada uma precisa de seus próprios dados de entrada.

    Acompanhe uma mensagem descendo de um socket de aplicação, atravessando a rede e subindo até o socket de destino. Depois compare como um servidor UDP atende várias origens com a forma como um servidor TCP distingue conexões estabelecidas.

  2. 2
    ExplicaçãoMonte e desempacote um segmento

    O protocolo de transporte do remetente recebe dados da aplicação e acrescenta seu cabeçalho, formando um segmento. O IP coloca esse segmento dentro de um datagrama IP.

    No destino, o IP identifica o protocolo da camada superior e lhe passa o segmento. O TCP ou o UDP interpreta o cabeçalho de transporte e seleciona um socket. A aplicação lê por esse socket; roteadores comuns apenas encaminham os datagramas IP ao longo do caminho.

  3. 3
    AnalogiaUm endereço e um destinatário

    O endereço de um prédio faz uma carta chegar ao prédio correto. O nome do destinatário permite que alguém dentro do prédio a encaminhe à pessoa certa. Da mesma forma, endereços IP permitem a entrega ao hospedeiro, enquanto portas de transporte ajudam a selecionar um socket de aplicação.

    A analogia separa duas tarefas. Os protocolos de transporte reais também fornecem serviços definidos: o TCP pode recuperar bytes ausentes, enquanto o UDP deixa a recuperação para o software acima dele.

  4. 4
    DesafioO TCP pode prometer um horário de chegada?

    Uma aplicação precisa de cada byte intacto e também de uma chegada garantida em até 25 ms. Escolher TCP atende aos dois requisitos?

    ---reveal---

    O TCP fornece entrega confiável de bytes em ordem, mas não garante o prazo de 25 ms. A recuperação pode acrescentar atraso, e o caminho IP de melhor esforço não fornece um tempo máximo de espera fixo. Uma garantia de entrega e uma garantia de prazo são requisitos distintos.

  5. 5
    ExplicaçãoSelecione um socket de recepção UDP

    Um socket de servidor UDP básico não conectado é selecionado por seu endereço IP e sua porta de destino. Mensagens de diferentes clientes podem chegar a esse mesmo socket.

    Suponha que 203.0.113.20:7000 receba mensagens de 192.0.2.5:55010 e 198.51.100.9:55010. A porta de origem é a mesma, mas as origens são diferentes. O servidor lê a extremidade de origem de cada mensagem para endereçar a resposta apropriada.

  6. 6
    ExemploReutilize uma porta de servidor TCP

    Um servidor TCP em 203.0.113.20:443 tem dois clientes: 192.0.2.5:55010 e 198.51.100.9:55010.

    Cada conexão estabelecida tem uma quádrupla distinta. Ambas compartilham o endereço e a porta do servidor; seus endereços de origem as distinguem. O socket de escuta aceita outros clientes enquanto os sockets de conexão transportam os fluxos existentes. Não é necessária uma porta de escuta extra para cada cliente.

  7. 7
    DesafioConte os sockets de conexão

    Um servidor em 203.0.113.30:443 aceita conexões de 192.0.2.7:56000, 192.0.2.7:56001 e 198.51.100.7:56000. Quantos sockets de conexão distinguem esses fluxos?

    ---reveal---

    Três. Os dois primeiros diferem na porta de origem; o primeiro e o terceiro diferem no endereço de origem. A porta de destino compartilhada não os une. O socket de escuta é separado e não é um desses três sockets de conexão.

  8. 8
    DesafioEscolha o transporte e a extremidade receptora

    Um serviço precisa de mensagens separadas sem estabelecimento de conexão. Dois clientes enviam dados para seu socket não conectado em 203.0.113.40:8000. Qual transporte é adequado e o que seleciona esse socket do servidor?

    ---reveal---

    O UDP é adequado ao serviço de mensagens sem negociação na camada de transporte. O endereço de destino 203.0.113.40 e a porta 8000 selecionam o socket básico do servidor. As extremidades de origem identificam para onde vão as respostas; elas não exigem conexões separadas como no TCP.

  9. 9
    RecapitulaçãoLeia um acompanhamento de entrega em ordem

    Em um acompanhamento de dados recebidos, identifique primeiro o protocolo de transporte, depois suas informações de extremidade e, por fim, o serviço que a aplicação recebe.

    Uma mensagem UDP e um fluxo de bytes TCP podem compartilhar o mesmo número de porta no servidor porque pertencem a protocolos diferentes. No TCP, os dois endereços e as duas portas distinguem uma conexão. Confiabilidade, tempo e cifragem devem ser verificados como necessidades separadas da aplicação.

2

Verifique uma mensagem UDP e escolha seu serviço

11 passos
Leia campos UDP, traga de volta um vai um da soma de verificação e decida se a recuperação de perdas pode cumprir o prazo de uma aplicação.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoUm cabeçalho pequeno com uma função específica
  2. 2
    ExplicaçãoConte os bytes de um segmento UDP
  3. 3
    ExplicaçãoPrepare a entrada da soma de verificação
  4. 4
    ExemploTraga o vai um de volta antes de continuar
  5. 5
    ExemploComplemente e depois verifique
  6. 6
    DesafioTrate outro vai um
  7. 7
    ExplicaçãoMantenha a recuperação dentro do prazo
  8. 8
    Ideia-chaveUma aplicação UDP pode acrescentar mais recursos
  9. 9
    DesafioUma cópia de substituição ainda ajudaria?
  10. 10
    DesafioCombine tamanho de mensagem e escolha de serviço
  11. 11
    RecapitulaçãoVerifique o que cada camada fornece
3

Construa uma transferência confiável com janela deslizante

20 passos
Desenvolva o tratamento de duplicatas, temporizadores e transmissão em pipeline e depois acompanhe Go-back-N e repetição seletiva diante da mesma perda.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoTorne visíveis os casos de falha
  2. 2
    ExplicaçãoRepresente o que cada extremidade espera
  3. 3
    AnalogiaDê a mesma identidade à cópia de substituição
  4. 4
    DesafioResponda a uma duplicata sem repetir a entrega
  5. 5
    ExplicaçãoDê uma resposta ao silêncio
  6. 6
    ExemploMeça envio e espera separadamente
  7. 7
    ExemploPreencha esse intervalo de espera
  8. 8
    DesafioDetermine uma janela para o pipeline
  9. 9
    ExplicaçãoLeia a janela Go-back-N
  10. 10
    ExemploPerca um pacote no Go-back-N
  11. 11
    DesafioRetransmita a faixa pendente
  12. 12
    Ideia-chaveMantenha um número não utilizado fora da janela do GBN
  13. 13
    ExplicaçãoA repetição seletiva guarda chegadas posteriores
  14. 14
    ExemploRecupere a mesma perda com uma cópia de substituição
  15. 15
    DesafioMova a base da SR após um ACK atrasado
  16. 16
    ExemploRevele a sobreposição de números antigos e novos
  17. 17
    DicaSepare as janelas antes de reutilizar números
  18. 18
    DesafioEscolha entre os projetos de janela
  19. 19
    ConexãoTrate cópias que sobrevivem a um ciclo completo
  20. 20
    RecapitulaçãoAcompanhe o estado antes de escolher o que reenviar
4

Acompanhe o TCP de SYN a FIN

16 passos
Leia o cabeçalho, numere os dois fluxos de bytes e acompanhe a abertura e o fechamento da conexão.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoMantenha separados os dois fluxos de bytes
  2. 2
    ExplicaçãoLeia um fluxo, não uma sequência de mensagens
  3. 3
    ExemploInterprete o tamanho do cabeçalho antes do tamanho da carga útil
  4. 4
    DesafioConsidere os cabeçalhos reais
  5. 5
    ExplicaçãoIdentifique o primeiro byte de dados
  6. 6
    ExemploAvance por segmentos de tamanhos diferentes
  7. 7
    ExemploIncorpore um reconhecimento aos dados
  8. 8
    DesafioMantenha um ACK fixo diante de uma lacuna
  9. 9
    ExemploConfirme os dois números iniciais
  10. 10
    DesafioConfira os campos da negociação final
  11. 11
    ExplicaçãoFeche uma direção por vez
  12. 12
    Ideia-chaveEspere onde o ACK final possa ser repetido
  13. 13
    ConexãoRecuse uma requisição de abertura ou proteja-se dela
  14. 14
    DesafioReconheça dados e fechamento juntos
  15. 15
    DicaReconheça a reutilização de números
  16. 16
    RecapitulaçãoContabilize cada número consumido
5

Recupere perdas TCP sem sobrecarregar o receptor

18 passos
Atualize um temporizador, identifique bytes ausentes, calcule o espaço disponível de recepção e explique a reabertura da janela.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoDecida o que está impedindo o progresso
  2. 2
    ExplicaçãoEscolha uma medição de RTT utilizável
  3. 3
    ExemploAtualize primeiro o desvio
  4. 4
    ExemploAtualize a média e aplique limites
  5. 5
    DesafioContinue com uma segunda amostra
  6. 6
    DicaAumente o intervalo sem inventar uma amostra
  7. 7
    ExemploPermita que um ACK posterior cubra um perdido
  8. 8
    ExplicaçãoInforme uma lacuna com ACKs repetidos
  9. 9
    DesafioPreencha uma lacuna e avance sobre bytes armazenados
  10. 10
    Ideia-chaveUse o temporizador básico para a lacuna mais antiga
  11. 11
    ExplicaçãoConte primeiro os bytes não lidos
  12. 12
    ExemploSubtraia os dados já pendentes
  13. 13
    DesafioCalcule a próxima quantidade permitida para envio
  14. 14
    ConexãoRecupere uma atualização de reabertura perdida
  15. 15
    ExemploDimensione uma janela para o caminho
  16. 16
    DicaDistinga o fator de escala das atualizações minúsculas
  17. 17
    DesafioRecupere os dados, mas espere por espaço
  18. 18
    RecapitulaçãoAssocie cada resposta à sua evidência

Questões de Camada de transporte

50 Questões de Prática em 5 conjuntos

Conjunto 1: Serviços de transporte e entrega de mensagens10 Questões de Prática

Questão 1 de 10

Qual serviço TCP permite que uma aplicação receptora obtenha os bytes de um arquivo em sua ordem original?
  1. Um atraso máximo de rede garantido
  2. Um fluxo de bytes confiável e em ordem
  3. Uma mensagem por escrita da aplicação
  4. Uma conexão cifrada embutida
Mostrar respostaOcultar resposta
Resposta: B
O TCP numera bytes e recupera dados ausentes antes de entregar o fluxo em ordem. Ele não preserva os limites das escritas da aplicação, portanto três escritas não precisam produzir três leituras. A cifragem exige um protocolo de segurança como o TLS; a confiabilidade, por si só, não oculta o conteúdo do arquivo.

Questão 2 de 10

Dois clientes TCP usam a porta de origem 54000 para se conectar ao mesmo endereço e à mesma porta de servidor. Seus endereços IP de origem são diferentes. Como o servidor distingue o tráfego deles?
  1. Ele atribui uma nova porta de escuta a um cliente.
  2. Ele combina os dois clientes em um fluxo de bytes.
  3. Ele seleciona sockets usando apenas portas de destino.
  4. Ele seleciona sockets de conexão por quádruplas distintas.
Mostrar respostaOcultar resposta
Resposta: D
Uma conexão TCP é identificada pelos dois endereços IP e pelas duas portas. Os diferentes endereços de origem tornam essas quádruplas distintas, embora as portas de origem sejam iguais. O servidor pode manter uma única porta de escuta; não precisa de uma porta de escuta separada para cada cliente.

Questão 3 de 10

Uma resposta UDP vai de 203.0.113.8:123 para 192.0.2.18:57320. Qual é sua porta de destino?
  1. 57320
  2. 123
  3. 17
  4. 192
Mostrar respostaOcultar resposta
Resposta: A
A porta de destino é a porta na extremidade receptora, 57320. A porta 123 identifica o serviço remetente nessa resposta e, portanto, é a porta de origem. Uma resposta inverte os papéis das extremidades da requisição; a porta bem conhecida do serviço não precisa ser o destino nas duas direções.

Questão 4 de 10

Uma mensagem UDP transporta 72 bytes de dados. Qual valor deve constar em seu campo de comprimento?
  1. 72 bytes
  2. 92 bytes
  3. 80 bytes
  4. 100 bytes
Mostrar respostaOcultar resposta
Resposta: C
O comprimento UDP inclui o cabeçalho UDP de 8 bytes e os 72 bytes de dados, totalizando 80 bytes. Contar apenas os dados da aplicação deixa de fora o cabeçalho de transporte. Acrescentar um cabeçalho IP contaria bytes fora do segmento UDP; o IP tem suas próprias informações de comprimento.

Questão 5 de 10

Uma atualização de posição em um jogo expira daqui a 35 ms. Recuperar uma cópia perdida levaria 90 ms, e uma posição mais recente já está disponível. Por que a aplicação poderia deixar de fazer essa recuperação?
  1. A cópia de substituição chegaria após seu prazo útil.
  2. O UDP garante que a posição mais recente é precisa.
  3. A rede já deve ter entregado a atualização perdida.
  4. Um cabeçalho UDP impede o envio de posições antigas.
Mostrar respostaOcultar resposta
Resposta: A
A atualização recuperada chegaria 55 ms após expirar, portanto sua posição antiga não ajudaria mais essa aplicação. O UDP não decide a utilidade nem impede envios desatualizados; a aplicação faz essa escolha. Perder uma mensagem também não diz nada sobre a precisão de uma posição mais recente.

Questão 6 de 10

Um receptor que usa pare e espere entregou o pacote 0 e agora espera o pacote 1. Outro pacote 0 intacto chega. O que ele deve fazer?
  1. Entregá-lo novamente e enviar ACK 0.
  2. Descartar seus dados e enviar ACK 1.
  3. Descartar seus dados e não enviar resposta.
  4. Descartar seus dados e enviar ACK 0.
Mostrar respostaOcultar resposta
Resposta: D
O número repetido identifica uma cópia antiga, portanto os dados não devem ser entregues duas vezes. Enviar ACK 0 novamente permite que o remetente se recupere caso o primeiro ACK tenha sido perdido ou ficado ilegível. ACK 1 afirmaria o recebimento do próximo pacote, que o receptor ainda não aceitou.

Questão 7 de 10

Um protocolo pare e espere que trata apenas erros tem somas de verificação e respostas ACK/NAK, mas não tem números de sequência. Por que reenviar após uma resposta corrompida não é seguro?
  1. A cópia de substituição não pode conter uma soma de verificação válida.
  2. O receptor pode entregar duas vezes um pacote já aceito.
  3. O remetente deve mudar sua porta de origem a cada tentativa.
  4. O canal de resposta não pode transportar informações úteis.
Mostrar respostaOcultar resposta
Resposta: B
A resposta ilegível pode ter sido um ACK para dados já entregues. Sem uma identidade do pacote, o receptor pode confundir a cópia de substituição com dados novos e entregá-la duas vezes. Uma soma de verificação válida detecta conteúdo intacto; ela não distingue uma duplicata de uma nova entrega.

Questão 8 de 10

Um remetente que usa pare e espere envia pacotes de 1.000 bytes em um enlace de 8 Mbit/s com RTT de 19 ms. Ignore a transmissão e o processamento do ACK. Qual é sua utilização?
  1. 0,005
  2. 0,95
  3. 0,05
  4. 0,50
Mostrar respostaOcultar resposta
Resposta: C
Um pacote contém 8.000 bits, portanto a transmissão leva 1 ms. O ciclo completo é 19 + 1 = 20 ms, resultando em utilização 1/20 = 0,05. Usar 1.000 como contagem de bits ignora a conversão de bytes em bits e produz um tempo de transmissão incorreto.

Questão 9 de 10

Um campo de deslocamento dos dados TCP contém 9. Qual é o comprimento do cabeçalho TCP?
  1. 36 bytes
  2. 9 bytes
  3. 29 bytes
  4. 72 bytes
Mostrar respostaOcultar resposta
Resposta: A
O deslocamento dos dados conta palavras de 32 bits, cada uma com 4 bytes. Portanto, um valor de 9 resulta em 36 bytes de cabeçalho TCP, incluindo os 20 bytes fixos. Esse é o comprimento total do cabeçalho, portanto acrescentar outros 20 bytes contaria a parte fixa uma segunda vez.

Questão 10 de 10

Um remetente do protocolo do bit alternante envia o pacote 1. Seu ACK atrasa além do tempo limite, então uma cópia de substituição é enviada. O ACK original chega antes que a cópia de substituição alcance o receptor. O remetente envia o novo pacote 0. Sem reordenação dos pacotes de dados, o que o receptor entrega da cópia de substituição 1 e do novo pacote 0?
  1. Os dois pacotes, pois cada um chegou intacto.
  2. Nenhum pacote, pois o tempo limite do remetente expirou.
  3. Apenas o pacote 1, pois seu ACK chegou primeiro.
  4. Apenas o pacote 0, após descartar o 1 duplicado.
Mostrar respostaOcultar resposta
Resposta: D
O receptor já entregou o pacote 1 original antes de enviar seu ACK atrasado. Portanto, ele descarta a cópia de substituição 1 como duplicata e a reconhece novamente. O novo pacote 0 tem o número alternante esperado e é entregue; a expiração do tempo limite não desfaz a entrega anterior.
Conjunto 2: Janelas deslizantes e recuperação de perdas10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

No Go-back-N, o que ACK 12 confirma?
  1. Apenas o pacote 12
  2. Todos os pacotes até 12
  3. Todos os pacotes antes de 12
  4. Apenas os pacotes após 12
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Um remetente Go-back-N tem janela de tamanho 6, base 20 e nextseqnum 24. Não ocorre retorno cíclico. Quais novos pacotes ele pode enviar antes de outro ACK?
  1. De 24 a 29
  2. 20 e 21
  3. 24 e 25
  4. 25 e 26
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Um remetente Go-back-N usa janela 5 e envia os pacotes de 10 a 14; o pacote 12 é perdido. Os ACKs de 10 e 11 chegam, então ele envia 15 e 16. Todos os dados posteriores chegam antes da expiração do tempo limite do pacote 12. O que é retransmitido quando esse tempo limite expira?
  1. 12, 13, 14, 15 e 16
  2. Apenas 12
  3. Apenas 12, 13 e 14
  4. 10, 11, 12, 13 e 14
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Um remetente de repetição seletiva tem base 30 e os pacotes de 30 a 33 pendentes. Os ACKs 31, 32 e 33 chegam, mas o ACK 30 não. Onde fica a base do remetente?
  1. 31
  2. 33
  3. 34
  4. 30
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Um receptor SR tem janela de tamanho 4. Ele aceita os pacotes de 8 a 11 e move sua base para 12. O ACK 9 é perdido, então o pacote 9 é retransmitido. Qual resposta permite que o remetente se recupere corretamente?
  1. Ignorar o pacote 9 porque está fora da janela atual.
  2. Enviar ACK 11 porque os quatro pacotes foram recebidos.
  3. Enviar ACK 9 sem entregar o pacote 9 novamente.
  4. Armazenar o pacote 9 até o retorno cíclico dos números.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Uma pessoa que projeta protocolos precisa de janelas de remetente e receptor de repetição seletiva com o mesmo tamanho de 10 pacotes. Qual é o tamanho mínimo do campo de número de sequência?
  1. 3 bits
  2. 5 bits
  3. 4 bits
  4. 6 bits
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Uma transmissão em pipeline envia pacotes de 1.250 bytes em um enlace de 10 Mbit/s com RTT de 9 ms. Ignore a transmissão e o processamento do ACK. Qual é a menor janela que pode manter o remetente continuamente ocupado?
  1. 9 pacotes
  2. 11 pacotes
  3. 90 pacotes
  4. 10 pacotes
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Qual mecanismo permite que um receptor distinga um pacote de substituição de dados novos no pare e espere?
  1. Um número de sequência
  2. Um tempo limite maior
  3. Uma taxa de enlace maior
  4. Apenas uma soma de verificação
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Dois caminhos que usam pare e espere têm tamanhos de pacote e RTTs idênticos. A taxa do segundo enlace é duplicada. Como mudam a utilização e a vazão útil, ignorando perdas e a transmissão de ACKs?
  1. Ambas duplicam.
  2. A utilização cai; a vazão aumenta menos que o dobro.
  3. A utilização permanece igual; a vazão duplica.
  4. A utilização aumenta; a vazão permanece igual.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

O TCP envia três segmentos consecutivos. O ACK do primeiro é perdido, mas um ACK posterior que abrange os três chega antes da expiração do tempo limite. Quais dados devem ser reenviados por causa desse ACK perdido?
  1. Apenas o primeiro segmento
  2. Apenas o último segmento
  3. Nenhum dos três segmentos
  4. Todos os três segmentos
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 3: Bytes TCP e estado da conexão10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Um programa escreve 60 bytes e depois 90 bytes em um socket TCP. O que uma única leitura no receptor pode retornar?
  1. Apenas 60 bytes até uma segunda leitura
  2. Exatamente uma mensagem de 150 bytes com marcador de limite
  3. Apenas 90 bytes porque a escrita posterior substitui a primeira
  4. Todos os 150 bytes sem marcador de limite de escrita
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Um segmento TCP começa no byte 8401 e transporta 640 bytes de dados, sem SYN ou FIN. Qual ACK confirma todo esse segmento quando todos os bytes anteriores chegaram?
  1. 9040
  2. 9041
  3. 8402
  4. 640
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Um receptor espera o byte 12001. Ele armazena em buffer 400 bytes começando em 12401, depois recebe 250 bytes começando em 12001 e, em seguida, 150 bytes começando em 12251. Qual ACK segue cada uma das duas últimas chegadas?
  1. 12251, depois 12801
  2. 12401, depois 12801
  3. 12251, depois 12401
  4. 12801, depois 12801
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

O próximo byte de um cliente é 3001 e o próximo byte de um servidor é 9101. O cliente envia 180 bytes; o servidor os recebe e envia 420 bytes sem dados anteriores do servidor pendentes. Quais são os números de sequência e de ACK nesse segmento do servidor?
  1. Sequência 3281; ACK 9521
  2. Sequência 9521; ACK 3181
  3. Sequência 9101; ACK 3181
  4. Sequência 3181; ACK 9101
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Um cliente envia SYN com sequência 4600. O servidor responde com SYN-ACK com sequência 17000. Qual reconhecimento deve constar no ACK final da negociação do cliente?
  1. 17000
  2. 17001
  3. 4601
  4. 17002
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

A enviou dados até o byte 7199 e depois envia FIN. B reconhece esse FIN e ainda tem 300 bytes de aplicação não enviados. Qual é o próximo comportamento correto?
  1. B envia seus dados e pode depois enviar seu próprio FIN; seu ACK é 7201.
  2. B deve descartar seus dados não enviados; seu ACK é 7201.
  3. B envia seus dados somente após uma nova negociação; seu ACK é 7200.
  4. B fecha imediatamente as duas direções; seu ACK é 7200.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

A fecha primeiro e chega a TIME_WAIT após receber o FIN de B. O ACK final de A é perdido. B retransmite seu FIN. Por que manter o estado de conexão de A é útil agora?
  1. Permite que A reabra a direção de envio de B.
  2. Permite que A reenvie os dados ausentes de B.
  3. Permite que A reconheça o FIN novamente.
  4. Permite que A defina o próximo número de sequência de B.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Um remetente TCP recebeu um ACK 4401 seguido de mais três ACKs 4401 causados pela chegada de dados posteriores após uma lacuna. Qual segmento a retransmissão rápida básica reenvia?
  1. O segmento que termina no byte 4400
  2. O segmento enviado mais recentemente
  3. Todos os segmentos após o byte 4401
  4. O segmento que começa no byte 4401
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Um receptor tem capacidade de 24000 bytes e contém 6500 bytes não lidos. O remetente já tem 5500 bytes pendentes sob o valor anunciado atualmente. Quantos bytes adicionais cabem?
  1. 17500 bytes
  2. 12000 bytes
  3. 18500 bytes
  4. 6500 bytes
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

O TCP envia segmentos que começam em 2001, 2501 e 3001, cada um com 500 bytes. Todos os dados chegam, mas todos os ACKs atrasam além do tempo limite. O remetente reenvia 2001; então ACK 3501 chega antes que o tempo do novo temporizador expire. O que resta retransmitir?
  1. Nada; ACK 3501 confirma os três segmentos de dados.
  2. Apenas 2501; 2001 foi a única cópia de substituição enviada.
  3. 2501 e 3001; cada um precisa de seu próprio evento de temporizador.
  4. Os três; um ACK após a expiração não pode confirmar dados originais.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 4: Tempos limite TCP, lacunas e espaço de recepção10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Um temporizador de retransmissão está definido para 1,2 s. Qual intervalo vem após uma expiração do tempo limite com recuo exponencial?
  1. 0,6 s
  2. 1,2 s
  3. 2,4 s
  4. 4,8 s
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

EstimatedRTT é 200 ms e DevRTT é 20 ms. Uma nova amostra é 240 ms. Usando os pesos e a ordem de atualização recomendados, qual é o tempo limite bruto quando a granularidade do relógio é desprezível?
  1. 305 ms
  2. 300 ms
  3. 285 ms
  4. 320 ms
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

EstimatedRTT é 240 ms e DevRTT é 20 ms. Um remetente sem marcas de tempo aumentou seu tempo limite para 2 s por recuo. Um ACK de dados retransmitidos chega 150 ms após a nova tentativa. Depois, dados que não haviam sido retransmitidos produzem uma amostra válida de 320 ms. Com granularidade desprezível do relógio, qual tempo limite bruto deve ser calculado a partir desses eventos?
  1. 390 ms
  2. 444 ms
  3. 350 ms
  4. 2000 ms
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Um receptor recebe um segmento TCP intacto após uma faixa de bytes ausente. O que seu ACK imediato deve informar?
  1. O fim do segmento recém-chegado
  2. O primeiro byte ainda ausente do fluxo contínuo
  3. O comprimento do segmento fora de ordem
  4. O primeiro byte após todos os dados enviados pela outra extremidade
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Um receptor espera o byte 6001. Ele armazena em buffer três segmentos consecutivos de 800 bytes que começam em 6801, 7601 e 8401, enviando ACKs duplicados imediatamente. Em seguida, chega um segmento de substituição de 800 bytes que começa em 6001. Qual ACK cumulativo vem em seguida?
  1. 6801
  2. 8401
  3. 9201
  4. 6001
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Um remetente TCP tem pendentes segmentos que começam em 10501, 11001, 11501 e 12001. Seu limite atual de ACK cumulativo é 10501. Ele recebe ACK 10501 duas vezes, depois ACK 11001 uma vez e então ACK 11001 mais três vezes. Nenhum tempo de temporizador expira. Qual segmento a retransmissão rápida básica reenvia?
  1. O segmento que começa em 10501
  2. O segmento que começa em 11501
  3. O segmento que começa em 12001
  4. O segmento que começa em 11001
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Após anunciar uma janela zero, a aplicação de um receptor lê dados. A atualização de janela de reabertura é perdida. O que permite que o remetente descubra o espaço disponível?
  1. Uma retransmissão automática de cada ACK puro
  2. Um novo estabelecimento em três etapas no mesmo fluxo
  3. Um tempo limite fixo que retorna a janela ao máximo
  4. Uma sondagem de janela zero e a resposta com a janela atual do receptor
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Um caminho tem RTT de 80 ms e pode transportar 200 Mbit/s. Um receptor pode anunciar até 65535 × 2^s bytes. Ignorando outros limites, qual é o menor deslocamento de escala que permite dados suficientes em trânsito para preencher o caminho?
  1. 4
  2. 5
  3. 6
  4. 7
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Um receptor anuncia ACK 51001 e rwnd 18000 enquanto o remetente enviou até o byte 57000. O remetente então transmite mais 8000 bytes e recebe ACK 59001 com rwnd 12000. Quantos bytes adicionais ele pode enviar agora sob o novo valor anunciado?
  1. 4000 bytes
  2. 12000 bytes
  3. 6000 bytes
  4. 10000 bytes
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Um serviço usa UDP, mas precisa de entrega completa e em ordem e envia tráfego considerável em um caminho compartilhado. O que o serviço ou um protocolo acima do UDP deve fornecer?
  1. Recuperação, ordenação e controle de congestionamento adequado
  2. Apenas um campo de soma de verificação maior e um cabeçalho IP mais longo
  3. Apenas aumento do buffer de recepção e portas de origem permanentes
  4. Uma suposição de que toda perda no caminho compartilhado é inofensiva
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 5: Diagnostique acompanhamentos completos de transporte10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Uma soma de verificação UDP fornecida e diferente de zero falha no receptor. O que o UDP faz com o segmento?
  1. Corrige os bits e depois entrega.
  2. Descarta silenciosamente o segmento.
  3. Solicita um reenvio com um NAK UDP.
  4. Entrega duas cópias para comparar.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Duas palavras de entrada de 16 bits para a soma de verificação são FFFE e 0002. Qual é sua soma de verificação da internet?
  1. FFFF
  2. 0000
  3. FFFE
  4. 0001
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Um protocolo de repetição seletiva com janelas de mesmo tamanho usa números de 0 a 7 e janela de tamanho 5. O receptor aceita de 0 a 4, mas todos os ACKs são perdidos. Quais números de pacotes antigos caberiam na nova janela do receptor se fossem retransmitidos?
  1. 0 e 1
  2. 3 e 4
  3. 5 e 6
  4. De 0 a 4
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Um remetente Go-back-N tem números de quatro bits e precisa de pelo menos 16 pacotes em trânsito para preencher um caminho. Qual é a menor alteração que permite essa transmissão em pipeline com segurança sem mudar o tipo de protocolo?
  1. Manter quatro bits e usar todos os 16 números.
  2. Manter quatro bits e aumentar apenas o buffer de recepção.
  3. Manter quatro bits e substituir ACKs cumulativos por individuais.
  4. Usar números de cinco bits e janela de pelo menos 16.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Um caminho permite datagramas IPv4 de 1400 bytes. O cabeçalho IP tem 20 bytes e o deslocamento dos dados TCP é 8. Quantos bytes de dados cabem sem exceder esse limite?
  1. 1360 bytes
  2. 1348 bytes
  3. 1372 bytes
  4. 1380 bytes
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Após uma negociação com ISN do cliente 15000, o cliente envia 2300 bytes divididos em 1000, 1000 e 300 bytes e depois FIN. Todos chegam em ordem. Qual ACK confirma o FIN?
  1. 17300
  2. 17301
  3. 17302
  4. 18002
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

EstimatedRTT é 400 ms e DevRTT é 60 ms. Uma nova amostra válida é 240 ms após um recuo anterior. Com granularidade desprezível do relógio e mínimo de 1 s, qual tempo limite resulta dessa nova medição?
  1. 560 ms
  2. 640 ms
  3. 1120 ms
  4. 1000 ms
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Um receptor anuncia ACK 8001 com rwnd 9000. O remetente enviou até 11000. A aplicação então lê 2000 bytes, mas nenhum valor anunciado atualizado chega ao remetente. Quantos novos bytes o remetente pode enviar usando a janela que conhece?
  1. 6000 bytes
  2. 8000 bytes
  3. 9000 bytes
  4. 11000 bytes
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Um servidor usa cookies SYN durante uma inundação de negociações incompletas. Qual evento normalmente permite que ele aloque o estado da nova conexão?
  1. Receber qualquer SYN destinado à porta de escuta
  2. Enviar o primeiro SYN-ACK a um aparente cliente
  3. Validar o cookie retornado pelo ACK final
  4. Esperar um tempo máximo de vida de segmento após o SYN
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Um receptor espera o byte 16001. De quatro segmentos de 600 bytes que começam em 16001, 16601, 17201 e 17801, o primeiro e o terceiro são perdidos. O segundo e o quarto chegam e são armazenados em buffer; apenas dois ACKs duplicados chegam ao remetente. Quando o tempo limite expira, o primeiro é retransmitido e chega. Qual ACK vem em seguida e qual lacuna permanece?
  1. ACK 18401; nenhuma lacuna permanece.
  2. ACK 17201; a lacuna que começa em 17201 permanece.
  3. ACK 16601; os dois segmentos posteriores devem ser reenviados.
  4. ACK 17801; a lacuna que começa em 17801 permanece.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Travou em uma questão sua? Ajuda com Tarefas

Termos-Chave

75 Termos-Chave, cada um com sua definição

A

ACK duplicado
Um ACK duplicado repete um reconhecimento cumulativo existente sem confirmar novos bytes, frequentemente porque dados posteriores chegaram após uma lacuna.
Três ACKs duplicados que atendam aos critérios podem acionar a substituição de um segmento ausente antes da expiração de seu temporizador.
Algoritmo de Karn
O algoritmo de Karn exclui medições ambíguas de RTT de dados retransmitidos, a menos que informações como marcas de tempo identifiquem a transmissão.
Um ACK após uma nova tentativa pode corresponder à cópia original, portanto seu tempo de chegada, por si só, não pode fornecer uma nova amostra.
Algoritmo de Nagle
O algoritmo de Nagle agrupa pequenas escritas do remetente enquanto dados anteriores não são reconhecidos ou até que haja dados suficientes em buffer para formar um segmento completo.
Uma sequência de escritas de um byte pode ser reunida em vez de enviar para cada uma um segmento separado com grande sobrecarga de cabeçalho.
Armazenamento em buffer de dados fora de ordem
O armazenamento em buffer de dados fora de ordem guarda dados válidos recebidos após uma lacuna até que dados anteriores ausentes cheguem e a entrega em ordem possa continuar.
Quando o pacote 4 preenche a lacuna, os pacotes 5 e 6 armazenados em buffer podem ser entregues sem outra transmissão.

B

Base da janela de envio
A base da janela de envio marca os dados não reconhecidos mais antigos no início de uma janela de envio, limitando até onde novas transmissões podem avançar.
No GBN, receber ACK 19 move a base para 20 e pode abrir espaço para pacotes adicionais.
Bloqueio de início de fila (HOL)
O bloqueio de início de fila em um fluxo TCP ocorre quando bytes anteriores ausentes atrasam a entrega de bytes posteriores que já chegaram.
Um receptor pode reter dados de áudio posteriores enquanto o TCP espera por bytes de substituição de um segmento anterior.

C

Camada de transporte
A camada de transporte fornece comunicação lógica entre processos de aplicação em diferentes hospedeiros, acima do serviço IP entre hospedeiros.
Um navegador recebe os bytes de sua própria resposta por um socket enquanto outra aplicação usa o mesmo hospedeiro.
Comunicação lógica
A comunicação lógica permite que processos correspondentes interajam como se estivessem diretamente conectados, enquanto as camadas inferiores transportam seus dados por uma rede.
Duas aplicações em hosts diferentes usam sockets sem gerenciar cada roteador e enlace no caminho entre elas.
Conexão full-duplex
Uma conexão full-duplex permite que ambas as extremidades transmitam ao mesmo tempo, mantendo numeração independente de fluxo em cada direção.
Um servidor pode enviar bytes de resposta enquanto o cliente ainda envia dados adicionais na mesma conexão.
Controle de fluxo
O controle de fluxo limita os dados pendentes de um remetente conforme o espaço disponível no buffer do receptor, protegendo uma aplicação que lê lentamente.
Um receptor com buffer cheio pode anunciar uma janela zero mesmo quando o caminho da rede tem capacidade disponível.
Cookie SYN
Um cookie SYN codifica informações verificáveis da conexão no ISN de um servidor para que o estado individual possa ser alocado após um ACK final válido.
O servidor verifica o reconhecimento recebido antes de reservar recursos para aquela conexão específica.

D

Demultiplexação
A demultiplexação seleciona o socket de aplicação receptor de um segmento de transporte recebido usando o protocolo e as informações de extremidade.
O hospedeiro envia uma resposta DNS ao socket que fez a solicitação em vez de colocá-la no fluxo de um navegador.
Deslocamento dos dados
O deslocamento dos dados TCP fornece o comprimento total do cabeçalho TCP em palavras de 32 bits, identificando onde começa a carga útil da aplicação.
Um deslocamento dos dados de 6 resulta em um cabeçalho de 24 bytes, com quatro bytes além do cabeçalho TCP fixo.
Desvio do RTT (DevRTT)
DevRTT é uma medida suavizada de quanto amostras recentes de RTT diferem da estimativa anterior, usada para definir a margem do tempo limite.
Uma variação no atraso do caminho aumenta a margem de desvio mesmo quando seu RTT médio muda apenas um pouco.

E

Encapsulamento
O encapsulamento coloca a unidade de dados de uma camada dentro da unidade de outra camada, com um novo cabeçalho que descreve as informações de entrega dessa camada.
O IP encapsula um segmento de transporte acrescentando o cabeçalho IP usado para entregá-lo ao hospedeiro de destino.
Entrega de melhor esforço
A entrega de melhor esforço tenta transportar dados sem garantir sua chegada, ordem, integridade, atraso ou uma vazão mínima.
O TCP pode recuperar um segmento perdido mesmo que o serviço IP subjacente continue sendo de melhor esforço.
Espaço de números de sequência
Um espaço de números de sequência é o conjunto finito de identificadores de pacotes ou bytes disponíveis, reutilizados ciclicamente quando seu valor máximo é ultrapassado.
Com números de pacote de três bits, o número após 6 é 7 e o valor seguinte a 7 é 0.
Estabelecimento de conexão em três etapas
O estabelecimento de conexão em três etapas é a troca TCP de SYN, SYN-ACK e ACK para estabelecer o estado das extremidades e confirmar os dois números de sequência iniciais.
O ACK final confirma o SYN do servidor e pode transportar os primeiros dados de aplicação do cliente ao mesmo tempo.
Estado TIME_WAIT
TIME_WAIT é um estado de fechamento TCP que mantém informações da conexão para repetir o ACK final e permitir que segmentos antigos expirem.
Se o ACK final for perdido, um FIN retransmitido pela outra extremidade ainda poderá ser respondido pela extremidade que fechou primeiro.
Expiração prematura do tempo limite
Uma expiração prematura do tempo limite ocorre quando um remetente tenta novamente antes de a confirmação de uma transmissão original bem-sucedida ter tido tempo de retornar.
O receptor descarta os dados da cópia de substituição desnecessária, mas a reconhece novamente para que o remetente possa prosseguir.

F

Fator de escala da janela
O fator de escala da janela multiplica campos de janela TCP posteriores por uma potência de dois negociada durante o estabelecimento, permitindo janelas de recepção acima de 65535 bytes.
Um deslocamento de escala de 3 interpreta um valor posterior de campo de 12000 como uma janela anunciada de 96000 bytes.
Fechamento parcial
Um fechamento parcial encerra uma direção de envio TCP com FIN enquanto permite que dados continuem trafegando na outra direção da conexão.
Um cliente pode terminar de enviar uma requisição e ainda continuar recebendo os bytes restantes da resposta do servidor.
Fluxo de bytes
Um fluxo de bytes é uma sequência ordenada de bytes sem limites de mensagens de aplicação embutidos, como a que o TCP entrega a seu receptor.
Uma leitura pode retornar bytes de várias escritas anteriores, portanto a aplicação verifica sua própria delimitação de mensagens.

I

Inundação de SYN
Uma inundação de SYN é um ataque que envia muitas requisições de abertura de conexão sem concluir suas negociações, consumindo recursos do servidor.
Uma fila de requisições incompletas pode impedir que um servidor aceite conexões de clientes legítimos.

J

Janela de recepção
A janela de recepção é a capacidade anunciada pelo receptor para dados TCP pendentes, que muda conforme os dados armazenados chegam e a aplicação os lê.
Se o valor anunciado é 10000 bytes e 4000 já estão pendentes, cabem apenas mais 6000.
Janela deslizante
Uma janela deslizante é uma faixa móvel de números de sequência que limita quais pacotes podem estar pendentes ou ser aceitos em determinado momento.
Um ACK GBN que avança libera uma posição na borda direita para o envio de outro pacote novo.
Janela do receptor
Uma janela do receptor na repetição seletiva é a faixa de números de sequência atualmente aceitáveis para novos dados, começando na base de entrega.
Um pacote após uma lacuna pode ser aceito se seu número estiver dentro da janela atual do receptor SR.

L

Limite de mensagem
Um limite de mensagem separa uma mensagem de aplicação de outra; o UDP preserva essas divisões, enquanto o TCP transporta um fluxo de bytes sem delimitação de mensagens.
Dois envios UDP criam duas mensagens, portanto o receptor não as combina em uma única mensagem UDP.

M

Máquina de estados finitos
Uma máquina de estados finitos descreve um sistema por meio de um estado atual e de transições acionadas por eventos que especificam as ações a executar.
Um remetente que espera por ACK 1 trata um ACK correspondente de forma diferente de uma resposta que contém o número errado.
Multiplexação
A multiplexação reúne dados de saída de vários sockets de aplicação e acrescenta informações de transporte para que o tráfego possa compartilhar a rede.
Um hospedeiro envia tráfego de navegador e de correio eletrônico pela mesma interface com informações de porta diferentes.

N

Número de porta
Um número de porta é um identificador de transporte de 16 bits que ajuda a selecionar uma extremidade de aplicação em um hospedeiro; TCP e UDP têm espaços de portas separados.
Um serviço DNS pode receber consultas na porta UDP 53 e também escutar conexões TCP na porta 53.
Número de reconhecimento
Um número de reconhecimento TCP identifica o próximo byte esperado da outra extremidade e confirma todos os bytes anteriores no fluxo contínuo.
ACK 4001 confirma os bytes até 4000 mesmo que o receptor também tenha armazenado em buffer dados após uma lacuna posterior.
Número de sequência
O número de sequência de um segmento de dados TCP identifica seu primeiro byte de dados no fluxo daquela direção, com aritmética módulo 2^32.
Um segmento de 700 bytes que começa em 2001 é seguido por novos dados que começam em 2701 quando nenhum indicador de controle intervém.
Número de sequência inicial (ISN)
Um número de sequência inicial é o número TCP de partida escolhido por uma extremidade e transportado em seu SYN antes do início dos dados de aplicação.
Quando SYN usa 27000, o primeiro byte de aplicação normalmente usa o número de sequência 27001.

O

Opção TCP
Uma opção TCP é uma informação variável do cabeçalho que estende o cabeçalho fixo, como MSS, fator de escala da janela, marcas de tempo ou reconhecimentos seletivos.
Uma opção de marca de tempo torna o cabeçalho mais longo, reduzindo o espaço para carga útil em um datagrama IP de tamanho fixo.

P

Pare e espere
Pare e espere é um método de transferência no qual o remetente mantém apenas um pacote de dados pendente e espera confirmação antes de avançar.
Um longo tempo de ida e volta pode deixar o remetente ocioso mesmo quando seu enlace consegue transmitir o pacote muito rapidamente.
Porta efêmera
Uma porta efêmera é uma porta local temporária geralmente selecionada pelo sistema operacional para a comunicação de rede de um cliente.
A requisição do cliente usa a porta de origem temporária 55120, e a resposta usa esse valor como porta de destino.
Prazo de reprodução
Um prazo de reprodução é o momento até o qual uma parte recebida de áudio ou vídeo deve estar disponível para sua apresentação programada.
Uma parte de áudio ausente recuperada após seu momento de reprodução não pode preencher a lacuna que o ouvinte já ouviu.
Princípio fim a fim
O princípio fim a fim coloca as verificações de uma propriedade exigida para todo o caminho nas extremidades que podem confirmar se essa propriedade é satisfeita.
Uma soma de verificação de transporte ainda confere os dados recebidos mesmo quando enlaces individuais têm suas próprias verificações de erros.
Produto largura de banda-atraso
O produto largura de banda-atraso é a taxa de um enlace ou caminho multiplicada pelo tempo de ida e volta, estimando os dados em trânsito necessários para sustentar essa taxa.
Um caminho de 100 Mbit/s com RTT de 0,1 s precisa de cerca de 10 milhões de bits, ou 1,25 MB, em trânsito para permanecer ocupado.
Proteção contra a reutilização de números de sequência (PAWS)
A proteção contra a reutilização de números de sequência usa marcas de tempo TCP para rejeitar segmentos antigos quando números de bytes reutilizados, por si só, poderiam parecer atuais.
Uma conexão rápida pode percorrer ciclicamente seus números de bytes de 32 bits antes que uma cópia antiga atrasada tenha desaparecido.
Protocolo de Controle de Transmissão (TCP)
O TCP é um protocolo de transporte orientado a conexão que fornece um fluxo de bytes confiável, em ordem e full-duplex entre duas extremidades de aplicação.
A aplicação recebe um único fluxo ordenado mesmo quando os datagramas IP chegaram em outra ordem.
Protocolo de Datagramas do Usuário (UDP)
O UDP é um protocolo de transporte não orientado a conexão que transporta mensagens separadas usando entrega baseada em portas e um campo de soma de verificação da internet.
Um cliente DNS pode enviar sua consulta UDP inicial sem antes trocar mensagens de estabelecimento de transporte.
Protocolo do bit alternante
O protocolo do bit alternante usa os números de sequência 0 e 1 com pare e espere, reconhecimentos e um temporizador para lidar com erros e perdas.
Após a perda de um ACK, um número de pacote repetido permite que o receptor evite entregar os mesmos dados duas vezes.
Protocolo Go-back-N (GBN)
O Go-back-N é um protocolo de transferência confiável em pipeline com ACKs cumulativos, um temporizador para o pacote mais antigo e um receptor que aceita apenas pacotes em ordem.
Um pacote ausente faz com que chegadas posteriores fora de ordem sejam descartadas e depois reenviadas após a expiração do tempo limite.
Pseudocabeçalho
Um pseudocabeçalho é um conjunto de informações de endereçamento IP e de protocolo incluído no cálculo de uma soma de verificação de transporte sem se tornar um cabeçalho de transporte adicional.
A soma de verificação UDP inclui informações de endereçamento de destino, além do cabeçalho UDP e dos dados.

Q

Quádrupla
A quádrupla de uma conexão TCP é a combinação de seu endereço IP de origem, porta de origem, endereço IP de destino e porta de destino.
Duas conexões com um servidor web permanecem distintas quando seus clientes usam endereços de origem diferentes.
QUIC
O QUIC é um protocolo de transporte seguro sobre UDP que fornece fluxos confiáveis e controle de congestionamento e transporta tráfego HTTP/3.
Uma conexão web que usa HTTP/3 obtém entrega confiável do QUIC, embora o próprio UDP não forneça recuperação.

R

Reconhecimento (ACK)
Um reconhecimento é uma resposta do receptor que confirma o recebimento de dados; seu significado pode ser individual ou cumulativo, dependendo do protocolo.
Na SR, ACK 14 confirma apenas o pacote 14, enquanto no GBN ACK 14 também confirma todos os pacotes anteriores.
Reconhecimento atrasado
Um reconhecimento atrasado adia brevemente o reconhecimento de dados TCP em ordem para que respostas possam ser combinadas, sujeito a limites de tempo e frequência.
Um segundo segmento de tamanho completo em ordem provoca um ACK cumulativo em vez de iniciar outra longa espera.
Reconhecimento cumulativo
Um reconhecimento cumulativo confirma um prefixo contínuo inteiro de dados recebidos, permitindo que um ACK cubra várias transmissões anteriores.
Um ACK cumulativo posterior pode tornar inofensiva a perda de um ACK anterior se chegar antes da expiração do tempo limite.
Reconhecimento incorporado aos dados
O reconhecimento incorporado aos dados transporta informações de reconhecimento para dados recebidos em um segmento TCP que também envia dados na direção inversa.
A resposta de um servidor pode reconhecer a requisição enquanto transporta seus próprios bytes numerados independentemente.
Reconhecimento individual
Um reconhecimento individual confirma um pacote identificado sem também confirmar todos os pacotes anteriores na sequência.
Receber ACK 22 na SR não informa ao remetente se o pacote 21 chegou ou ainda precisa ser substituído.
Reconhecimento negativo (NAK)
Um reconhecimento negativo é uma resposta que informa que os dados não foram recebidos corretamente e que é necessária uma transmissão de substituição.
Um projeto de pare e espere que trata apenas erros de bit envia um NAK após sua soma de verificação detectar um pacote danificado.
Reconhecimento seletivo (SACK)
O reconhecimento seletivo é uma opção TCP que informa blocos de bytes recebidos após uma lacuna, complementando o limite de reconhecimento cumulativo.
O SACK pode mostrar que dois blocos posteriores já estão armazenados em buffer enquanto uma faixa intermediária de bytes ainda precisa ser recuperada.
Recuo exponencial
O recuo exponencial duplica o tempo limite de retransmissão atual após sua expiração, aumentando a espera entre tentativas malsucedidas repetidas.
Expirações sucessivas de tempo limite podem aumentar um intervalo de espera de 1 s para 2 s e depois para 4 s.
Reinicialização da conexão (RST)
Uma reinicialização TCP é um segmento com RST ativado que recusa ou aborta abruptamente uma conexão em vez de concluir uma troca ordenada de FIN.
Um SYN enviado a uma porta TCP sem socket de escuta normalmente recebe uma reinicialização do hospedeiro de destino.
Repetição seletiva
A repetição seletiva é um protocolo de transferência confiável com ACKs individuais por pacote, temporizadores lógicos por pacote e armazenamento em buffer no receptor para dados fora de ordem.
Se apenas o tempo limite do pacote 7 expirar, seu remetente poderá substituir o pacote 7 sem reenviar os pacotes reconhecidos com sucesso.
Retorno cíclico dos números de sequência
O retorno cíclico dos números de sequência reutiliza o menor número após o maior valor em um espaço de sequência finito, exigindo regras de comparação cíclica.
Após o TCP usar todos os 2^32 valores de bytes, os números se repetem mesmo que a conexão continue transportando dados.
Retransmissão rápida
A retransmissão rápida reenvia o segmento TCP suspeito de estar ausente após três ACKs duplicados no algoritmo básico, sem esperar a expiração do tempo limite.
Segmentos posteriores que chegam após uma lacuna fornecem uma resposta que permite ao remetente agir antes da expiração de seu temporizador.
RTT amostral (SampleRTT)
SampleRTT é um intervalo medido desde o envio de dados até o recebimento de um ACK que os abrange, desde que a medição do tempo não seja ambígua.
Sem marcas de tempo, um ACK que abrange dados retransmitidos não revela qual cópia provocou a resposta.
RTT estimado (EstimatedRTT)
EstimatedRTT é a estimativa suavizada de ida e volta do TCP, atualizada pela ponderação da estimativa anterior e de cada nova medição válida.
Usar peso 1/8 para uma nova amostra faz com que um ACK atrasado altere a estimativa menos do que se a substituísse completamente.

S

Segmento
Um segmento é uma unidade da camada de transporte que contém um cabeçalho de transporte e dados de aplicação, transportada dentro de um datagrama IP.
Um remetente TCP acrescenta um cabeçalho a uma parte dos bytes de um arquivo antes de passar o segmento à camada IP.
Síndrome da janela boba
A síndrome da janela boba é uma transferência ineficiente em muitos segmentos TCP minúsculos, frequentemente incentivada por escritas muito pequenas ou aumentos anunciados muito pequenos da janela.
Anunciar alguns bytes recém-liberados de cada vez pode fazer com que a sobrecarga de cabeçalho predomine sobre os dados úteis.
Socket
Um socket é uma interface de extremidade pela qual um processo de aplicação envia dados para uma rede e recebe dados dela.
Um servidor TCP mantém um socket de escuta enquanto os clientes aceitos se comunicam por sockets de conexão.
Solicitação automática de retransmissão (ARQ)
A solicitação automática de retransmissão é uma recuperação para transferência confiável que combina detecção de erros, resposta do receptor e transmissões de substituição.
Após um NAK informar um dano, o remetente usa sua cópia armazenada do pacote para fazer outra transmissão.
Soma de verificação da internet
A soma de verificação da internet é o complemento bit a bit de uma soma em complemento de um de palavras de 16 bits, após o transporte circular, usada para detectar erros de transmissão.
Um hospedeiro receptor inclui a soma de verificação na soma com transporte circular e verifica se o resultado é composto apenas de uns.
Sondagem de janela zero
Uma sondagem de janela zero é uma pequena transmissão do remetente que solicita a janela atual do receptor enquanto o envio normal de novos dados está pausado.
A sondagem permite que um remetente descubra espaço reaberto se a atualização anterior de janela do receptor tiver sido perdida.

T

Tamanho máximo de segmento (MSS)
O tamanho máximo de segmento é a maior carga útil de dados de aplicação anunciada para segmentos TCP, excluindo os cabeçalhos de transporte e de rede.
Um datagrama IPv4 de 1500 bytes com dois cabeçalhos de 20 bytes deixa 1460 bytes para dados de aplicação.
Tempo limite de retransmissão
Um tempo limite de retransmissão é um intervalo de espera cuja expiração aciona outra transmissão quando a confirmação esperada não chegou.
Um pacote de dados perdido não produz resposta, mas a expiração do tempo limite ainda dá ao remetente um motivo para tentar novamente.
Tempo máximo de vida de um segmento (MSL)
O tempo máximo de vida de um segmento é um limite superior usado para analisar por quanto tempo um segmento TCP pode permanecer na rede antes de expirar.
TIME_WAIT usa o dobro do MSL para permitir que o tráfego antigo da conexão expire e que o ACK final seja repetido.
Transferência confiável de dados
A transferência confiável de dados entrega dados de aplicação corretos em ordem, sem perdas nem duplicatas, usando recuperação acima de um canal não confiável.
Um pacote de substituição corrige uma falha de transmissão sem criar uma segunda cópia nos dados entregues.
Transmissão em pipeline
A transmissão em pipeline permite que vários pacotes de dados permaneçam não reconhecidos ao mesmo tempo, usando o enlace enquanto pacotes anteriores aguardam resposta.
Um remetente pode enviar um segundo pacote antes que o ACK do primeiro complete sua ida e volta.
Transporte circular de vai um
O transporte circular de vai um soma qualquer vai um além do bit mais significativo de uma palavra de volta às suas posições menos significativas durante a soma em complemento de um.
Somar FFFF e 0001 resulta em 10000 antes do transporte circular e depois em 0001 após o vai um ser somado de volta.

U

Utilização do remetente
A utilização do remetente é a fração do tempo decorrido durante a qual um remetente está efetivamente colocando bits de pacotes em seu enlace de saída.
Uma utilização de 0,1 significa que o remetente transmite durante um décimo do tempo medido e espera durante o restante.

Sobre esta aula

Por StudeliRelatar um erro

Crie seus próprios Materiais de Estudo

Transforme suas anotações, slides e documentos em Guias de Estudo, Questões de Prática, Flashcards e mais 6 ferramentas.

Começar