27 pontos por GN⁺ 2025-11-09 | 1 comentários | Compartilhar no WhatsApp
  • Uma página interativa que visualiza em tempo real o caminho que os pacotes do usuário percorrem pela internet até chegar ao servidor de um site
  • O programa de traceroute próprio ktr usa o valor TTL de pacotes ICMP para coletar informações de cada salto de rede
  • O site funciona mesmo sem JavaScript, e o servidor reflete os resultados do traceroute no HTML em formato de streaming
  • Para analisar a rota, ele usa dados de WHOIS e PeeringDB para mostrar o sistema autônomo (AS) e informações da empresa à qual cada IP pertence
  • Ao combinar traceroute com a estrutura da internet baseada em BGP, ele mostra que a internet é um conjunto de redes formado por relações de peering entre empresas

A jornada percorrida pelo seu pacote

  • O traceroute no topo da página mostra o caminho do pacote do computador do usuário até o servidor
    • Ele passa em sequência por redes como roteadores, ISP, Amazon, NTT Global IP Network e Hetzner
    • Alguns trechos aparecem como “(no response)”, o que ocorre por causa de servidores que não respondem
  • Dentro da rede da Hetzner, ele passa por vários roteadores até chegar ao servidor final
  • O endereço IP 213.239.252.10 aparece como core0.fra.hetzner.com por meio de uma consulta reversa de DNS

Behind the Scenes

  • Quando o site recebe a solicitação do usuário, ele executa um traceroute no servidor e envia o resultado em tempo real
  • O traceroute usa o protocolo ICMP e coleta as respostas de cada salto aumentando o valor de TTL (Time To Live) em 1 a cada tentativa
  • Quando o TTL chega a 0, o roteador correspondente retorna uma mensagem de erro, permitindo rastrear o caminho percorrido pelo pacote
  • O ktr transmite o resultado do traceroute em streaming enquanto consulta ao mesmo tempo as informações de IP, ASN e rede proprietária de cada salto

Frontend Fun

  • Funciona mesmo sem JavaScript, e o navegador apenas o percebe como uma página carregando lentamente
  • O servidor mantém a conexão HTTP aberta e insere os resultados do traceroute no HTML de forma sequencial
  • A cada atualização, ele implementa o efeito de atualização em tempo real inserindo blocos de CSS para esconder os resultados anteriores

Front to Back, Back to Front

  • Na prática, o site executa um traceroute do servidor até o IP do usuário e exibe o resultado em ordem inversa
  • Isso é um “reverse traceroute”: embora os caminhos de ida e volta não sejam totalmente idênticos, ele mostra uma rota geralmente parecida

Redes e sistemas autônomos (AS)

  • A internet é uma rede de redes empresariais chamada sistemas autônomos (Autonomous System, AS)
  • Cada AS tem um ASN (Autonomous System Number) exclusivo e troca tráfego com outros por meio de peering
  • A internet é um conjunto de redes pertencentes a empresas, não a indivíduos, e as conexões são determinadas por contratos financeiros e procedimentos administrativos
  • É possível solicitar um ASN por meio de um dos 5 Registros Regionais da Internet (RIRs)

WHOIS e PeeringDB

  • Para encontrar o AS ao qual cada IP do traceroute pertence, ele usa o protocolo WHOIS e o banco de dados PeeringDB
  • O WHOIS tem uma estrutura simples: após abrir uma conexão TCP e enviar uma consulta, o servidor retorna as informações
  • Como cada servidor usa nomes de campos e formatos diferentes, o parser foi implementado como um simulador simples, mais próximo da forma como uma pessoa lê
  • O PeeringDB fornece informações empresariais sobre cerca de um terço de todos os AS

BGP (Border Gateway Protocol)

  • O BGP é o protocolo central que define a forma da internet, trocando informações de rotas entre AS
  • Os border routers mantêm uma tabela de roteamento BGP, armazenando a lista de ASNs de cada rota
  • Quando dois AS estabelecem peering, seus roteadores criam uma sessão BGP e trocam anúncios de rota (route advertisements)
  • Entre várias rotas possíveis, os roteadores escolhem a mais curta ou a de maior preferência para encaminhar os pacotes

A história do BGP

  • Os experimentos de rede iniciados na ARPANET em 1969 levaram, em 1989, ao RFC 1105 da Cisco e da IBM, marcando o surgimento do BGP v1
  • Depois vieram o BGP v2 (1990) e o v4 (1994), sendo o v4 usado até hoje
  • O BGP se consolidou como o protocolo padrão que determina os caminhos de interconexão entre todas as redes da internet

A relação entre traceroute e BGP

  • Exemplo de rota: AS16509 → AS2914 → AS24940
    • Amazon (AS16509) → NTT Global IP Network (AS2914) → Hetzner (AS24940)
  • Mesmo dentro do mesmo ASN, pode haver vários saltos, tratados por protocolos de roteamento internos ou rotas fixas
  • As relações de peering entre AS determinam a alcançabilidade real na internet

