SNI vs ALPN: análise de handshake TLS e negociação HTTP/2 em Wireshark PCAPs
Analisar SNI vs ALPN em handshakes TLS. Diagnosticar falha de negociação HTTP/2, fallback h2 vs http/1.1, extensões ClientHello, respostas ServerHello ALPN e problemas de terminação de proxy em Wireshark PCAPs.
Muitos incidentes de "HTTP/2 não funciona" são, na verdade, problemas de negociação TLS ALPN. Os usuários procuram por "TLS ALPN pcap", "HTTP2 fallback para HTTP/1.1", "ALPN h2 não negociado", "extensão ClientHello ALPN", "Protocolo selecionado ServerHello" e "por que meu navegador está usando HTTP/1.1" quando um endpoint deve suportar HTTP/2, mas o tráfego cai.
A cirurgia PCAP é útil porque a evidência ALPN reside no handshake TLS. Se a captura incluir ClientHello e ServerHello, muitas vezes você poderá provar se o cliente ofereceu h2, se o servidor o selecionou, se um proxy encerrou o TLS ou se a conexão nunca teve a chance de negociar HTTP/2.
O que a ALPN faz
ALPN significa negociação de protocolo da camada de aplicação. Ele permite que o cliente e o servidor concordem com um protocolo de aplicativo durante a configuração do TLS.
Valores ALPN comuns:
h2para HTTP/2 sobre TLS.http/1.1para HTTP/1.1.- Outros identificadores de protocolo para sistemas especializados.
Se o cliente não oferecer h2, o servidor não poderá selecioná-lo. Se o servidor não selecionar h2, a conexão não usará HTTP/2 mesmo se o servidor suportar HTTP/2 em outro lugar.
Sintomas comuns
As falhas do ALPN aparecem como:
- O navegador usa HTTP/1.1 em vez de HTTP/2.
- A conexão gRPC falha.
- CDN funciona, mas Origin não.
- Protocolo de downgrade de proxy reverso.
- O balanceador de carga encerra o TLS e encaminha HTTP/1.1.
- O aplicativo móvel indica erro de protocolo.
- As métricas do servidor não mostram tráfego h2.
- HTTP/2 funciona com um nome de host, mas não com outro.
Esses sintomas geralmente são depurados na camada HTTP, mas a resposta pode estar na negociação TLS.
Evidência de ClientHello
O ClientHello pode mostrar se o cliente ofereceu ALPN e quais protocolos ele anunciou.
Perguntas úteis:
- A extensão ALPN está presente?
- A oferta inclui
h2? - Também inclui
http/1.1? - O SNI está presente e correto?
- Qual versão TLS é oferecida?
- A captura é feita antes que um proxy termine o TLS?
Se h2 estiver ausente em ClientHello, o servidor não poderá escolher HTTP/2. O motivo pode ser a configuração da biblioteca cliente, a pilha TLS antiga, a opção HTTP/2 desabilitada ou um cliente proxy que abre uma nova conexão upstream.
Prova ServerHello
O lado do servidor deve selecionar um protocolo da lista ALPN do cliente.
Problemas:
- O servidor seleciona apenas
http/1.1. - O servidor omite a resposta ALPN.
- O handshake do servidor falha antes da seleção do ALPN.
- Rotas incompatíveis de certificado ou SNI para um host virtual padrão.
- O terminador TLS suporta h2 no lado público, mas não no lado upstream.
A evidência de pacote pode separar o suporte do servidor do comportamento de roteamento e proxy.
SNI e ALPN juntos
SNI e ALPN estão frequentemente conectados. O nome do host selecionado pelo SNI pode determinar quais certificados, host virtual e configurações de protocolo se aplicam.
Exemplo de falha:
- O cliente oferece
h2. - O cliente envia SNI errado.
- O servidor retorna o certificado padrão.
- O host virtual padrão não habilita HTTP/2.
- A conexão volta para
http/1.1.
Neste caso, o problema não é "HTTP/2 quebrado globalmente". É roteamento de nome de host.
Encerramento de proxy e balanceador de carga
As implantações modernas geralmente dividem o TLS:
client -> CDN or load balancer -> reverse proxy -> origin
Each segment may have different ALPN behavior. The public side may negotiate HTTP/2 while the upstream side uses HTTP/1.1. Or the reverse proxy may accept h2 from clients but downgrade to HTTP/1.1 when talking to the application.
When analyzing a pcap, identify which segment you captured. A trace on the origin server may not show the public client handshake at all.
gRPC and ALPN
gRPC usually requires HTTP/2. If ALPN does not negotiate h2, gRPC clients may fail with protocol errors, unavailable errors, or connection reset messages.
For gRPC troubleshooting, preserve:
- DNS answer.
- TCP handshake.
- TLS ClientHello.
- TLS ServerHello.
- ALPN protocol selected.
- Any TLS alert.
- First HTTP/2 frames if decrypted or visible through logs.
Even without decrypting payload, ALPN can prove whether HTTP/2 was negotiated.
Fallback is not always failure
HTTP clients may intentionally fall back to HTTP/1.1 when:
- Server does not advertise h2.
- Client policy disables HTTP/2.
- TLS version or cipher constraints are incompatible.
- Proxy strips or terminates the connection.
- ALPN extension is missing.
- A middlebox interferes with handshake.
The diagnostic question is whether fallback was expected for that route.
Debug checklist
Use this workflow:
- Capture from TCP handshake through TLS handshake.
- Confirm SNI hostname.
- Check ClientHello ALPN list.
- Confirm whether
h2is offered. - Check ServerHello selected ALPN.
- Compare certificate with SNI.
- Identify CDN, proxy, or load balancer termination.
- Compare public-side and origin-side captures if needed.
- Check whether the client library enables HTTP/2.
- Preserve the handshake when trimming the pcap.
Final diagnosis
TLS ALPN and HTTP/2 issues should be diagnosed from handshake evidence. The key facts are whether the client offered h2, whether the server selected it, whether SNI routed to the right virtual host, and whether a proxy changed protocol between network segments.
PCAP Surgery helps keep the exact handshake packets needed to prove HTTP/2 negotiation, fallback, or proxy termination behavior.
<!-- pcap-localized-evidence-foundation-v1:start -->Resposta por evidência de pacotes para “SNI vs ALPN: análise de handshake TLS e negociação HTTP/2 em Wireshark PCAPs”
A resposta direta é que label do analisador ou mensagem do aplicativo não determina causa. Comece por ponto de captura e direção, prove o último limite correto e o primeiro falho. Em “SNI vs ALPN: análise de handshake TLS e negociação HTTP/2 em Wireshark PCAPs”, outro revisor deve localizar packet, gap ou intervalo que sustenta cada frase e saber o que poderia refutá-la.
Colocar a captura no caminho
Registre client, server e proxy, load balancer, NAT ou firewall. Informe interface, local, clock, sistema e direções visíveis. Captura no client prova o que chegou ali, não que o server não enviou. Captura no server prova saída naquele ponto, não o caminho. Antes de comparar pontos, corrija clock offset e alinhe flow tuple, TCP sequence ou transaction ID.
Verifique snap length, dropped packets, offload, capture filter, ring buffer e início. Bad checksum no host pode ser offload artifact. Segmento grande pode ser GRO/TSO e não existir assim no fio. Packet ausente de arquivo limitado não vira network loss antes de provar que o ponto deveria vê-lo.
Ler limites em ordem
| Limite | Prova de sucesso | Prova de falha útil |
|---|---|---|
| Link/IP | direction, addresses e rota coerentes | ARP/NDP ausente, ICMP, MTU, assimetria |
| TCP | SYN, SYN-ACK, ACK e sequence | retransmission, RST, zero window, timeout |
| TLS | ClientHello, ServerHello e progresso | alert ou limite SNI/ALPN/certificate |
| Aplicação | request completo e response associado | status, gap ou close precoce |
| Usuário | response time ou failure window | stall ligado a limite |
Pare no primeiro limite sem sucesso. Se TCP não completa, não comece por HTTP. Se request chega ao proxy e não ao upstream, o limite está no proxy ou caminho. Se chega ao upstream sem response antes de timeout, ACK e avanço de bytes separam application delay de network loss.
Separar observação e hipótese
Observação pode ser apontada: “Client enviou até certa sequence, sender repetiu segmento três vezes e não apareceu ACK avançado neste ponto”. A hipótese é “o caminho perdeu o segmento”. Outra captura ou dropped records podem refutá-la. Para cada hipótese registre prova a favor e contrária.
Retransmission e duplicate ACK não definem culpado. Reordering, loss, capture artifact e receiver delay criam labels parecidos. Relacione direction, sequence, ACK, SACK, RTT, window e tempo da aplicação. Em DNS/DHCP alinhe transaction ID e tentativas; em HTTP request/response; em TLS direção do handshake.
Preservar original
Calcule checksum e não altere o original. Filtre, recorte e redija working copy. Registre input, transformação, hora, packet count antes/depois, checksum e razão. Após timestamp rewrite ou exclusão de packets, a cópia não suporta certas conclusões de timing ou sequence.
Troque addresses e identificadores por aliases constantes. Não remova port, direction ou length necessários. Separe o mapa secreto. Use limites de captura e export e visão geral PCAP Surgery.
QA antes de publicar
Título e resposta tratam do mesmo flow? Cada duração informa clock e pontos? Primeiro failure boundary está claro? Há alternativa? O teste muda uma variável? Original permanece? Limite a conclusão: “Este arquivo prova comportamento junto ao client no intervalo, não execução interna do server”.
O termo Semrush validado PCAP analyzer pertence somente ao produto. Este artigo não inventa volume ou KD.
<!-- pcap-localized-evidence-foundation-v1:end --><!-- multilingual-blog-closeout:start -->Resposta direta e limite de aceitação
A resposta curta para “SNI vs ALPN: análise de handshake TLS e negociação HTTP/2 em Wireshark PCAPs” é: Analisar SNI vs ALPN em handshakes TLS. Diagnosticar falha de negociação HTTP/2, fallback h2 vs http/1.1, extensões ClientHello, respostas ServerHello ALPN e problemas de terminação de proxy em Wireshark PCAPs. Trate essa frase como um resultado a verificar, não como promessa para qualquer entrada, dispositivo, projeto ou ambiente. Um resultado completo registra estado inicial, ação exata, saída visível e condição que comprova a conclusão da tarefa no PCAP Surgery.
Procedimento orientado por evidências
Comece com um caso pequeno e repetível antes de alterar um projeto completo. Registre versão do aplicativo, sistema operacional, identidade da entrada ou dispositivo, configurações relevantes e resultado esperado. Execute uma ação deliberada, preserve a primeira transição inesperada e compare com um caso conhecido quando possível. Alterar vários controles ao mesmo tempo esconde qual condição criou ou corrigiu o problema.
Ponto de controle 1: SNI vs ALPN: análise de handshake TLS e negociação HTTP/2 em Wireshark PCAPs
Converta “SNI vs ALPN: análise de handshake TLS e negociação HTTP/2 em Wireshark PCAPs” em uma declaração reproduzível de aprovação ou falha. Inclua o que deve aparecer, o que deve estar ausente e qual recuperação é segura. Preserve o projeto ou captura original até a cópia corrigida passar pelo mesmo teste.
Ponto de controle 2: Analisar SNI vs ALPN em handshakes TLS. Diagnosticar falha de negociação HTTP/2, fallback
Trate “Analisar SNI vs ALPN em handshakes TLS. Diagnosticar falha de negociação HTTP/2, fallback h2 vs http/1.1, extensões ClientHello, respostas ServerHello” como uma etapa de aceitação separada para “SNI vs ALPN: análise de handshake TLS e negociação HTTP/2 em Wireshark PCAPs”. Registre o estado antes da ação, a primeira mudança visível e o estado final. Se o resultado divergir do objetivo descrito, volte ao último ponto confirmado em vez de continuar com suposições.
Ponto de controle 3: O que a ALPN faz
Converta “O que a ALPN faz” em uma declaração reproduzível de aprovação ou falha. Inclua o que deve aparecer, o que deve estar ausente e qual recuperação é segura. Preserve o projeto ou captura original até a cópia corrigida passar pelo mesmo teste.
Ponto de controle 4: Sintomas comuns
Trate “Sintomas comuns” como uma etapa de aceitação separada para “SNI vs ALPN: análise de handshake TLS e negociação HTTP/2 em Wireshark PCAPs”. Registre o estado antes da ação, a primeira mudança visível e o estado final. Se o resultado divergir do objetivo descrito, volte ao último ponto confirmado em vez de continuar com suposições.
Ponto de controle 5: Evidência de ClientHello
Converta “Evidência de ClientHello” em uma declaração reproduzível de aprovação ou falha. Inclua o que deve aparecer, o que deve estar ausente e qual recuperação é segura. Preserve o projeto ou captura original até a cópia corrigida passar pelo mesmo teste.
Ponto de controle 6: Prova ServerHello
Trate “Prova ServerHello” como uma etapa de aceitação separada para “SNI vs ALPN: análise de handshake TLS e negociação HTTP/2 em Wireshark PCAPs”. Registre o estado antes da ação, a primeira mudança visível e o estado final. Se o resultado divergir do objetivo descrito, volte ao último ponto confirmado em vez de continuar com suposições.
Ponto de controle 7: SNI e ALPN juntos
Converta “SNI e ALPN juntos” em uma declaração reproduzível de aprovação ou falha. Inclua o que deve aparecer, o que deve estar ausente e qual recuperação é segura. Preserve o projeto ou captura original até a cópia corrigida passar pelo mesmo teste.
Ponto de controle 8: Encerramento de proxy e balanceador de carga
Trate “Encerramento de proxy e balanceador de carga” como uma etapa de aceitação separada para “SNI vs ALPN: análise de handshake TLS e negociação HTTP/2 em Wireshark PCAPs”. Registre o estado antes da ação, a primeira mudança visível e o estado final. Se o resultado divergir do objetivo descrito, volte ao último ponto confirmado em vez de continuar com suposições.
Ponto de controle 9: gRPC and ALPN
Converta “gRPC and ALPN” em uma declaração reproduzível de aprovação ou falha. Inclua o que deve aparecer, o que deve estar ausente e qual recuperação é segura. Preserve o projeto ou captura original até a cópia corrigida passar pelo mesmo teste.
Ponto de controle 10: Fallback is not always failure
Trate “Fallback is not always failure” como uma etapa de aceitação separada para “SNI vs ALPN: análise de handshake TLS e negociação HTTP/2 em Wireshark PCAPs”. Registre o estado antes da ação, a primeira mudança visível e o estado final. Se o resultado divergir do objetivo descrito, volte ao último ponto confirmado em vez de continuar com suposições.
Matriz de aceitação
| Ponto | Evidência a manter | Condição de aprovação |
|---|---|---|
| SNI vs ALPN: análise de handshake TLS e negociação HTTP/2 em Wireshark PCAPs | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| Analisar SNI vs ALPN em handshakes TLS. Diagnosticar falha de negociação HTTP/2, fallback h2 vs http/1.1, extensões Clie | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| O que a ALPN faz | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| Sintomas comuns | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| Evidência de ClientHello | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| Prova ServerHello | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
Isolamento, recuperação e entrega
Pare no primeiro limite que falhar. Preserve fonte, projeto, sessão ou captura, duplique antes de edição destrutiva e altere uma variável por experimento. Repetir um fluxo amplo depois de várias mudanças pode gerar outro resultado sem explicar o motivo.
Separe ausência de evidência de evidência de ausência. Uma tela vazia pode indicar entrada, escopo, filtro, permissão, dispositivo, intervalo ou estado incorreto. Verifique aquisição ou importação antes de interpretar decoder, editor, relatório ou exportação.
Antes da entrega, reabra o artefato e examine início, ponto de decisão e final. Registre versão, plataforma, configuração, expectativa, observação e reprodução mínima. Remova ou oculte dados sensíveis e confirme a autorização do destinatário.
Perguntas e respostas
Qual é a maneira confiável mais rápida de começar?
Use o menor caso representativo, escreva o resultado esperado e altere uma variável. Confirme o caminho básico antes de adicionar filtros, efeitos, edições, automação ou uma fonte maior.
Quais evidências devem ser salvas?
Mantenha identidade da entrada, versão, plataforma, configurações, ação exata, primeira transição inesperada e saída final. Feche e reabra projeto, sessão, relatório ou exportação antes de tratá-lo como durável.
Quando o procedimento deve ser repetido?
Repita após mudanças relevantes no aplicativo, sistema, driver, firmware, modelo, fonte ou fluxo. Preserve o caso aceito anterior como referência sem alterações.
Quando a tarefa está pronta para entrega?
Quando outra pessoa autorizada identifica a entrada, repete a ação, vê o mesmo resultado, entende os limites restantes e abre o artefato sem depender de estado local não documentado.
Guias relacionados
Estas páginas no mesmo idioma cobrem etapas próximas sem alterar o proprietário canônico deste assunto:
- Análise HTTP/2 GOAWAY e RSTSTREAM PCAP: depuração de fluxos de redefinição, limites de proxy e falhas de gRPC
- Roteamento assimétrico e análise PCAP unilateral: respostas ausentes, meias conversas, NAT, firewall e erros de ponto de captura
- Solicitação lenta de HTTP e TTFB em PCAP: provando se o atraso é DNS, TCP, TLS ou horário do servidor