TTL do pacote IP, como funciona e por que traceroute usa

TTL (Time to Live), o campo de 8 bits que conta saltos, valores padrão por SO (64 Linux, 128 Windows) e como o traceroute usa o TTL para mapear rotas.

TTL (Time to Live) é o campo de 8 bits no cabeçalho IPv4 que determina quantos roteadores um pacote pode atravessar antes de ser descartado. Peterson & Davie explicam por que o nome "Time to Live" é enganoso: na prática, não conta tempo, conta saltos (hops). Esse detalhe é a base de como o traceroute funciona. Este artigo explica o TTL campo por campo, os valores padrão por sistema operacional, por que pacotes em loop seriam problematicos, e como o traceroute explora o TTL para mapear cada roteador no caminho.

Neste artigo

  1. O que é o TTL do pacote IP: campo e função
  2. Valores de TTL por sistema operacional
  3. Como o TTL decrementa a cada roteador
  4. ICMP Time Exceeded: o que acontece quando TTL chega a zero
  5. Como o traceroute usa o TTL para mapear a rota
  6. Lendo a saída do traceroute no Brasil
  7. Impacto operacional do TTL em redes corporativas
  8. TTL no header IPv4: posição e relação com outros campos
  9. Como interpretar a saída do traceroute
  10. Traceroute de rotas típicas no Brasil
  11. TTL e segurança: fingerprinting e ataques
  12. TTL no DNS: um conceito diferente com o mesmo nome
  13. Ferramentas avançadas de traceroute
  14. Perguntas frequentes

O que é o TTL do pacote IP: campo e função

O cabeçalho IPv4 tem 14 campos em 20 bytes. Um deles, no offset 8, é o campo TTL de 8 bits. Valores possíveis: 0 a 255. A função original, descrita na RFC 791 de Jon Postel (setembro 1981), era limitar o tempo de vida do pacote em segundos: cada roteador devia decrementar o TTL pela quantidade de tempo que o pacote ficou na fila.

Na prática, isso nunca funcionou como especificado. A maioria dos roteadores processava pacotes em microssegundos, muito menos que 1 segundo. O TTL virou, na prática, um contador de saltos.

"Como era raro que um pacote ficasse por 1 segundo em um roteador, e nem todos os roteadores tinham acesso a um relógio em comum, a maioria dos roteadores simplesmente decrementava o TTL em 1 quando encaminhava o pacote. Assim, ele tornou-se mais um contador de hops do que um temporizador."

Larry L. Peterson, Bruce S. Davie, Redes de computadores: uma abordagem de sistemas, 5a edição, p. 128 (Elsevier, 2013)

O IPv6 renomeou o campo. No cabeçalho IPv6 (RFC 8200), o campo equivalente chama-se "Hop Limit" (Limite de Saltos) e é explicitamente definido como contador de hops, eliminando a ambiguidade.

Valores de TTL por sistema operacional

O TTL inicial de um pacote é escolhido pelo sistema operacional do remetente. Esse valor padrão é útil para estimar quantos hops um pacote percorreu: se você recebe um pacote com TTL 119, o remetente provavelmente usou TTL inicial 128 (Windows), e o pacote passou por 9 roteadores.

TTL inicial padrão por sistema operacional e equipamento
Sistema / Equipamento TTL inicial padrão Observação
Linux (kernel padrão) 64 Configurável em /proc/sys/net/ipv4/ip_default_ttl
Windows 10 / 11 128 Registro: HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\DefaultTTL
macOS / iOS 64 sysctl net.inet.ip.ttl
Android 64 Herda configuração do kernel Linux
Cisco IOS (routers) 255 Valor máximo. Típico em equipamentos de rede ativos.
FreeBSD / OpenBSD 64 sysctl net.inet.ip.ttl
Solaris 255 ndd /dev/ip ip_def_ttl

Como o TTL decrementa a cada roteador

Cada roteador que encaminha um pacote IP executa três ações obrigatórias: ler o TTL do cabeçalho, decrementar em 1, e verificar se o resultado é zero. Se zero: descartar o pacote e enviar ICMP Time Exceeded de volta ao remetente. Se maior que zero: atualizar o Header Checksum (porque o TTL mudou) e encaminhar ao próximo salto.