Recap

  • O site executa um traceroute até o IP do usuário e transmite o resultado por stream HTTP
  • O traceroute usa o TTL de pacotes ICMP para visualizar a rota entre roteadores
  • Cada roteador pertence a um sistema autônomo (AS) e se conecta aos demais por meio do BGP
  • As relações de peering determinam a alcançabilidade e a estrutura da internet

Epílogo

  • O autor sentiu que faltava compreensão sobre a estrutura da internet e criou um texto interativo educacional centrado em protocolos
  • Em vez de esperar por um grande projeto perfeitamente acabado, escolheu publicar algo menor, mas pronto
  • O trabalho foi concluído com o incentivo da comunidade Hack Club e aproveita um programa de traceroute open source
  • Com a mensagem de que “mesmo algo pequeno, se estiver concluído, é melhor”, ele espera que isso permaneça como um conteúdo web sustentável

1 comentários

 
GN⁺ 2025-11-09
Comentários no Hacker News
  • Acho que essa funcionalidade de reverse traceroute ainda é útil Mas, na prática, mesmo quando o caminho de AS é o mesmo, os pontos de peering quase sempre são diferentes A maioria dos AS usa hot-potato routing, então entrega os pacotes no ponto de peering mais próximo da origem do tráfego Mesmo usando cold-potato, continua sendo assimétrico. E, quando o comprimento do AS-path é igual, a política de hot-potato também pode fazer com que outro caminho seja escolhido (edição: corrigi a confusão entre hot/cold)

    • Já rodei traceroute e reverse traceroute várias vezes, e na maior parte das vezes o caminho de AS saiu parecido Só que, em alguns casos, o traceroute mostrava mais do caminho interno do ISP No geral, você está certo, e depois quero explicar com mais detalhes a diferença entre roteamento hot-potato vs cold-potato De qualquer forma, acho que só esse resultado de reverse traceroute já basta para explicar a estrutura da internet
    • A propósito, o que você descreveu é justamente hot-potato routing É a estrutura em que cada AS entrega o pacote o mais rápido possível Pode parecer injusto, mas é uma escolha racional, já que não se conhece o caminho detalhado dentro do AS de destino Por exemplo, se você tem rede em Berlim e Hamburgo, e a outra parte também faz peering nas duas cidades, entregar no ponto mais próximo é a forma de evitar idas e vindas desnecessárias
  • Foi interessante a parte que explica por que o traceroute carrega linha por linha de baixo para cima Sem JavaScript, usando inserções periódicas de blocos CSS para esconder o estado anterior — realmente bem hacker e criativo

    • Mesmo sem JavaScript, dá para implementar streaming de HTML fora de ordem com Declarative Shadow DOM Os exemplos e a explicação estão bem organizados neste post de blog
  • A frase “This is not my beautiful website.” pareceu espirituosa

    • A resposta com “This is not my beautiful home-page.” também foi muito boa
  • Se você ainda não testou,

    tracepath -m60 bad.horse
    

    e depois

    openssl s_client -connect signed.bad.horse:443 -servername signed.bad.horse
    

    recomendo executar

    • Muito legal! Parece uma homenagem geek ao Dr. Horrible O resultado do tracepath começa em “bad.horse” e segue com coisas como “he.rides.across.the.nation”, então fica bem divertido
    • Também tem isto
      ssh funky.nondeterministic.computer
      
    • E também vale tentar
      ssh watch.ascii.theater
      
  • Disseram que esse projeto voltou para a página principal do Hacker News, e o servidor engasgou por um tempo Lexi avisou para “voltar amanhã e conferir de novo”

    • Agora parece estar melhor. Disseram que adicionaram um pouco mais de concorrência (concurrency) e que a lição para a próxima vez é usar Tokio
  • Pelo título, achei que fosse aparecer uma música do Talking Heads

    • O verso “letting the days go by” veio automaticamente à cabeça
    • Se olhar o HTML, talvez haja algo escondido :)
  • O link para “Once in a Lifetime” ficou gravado no meu cérebro Só de ver o título, aquela linha de baixo já começa a tocar automaticamente

    • Eu também senti imediatamente uma crise existencial chegando
  • Testei por conta própria e descobri que minha conexão principal com a internet caiu e houve troca para o link de backup Houve uma queda de energia hoje, e percebi isso graças a essa ferramenta. Foi bem útil

    • Você literalmente encontrou uma rota menos percorrida (route less travelled)
  • Às vezes, a informação do topo “You are here” aparece assim

    Host               ASN   Network         Region
    123-456-789-101.static.kc.net.uk AS19905 UltraDDoS Protect    Global
    

    Mas em outras vezes aparece assim

    Host               ASN   Network         Region
    123-456-789-101.static.kc.net.uk AS12390 Kingston Communications Europe
    

    Isso fica alternando. É o mesmo IP, então fiquei curioso para entender por que o ASN muda numa proporção de 50:50. Parece aleatório

  • No começo, a página funcionava bem sem JavaScript, mas depois o HTML substituído passou a ser codificado como texto

    
     #strYQt8 { display: none; }
    
    

    Ficou quebrado desse jeito Enviei um PR com a correção no GitHub