Diagrama do TTL decrementando a cada roteador no caminho de um pacote IP, com geração de ICMP Time Exceeded quando atinge zero
O TTL decrementa em 1 a cada roteador. Quando chega a 0, o roteador descarta o pacote e envia ICMP Time Exceeded de volta ao remetente com seu próprio endereço IP no campo de origem.

"A mensagem TIME EXCEEDED é enviada quando um pacote é descartado porque seu contador chegou a zero. Esse evento é um sintoma de que os pacotes estão entrando em loop, de que há um enorme congestionamento ou de que estão sendo definidos valores muito baixos para o timer."

Andrew S. Tanenbaum, Redes de computadores, 4a edição, p. 346 (Campus, 2004)

ICMP Time Exceeded: o que acontece quando TTL chega a zero

Quando um roteador recebe um pacote com TTL=1 e precisa encaminhar (o que decrementaria para 0), ele descarta o pacote e envia um ICMP Type 11 (Time Exceeded) de volta ao endereço IP de origem do pacote descartado. O ICMP Time Exceeded inclui no payload os primeiros 28 bytes do pacote original (header IP + 8 bytes do payload), o que permite ao traceroute identificar a qual probe cada resposta pertence.

Tipos de mensagem ICMP relacionados ao TTL
Tipo ICMP Código Significado Gerado por
11 (Time Exceeded) 0 TTL chegou a zero durante trânsito Roteador intermediário
11 (Time Exceeded) 1 Tempo excedido na remontagem de fragmentos Host de destino
3 (Dest. Unreachable) vários Destino inacessível (rede, host, porta, protocolo) Roteador ou host
0 (Echo Reply) 0 Resposta ao ping (pacote chegou ao destino) Host de destino

Como o traceroute usa o TTL para mapear a rota

O traceroute (tracert no Windows) é um dos diagnósticos de rede mais úteis. Seu funcionamento é engenhoso: em vez de usar um TTL normal, ele envia pacotes com TTL=1, TTL=2, TTL=3... e coleta os ICMP Time Exceeded de cada roteador no caminho. Teste direto no navegador com a ferramenta Traceroute deste site, sem precisar abrir terminal.

  1. Traceroute envia 3 pacotes com TTL=1. O primeiro roteador os descarta e responde com ICMP Time Exceeded. O traceroute registra o IP e o tempo de resposta desse roteador (hop 1).
  2. Traceroute envia 3 pacotes com TTL=2. O primeiro roteador decrementa para 1 e encaminha. O segundo roteador decrementa para 0, descarta e responde. Hop 2 mapeado.
  3. O processo continua incrementando o TTL até o pacote chegar ao destino final. O destino responde com ICMP Echo Reply (Unix/Linux por padrão usa UDP com porta alta; Windows usa ICMP Echo; ambos funcionam).
  4. O traceroute monta a lista de hops com IP, hostname (via DNS reverso) e RTT de cada salto.

Lendo a saída do traceroute no Brasil

Uma saída típica de traceroute de um usuário em São Paulo para um servidor nos EUA mostra hops locais (192.168.x.x, 100.64.x.x), hops do provedor (geralmente com nome como gru-b13-link.telia.com indicando GRU = Guarulhos), e hops internacionais cruzando o Atlântico ou o Pacific.

Interpretando cada campo da saída do traceroute
Campo na saída O que significa Exemplo
Número do hop Posição do roteador no caminho (= TTL inicial usado) 1, 2, 3...
Hostname / IP Endereço IP do roteador que enviou o ICMP Time Exceeded 192.168.1.1, 189.40.x.x
RTT (ms) x3 Tempo de ida e volta de cada um dos 3 pacotes enviados por hop 1.2 ms, 1.5 ms, 1.3 ms
* * * Timeout: roteador não respondeu (bloqueou ICMP ou descartou silenciosamente) * * *
!X (vários codigos) Erro específico: !N=rede inalcançável, !H=host, !P=protocolo, !F=fragmentação proibida !H significa host unreachable

Hops com * * * não significam necessariamente falha na rota. Muitos roteadores de provedores configuram rate limiting em respostas ICMP ou bloqueiam ICMP para reduzir carga. O pacote ainda passa por eles, mas a resposta não volta. Se o traceroute termina normalmente no destino, hops intermediários com * são geralmente inofensivos.

Impacto operacional do TTL em redes corporativas

Em ambientes corporativos, o TTL tem implicações operacionais concretas além do diagnóstico com traceroute. Alguns cenários relevantes:

TTL em redes SD-WAN: Soluções SD-WAN (Software-Defined Wide Area Network) como Cisco Viptela, VMware SDWAN (Velocloud) e Fortinet SD-WAN populares em empresas brasileiras criam túneis VPN sobrepostos sobre links de internet. Nesses ambientes, o TTL real que o pacote enfrenta pode ser diferente do esperado: o túnel encapsula o pacote original, e o TTL do túnel é decrementado, não o TTL do pacote interno. O traceroute pelo túnel SD-WAN muitas vezes mostra apenas os endpoints do túnel, não os hops intermediários do ISP.

TTL e Load Balancing: Roteadores com ECMP (Equal-Cost Multi-Path) distribuem pacotes por múltiplos caminhos. Um traceroute de uma fonte para um destino pode mostrar caminhos diferentes a cada execução, porque os três probes de cada TTL podem ser distribuídos por caminhos distintos. O MTR resolve parcialmente esse problema enviando probes repetidos para o mesmo hop.

TTL em aplicações de latência crítica: Em redes financeiras de alta frequência (como as que conectam algoritmos de trading ao B3 - Bolsa de Valores de São Paulo), cada microsegundo de latência importa. Engenheiros dessas redes usam traceroutes para verificar que o caminho entre o data center do cliente e a B3 usa a rota de menor latência, sem desvios desnecessários. O TTL é a ferramenta para mapear esses caminhos e garantir que o network path é o esperado.

TTL no header IPv4: posição e relação com outros campos

O campo TTL ocupa o byte 9 (offset 8) do header IPv4, que tem 20 bytes no formato mínimo. O layout completo do header ajuda a entender como o TTL interage com outros campos de controle do IP:

Campos do header IPv4 e suas posições
Offset (bytes) Campo Tamanho Função
0 Version + IHL 1 byte Versão IP (4) e comprimento do header em palavras de 32 bits
1 DSCP / ECN 1 byte Qualidade de serviço (QoS) e notificação de congestionamento
2-3 Total Length 2 bytes Comprimento total do datagrama IP (header + dados) em bytes
4-5 Identification 2 bytes ID para montagem de fragmentos
6-7 Flags + Fragment Offset 2 bytes Controle de fragmentação (DF, MF) e posição do fragmento
8 TTL 1 byte Contador de saltos: decrementado a cada roteador
9 Protocol 1 byte Protocolo do payload: 1=ICMP, 6=TCP, 17=UDP, 89=OSPF
10-11 Header Checksum 2 bytes Checksum do header IP (recalculado por cada roteador ao decrementar TTL)
12-15 Source IP Address 4 bytes Endereço IP de origem
16-19 Destination IP Address 4 bytes Endereço IP de destino

Um detalhe importante: quando o roteador decrementa o TTL, ele precisa recalcular o Header Checksum. O checksum do header IP cobre todos os campos do header, incluindo o TTL. Isso adiciona processamento em cada salto, o que foi identificado como overhead desnecessário no IPv6: o IPv6 eliminou o checksum do header completamente, delegando a verificação de integridade ao TCP/UDP/ICMPv6. No IPv6, o campo equivalente ao TTL chama-se "Hop Limit" e tem a mesma função mecânica.

Como interpretar a saída do traceroute

Um traceroute do Brasil para um servidor nos EUA tipicamente mostra entre 10 e 20 hops. Aprender a ler a saída é uma habilidade prática que economiza horas de diagnóstico.

Cada linha do traceroute representa um roteador no caminho. Os três tempos (em ms) são as latências de três probes distintos enviados com o mesmo TTL. Variações entre eles indicam jitter (variação de latência). Um aumento repentino de latência em um hop específico indica que o gargalo está naquele roteador ou no link que o precede.

Interpretação de saídas comuns do traceroute
Padrão observado O que significa O que fazer
* * * (três asteriscos) O roteador não enviou ICMP Time Exceeded ou filtrou ICMP. Não significa que o pacote foi descartado. Continuar: se hops seguintes respondem, o roteador simplesmente não responde a ICMP mas encaminha tráfego normalmente.
Latência salta de 20ms para 180ms num hop Link de alta latência (ex: transatlântico, link satélite, gargalo de capacidade) Verificar se latência cai novamente após o hop. Se sim, o hop em si é lento mas o caminho continua. Se não, há gargalo.
Mesmo IP repetido várias vezes Loop de roteamento: pacote circulando entre dois roteadores Investigar tabela de roteamento nos roteadores envolvidos. Rota incorreta configurada.
Traceroute para antes de chegar ao destino Firewall bloqueando ICMP ou UDP ao destino, ou destino inacessível Usar tcptraceroute (porta TCP 80 ou 443) para contornar filtros ICMP.
IPs privados (10.x, 192.168.x) no meio do traceroute Roteadores internos do ISP que não fazem NAT nas respostas ICMP Normal. São roteadores internos do provedor; ignorar para fins de diagnóstico externo.

Traceroute de rotas típicas no Brasil

Um traceroute de São Paulo para o PTT-SP (ix.br) ou para servidores nos EUA mostra a infraestrutura de internet brasileira em ação. Analisar rotas reais é mais instrutivo que exemplos artificiais.

Rota típica de um usuário residencial Claro (AS28573) para o Google (AS15169) via PTT-SP:

Exemplo de traceroute São Paulo (Claro) para Google DNS (8.8.8.8)
Hop IP Latência Descrição
1 192.168.0.1 1 ms Gateway do roteador residencial (rede privada RFC 1918)
2 100.65.x.x 5 ms CGNAT da Claro (bloco RFC 6598 - Carrier Grade NAT)
3-4 177.x.x.x 8-12 ms Rede de acesso Claro SP (backbone interno)
5 187.x.x.x 10 ms Roteador de borda Claro no IX.br PTT-SP
6 209.85.x.x 11 ms Google (AS15169) recebe o tráfego pelo IX.br - sessão eBGP
7 8.8.8.8 12 ms Destino: Google Public DNS no PoP de São Paulo

A latência total de ~12ms do Brasil para o 8.8.8.8 é possível porque o Google tem servidores no PTT-SP de São Paulo, tornando o tráfego puramente nacional. Sem o IX.br e o peering Google-Claro, esse tráfego teria que ir para os EUA (latência de 150-200ms). Esse é o valor prático dos pontos de troca de tráfego como o IX.br: mantém latências baixas para serviços populares.

TTL e segurança: fingerprinting e ataques

O valor inicial do TTL revela o sistema operacional do remetente, uma técnica chamada OS fingerprinting passivo. Ferramentas como p0f e Nmap analisam o TTL de pacotes capturados para identificar o SO sem enviar nenhum probe ativo. Isso é usado tanto por defensores (inventário de ativos) quanto por atacantes (reconnaissance).

TTL como vetor de ataque: O ataque de TTL expiration injection explora roteadores que implementam ICMP Time Exceeded de forma previsível. Em redes MPLS, o valor do TTL pode ser copiado do IP para o header MPLS (modo pipe) ou decrementado a cada hop MPLS (modo uniform), o que afeta como o traceroute vê os hops internos do ISP. Provedores brasileiros tipicamente usam o modo pipe, ocultando a topologia interna do traceroute externo. Uma técnica relacionada, o TTL manipulation, é uma forma de evasão de IDS/IPS: o atacante envia um pacote "real" com TTL suficiente para chegar ao destino e um pacote "ruído" calibrado para morrer exatamente no sensor de detecção, criando uma sequência de bytes que o IDS vê como inofensiva mas o destino reconstrói como maliciosa. O ataque foi documentado em 1998 por Ptacek e Newsham no paper "Insertion, Evasion, and Denial of Service: Eluding Network Intrusion Detection".

TTL na era de CDNs e nuvem: Com o uso de CDNs (Content Delivery Networks) como Cloudflare, Fastly e AWS CloudFront, os traceroutes para grandes sites frequentemente terminam em pontos de presença (PoPs) geograficamente próximos ao usuário, não nos servidores de origem. Um traceroute do Brasil para cloudflare.com geralmente termina num PoP em São Paulo ou Rio de Janeiro, com latência abaixo de 5ms. O IP retornado é do PoP da CDN, não do servidor original.

TTL no DNS: um conceito diferente com o mesmo nome

O campo TTL aparece em dois contextos de rede completamente diferentes: no header IP (contador de saltos) e nos registros DNS (tempo de vida em cache). É importante não confundir os dois.

O TTL de DNS (definido no RFC 1035) é um valor em segundos que indica por quanto tempo um registro DNS pode ser armazenado em cache por resolvers recursivos e clientes. Um registro A com TTL=3600 pode ficar em cache por 1 hora; depois disso, o resolver deve consultar o servidor autoritativo novamente. TTL de DNS afeta a propagação de mudanças: se você muda o IP de um domínio, clientes com cache antigo continuarão usando o IP velho até o TTL expirar.

TTL no IP vs TTL no DNS: diferenças fundamentais
Aspecto TTL no Header IP TTL no Registro DNS
Unidade Número de roteadores (saltos) Segundos
Tamanho do campo 8 bits (0-255) 32 bits (0-2147483647)
Decrementado por Cada roteador no caminho Automaticamente pelo tempo transcorrido
Quando atinge zero Pacote descartado, ICMP Time Exceeded enviado Registro removido do cache, nova consulta necessária
Quem define Sistema operacional da origem (valor inicial) Administrador do domínio no arquivo de zona DNS
RFC RFC 791 (IPv4), RFC 8200 (IPv6 como Hop Limit) RFC 1035

Valores típicos de TTL DNS no Brasil: grandes portais como Globo.com e UOL usam TTLs de 60-300 segundos para flexibilidade em mudanças. CDNs como Cloudflare recomendam TTL de 300 segundos (5 minutos) em operação normal. Durante manutenção planejada (ex: troca de provedor de hospedagem), a prática é reduzir o TTL para 60 segundos com 24-48 horas de antecedência, fazer a mudança, e depois restaurar o TTL alto.

Ferramentas avançadas de traceroute

Além do traceroute e tracert clássicos, diversas ferramentas expandem as capacidades de mapeamento de rotas:

Ferramentas de traceroute e suas diferenças
Ferramenta Protocolo Sistema Vantagem
traceroute UDP (portas altas) Linux/macOS Padrão, funciona na maioria dos casos
tracert ICMP Echo Request Windows Simples, disponível em qualquer Windows
traceroute -I ICMP Linux Melhor penetração em firewalls que bloqueiam UDP
tcptraceroute TCP SYN Linux Atravessa firewalls que permitem HTTP/HTTPS
mtr (MTR) ICMP/UDP Linux/macOS Mostra latência e perda de pacotes em tempo real
pathping ICMP Windows Combina ping e tracert, mostra perda por hop

O MTR (Matt's Traceroute) é a ferramenta preferida para diagnóstico de qualidade de link no Brasil. Ao contrário do traceroute que faz um único sweep, o MTR envia probes continuamente e exibe latência mínima, média e máxima mais perda de pacotes em cada hop, o que permite identificar instabilidade intermitente que um traceroute simples perderia.

"O campo TTL do IP foi renomeado de 'tempo de vida' para 'contador de saltos' no IPv6, refletindo com mais precisão sua função real. Ele não conta segundos, mas sim o número de roteadores pelos quais o pacote passou."

Larry L. Peterson e Bruce S. Davie, Redes de computadores: uma abordagem de sistemas, 5a edição, p. 128 (Elsevier, 2013)

Perguntas frequentes sobre TTL do pacote IP

O que é TTL em redes de computadores?

TTL (Time to Live) é um campo de 8 bits no cabeçalho IPv4 que define quantos roteadores (hops) um pacote pode atravessar antes de ser descartado. O valor inicial é configurado pelo sistema operacional do remetente (64 no Linux, 128 no Windows). Cada roteador que encaminha o pacote decrementa o TTL em 1. Quando chega a 0, o roteador descarta o pacote e envia ICMP Time Exceeded de volta ao remetente.

Qual é o TTL padrão no Windows e no Linux?

No Windows 10/11, o TTL inicial padrão é 128. No Linux, é 64 (configurável em /proc/sys/net/ipv4/ip_default_ttl). Em equipamentos Cisco IOS, o padrão é 255. A diferença de TTL inicial permite estimar o sistema operacional do remetente pelo valor recebido em capturas de tráfego.

Como o traceroute usa o TTL?

O traceroute envia pacotes com TTL=1, TTL=2, TTL=3... sequencialmente. Cada roteador no caminho descarta o pacote quando TTL chega a 0 e responde com ICMP Time Exceeded, revelando seu endereço IP e tempo de resposta. O traceroute coleta essas respostas para montar um mapa de todos os roteadores entre o remetente e o destino.

Por que alguns hops no traceroute aparecem como * * *?

O asterisco indica que o roteador naquele hop não enviou uma resposta ICMP Time Exceeded. Isso acontece quando o roteador bloqueia respostas ICMP (por política de segurança ou rate limiting), não quando o pacote não passou por ali. Se os hops seguintes aparecem normalmente e o destino final responde, o pacote atravessou o roteador silencioso sem problema.

O que é ICMP Time Exceeded?

ICMP Time Exceeded é uma mensagem de controle (ICMP Type 11, Code 0) enviada por um roteador quando descarta um pacote cujo TTL decrementou para zero. A mensagem inclui o IP do roteador como origem e os primeiros 28 bytes do pacote descartado, permitindo que o remetente identifique qual probe gerou a resposta.

TTL do IP e TTL do DNS são a mesma coisa?

Não. O TTL do IP (contador de hops no cabeçalho IPv4) é completamente diferente do TTL do DNS (tempo em segundos que um registro DNS pode ser cacheado). A coincidência de nome causa confusão. No IP, TTL baixo significa pacote descartado mais cedo. No DNS, TTL baixo significa que resolvers consultam o servidor com mais frequência.

Como descobrir o TTL de um pacote recebido?

No Linux, o comando ping -c 10 8.8.8.8 exibe o TTL de cada resposta recebida na coluna "ttl=". No Windows, ping google.com exibe TTL na saída. Para captura detalhada, use o Wireshark: filtre por ip.ttl para ver o valor exato de qualquer pacote capturado.

Quantos hops tem uma conexão típica no Brasil para os EUA?

Uma conexão de São Paulo para servidores nos EUA tipicamente passa por 10 a 18 hops: 2-3 hops locais (rede doméstica e CPE do provedor), 3-5 hops na rede do provedor brasileiro até o ponto de saída internacional, e 5-8 hops na rede americana. O PTT-SP do IX.br reduz hops para tráfego nacional, com muitos provedores se conectando localmente em vez de rotear via EUA.

É possível alterar o TTL inicial no Windows?

Sim, via registro do Windows. A chave é HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters, valor DefaultTTL (DWORD). O padrão é 128. Alterar para 64 faz o sistema parecer Linux para análise de fingerprinting passivo. Requer reinicialização para ter efeito. Não afeta segurança na prática para usuários normais.

O IPv6 tem TTL?

O IPv6 tem um campo equivalente chamado "Hop Limit" no cabeçalho, ocupando o mesmo espaço de 8 bits. O nome Hop Limit é mais preciso que TTL: deixa claro que é um contador de saltos, não de tempo. O comportamento é idêntico: cada roteador decrementa em 1, e quando chega a 0, descarta com ICMPv6 Time Exceeded.

Qual TTL usar para evitar descarte prematuro de pacotes?

Na internet pública, 64 saltos é mais que suficiente: raramente uma rota usa mais de 30 hops. O valor 255 usado por equipamentos Cisco garante margem máxima, mas não é necessário para hosts normais. Se um pacote for descartado por TTL expirado antes de chegar ao destino (o que é incomum em rotas normais), o traceroute ajuda a identificar em qual hop ocorre e se há loop de roteamento.

Leituras Relacionadas