SNI против ALPN: анализ рукопожатия TLS и согласование HTTP/2 в Wireshark PCAP
Анализ SNI и ALPN в рукопожатиях TLS. Диагностика ошибок согласования HTTP/2, резервного копирования h2 и http/1.1, расширений ClientHello, ответов ALPN ServerHello и проблем завершения прокси-сервера в Wireshark PCAP.
Многие инциденты «HTTP/2 не работает» на самом деле являются проблемами согласования TLS ALPN. Пользователи ищут «TLS ALPN pcap», «Откат HTTP2 к HTTP/1.1», «ALPN h2 не согласован», «Расширение ALPN ClientHello», «Выбранный протокол ServerHello» и «Почему мой браузер использует HTTP/1.1», когда конечная точка должна поддерживать HTTP/2, но трафик возвращается.
PCAP Surgery полезен, поскольку доказательства ALPN содержатся в рукопожатии TLS. Если захват включает в себя ClientHello и ServerHello, вы часто можете проверить, предлагал ли клиент h2, выбрал ли его сервер, завершил ли прокси-сервер TLS или у соединения никогда не было возможности согласовать HTTP/2.
Что делает АЛПН
ALPN означает согласование протокола прикладного уровня. Это позволяет клиенту и серверу согласовывать протокол приложения во время настройки TLS.
Общие значения ALPN:
h2для HTTP/2 через TLS.http/1.1для HTTP/1.1.- Другие идентификаторы протоколов для специализированных систем.
Если клиент не предлагает h2, сервер не сможет его выбрать. Если сервер не выберет «h2», соединение не будет использовать HTTP/2, даже если сервер поддерживает HTTP/2 в другом месте.
Общие симптомы
Сбои ALPN проявляются как:
- Браузер использует HTTP/1.1 вместо HTTP/2.
- Соединение gRPC не выполнено.
- CDN работает, а Origin — нет.
- Обратный прокси понижает протокол.
- Балансировщик нагрузки завершает TLS и перенаправляет HTTP/1.1.
- Мобильное приложение сообщает об ошибке протокола.
- Метрики сервера показывают отсутствие трафика h2.
- HTTP/2 работает с одним именем хоста, но не с другим.
Эти симптомы часто устраняются на уровне HTTP, но ответ может быть в согласовании TLS.
КлиентПривет, доказательства
ClientHello может показать, предлагал ли клиент ALPN и какие протоколы он анонсировал.
Полезные вопросы:
- Имеется ли расширение ALPN?
- Включает ли предложение
h2? - Включает ли он также
http/1.1? - SNI присутствует и правильный?
- Какая версия TLS предлагается?
- Производится ли захват до того, как прокси-сервер завершит TLS?
Если h2 отсутствует в ClientHello, сервер не может выбрать HTTP/2. Причиной может быть конфигурация клиентской библиотеки, старый стек TLS, отключенная опция HTTP/2 или прокси-клиент, открывающий новое восходящее соединение.
СерверПривет, доказательства
Серверная сторона должна выбрать один протокол из списка ALPN клиента.
Проблемы:
- Сервер выбирает только
http/1.1. - Сервер пропускает ответ ALPN.
- Перед выбором ALPN происходит сбой подтверждения связи с сервером.
- Несоответствие сертификата или SNI направляет к виртуальному хосту по умолчанию.
- Терминатор TLS поддерживает h2 на общедоступной стороне, но не на восходящей стороне.
Свидетельство пакета может отделить поддержку сервера от маршрутизации и поведения прокси.
SNI и ALPN вместе
SNI и ALPN часто связаны. Имя хоста, выбранное SNI, может определять, какой сертификат, виртуальный хост и настройки протокола применяются.
Пример неудачи:
- Клиент предлагает
h2. - Клиент отправляет неверный SNI.
- Сервер возвращает сертификат по умолчанию.
- Виртуальный хост по умолчанию не поддерживает HTTP/2.
- Соединение возвращается к http/1.1.
В этом случае проблема не в том, что «HTTP/2 сломан глобально». Это маршрутизация по имени хоста.
Завершение работы прокси и балансировщика нагрузки
Современные развертывания часто разделяют TLS:
client -> CDN or load balancer -> reverse proxy -> origin
gRPC and ALPN
For gRPC troubleshooting, preserve:
Fallback is not always failure
Debug checklist
Use this workflow:
Final diagnosis
<!-- pcap-localized-evidence-foundation-v1:start -->Пакетный ответ для «SNI против ALPN: анализ рукопожатия TLS и согласование HTTP/2 в Wireshark PCAP»
Краткий ответ: label анализатора или сообщение приложения не определяет причину. Начните с точки захвата и направления, докажите последнюю успешную protocol boundary и первую неудачную. Для «SNI против ALPN: анализ рукопожатия TLS и согласование HTTP/2 в Wireshark PCAP» другой reviewer должен найти packet, gap или interval, поддерживающий каждую фразу, и понять, какой факт её опровергнет.
Разместите capture на карте пути
Запишите client, server и все proxy, load balancer, NAT или firewall. Укажите interface, место, clock, OS и видимые направления. Capture у client доказывает приход туда, но не отсутствие отправки server. Capture у server доказывает выход в этой точке, но не весь путь. Перед сравнением двух точек исправьте clock offset и сопоставьте flow tuple, TCP sequence или transaction ID.
Проверьте snap length, dropped packets, offload, capture filter, ring buffer и время старта. Bad checksum на host может быть offload artifact. Большой segment может быть результатом GRO/TSO и не существовать так на проводе. Отсутствие packet в ограниченном файле не является network loss, пока не доказано, что точка обязана была его видеть.
Читайте границы по порядку
| Граница | Успешный признак | Полезный признак отказа |
|---|---|---|
| Link/IP | direction, addresses и route согласованы | нет ARP/NDP, ICMP, MTU, asymmetry |
| TCP | SYN, SYN-ACK, ACK и sequence | retransmission, RST, zero window, timeout |
| TLS | ClientHello, ServerHello и прогресс | alert или SNI/ALPN/certificate boundary |
| Application | полный request и связанный response | status, gap или ранний close |
| User | response time или failure window | stall на доказанной границе |
Остановитесь на первой границе без успеха. Если TCP не завершён, не начинайте с HTTP. Если request пришёл на proxy, но отсутствует на upstream, граница внутри proxy или его пути. Если upstream получил запрос без response до timeout, ACK и продвижение bytes отделяют application delay от network loss.
Отделите observation от hypothesis
Observation можно указать: «Client отправил до определённой sequence, sender повторил segment трижды, а в этой точке не появилось продвигающего ACK». Hypothesis: «путь потерял segment». Другая точка или dropped records могут её опровергнуть. Для каждой гипотезы запишите подтверждающий и опровергающий факт.
Retransmission и duplicate ACK не назначают виновного. Reordering, loss, capture artifact и receiver delay дают похожие labels. Свяжите direction, sequence, ACK, SACK, RTT, window и application timing. Для DNS/DHCP сопоставляйте transaction ID и attempts; для HTTP request/response; для TLS направление handshake.
Сохраните original
Рассчитайте checksum и не изменяйте оригинал. Filter, trim и redaction выполняются над working copy. Запишите input, operation, время, packet count до/после, output checksum и причину. После timestamp rewrite или удаления packets копия не поддерживает часть выводов о timing и sequence.
Addresses и identifiers заменяйте устойчивыми aliases. Не удаляйте port, direction и length, если они нужны выводу. Secret mapping держите отдельно. Проверьте границы capture и export и обзор PCAP Surgery.
QA перед публикацией
Title и answer относятся к одному flow? Каждая duration называет clock и точки? Первая failure boundary определена? Есть alternative explanation? Повтор меняет одну переменную? Original сохранён? Ограничьте итог: «Файл доказывает поведение около client в этом interval, но не внутреннее выполнение server».
Проверенный Semrush-термин PCAP analyzer принадлежит только странице продукта. Техническая статья не получает выдуманный volume или KD.
<!-- pcap-localized-evidence-foundation-v1:end --><!-- multilingual-blog-closeout:start -->Прямой ответ и граница приемки
Краткий ответ по теме «SNI против ALPN: анализ рукопожатия TLS и согласование HTTP/2 в Wireshark PCAP»: Анализ SNI и ALPN в рукопожатиях TLS. Диагностика ошибок согласования HTTP/2, резервного копирования h2 и http/1.1, расширений ClientHello, ответов ALPN ServerHello и проблем завершения прокси-сервера в Wireshark PCAP. Считайте это проверяемым результатом, а не обещанием для любого входа, устройства, проекта или окружения. Полный результат фиксирует исходное состояние, точное действие, видимый выход и условие, подтверждающее завершение задачи в PCAP Surgery.
Порядок работы от доказательств
Начните с небольшого повторяемого случая до изменения полного проекта. Запишите версию приложения, систему, идентификатор входа или устройства, важные настройки и ожидаемый результат. Выполните одно осознанное действие, сохраните первый неожиданный переход и сравните с исправным случаем, если он есть. Одновременная смена нескольких параметров скрывает условие, создавшее или устранившее проблему.
Контрольная точка 1: SNI против ALPN: анализ рукопожатия TLS и согласование HTTP/2 в Wireshark PCAP
Сформулируйте для «SNI против ALPN: анализ рукопожатия TLS и согласование HTTP/2 в Wireshark PCAP» воспроизводимое условие успеха или отказа. Укажите, что должно присутствовать, отсутствовать и какое восстановление безопасно. Сохраняйте исходный проект или захват до прохождения той же проверки исправленной копией.
Контрольная точка 2: Анализ SNI и ALPN в рукопожатиях TLS. Диагностика ошибок согласования HTTP/2, резервного к
Рассматривайте «Анализ SNI и ALPN в рукопожатиях TLS. Диагностика ошибок согласования HTTP/2, резервного копирования h2 и http/1.1, расширений ClientHello, ответов AL» как отдельную границу приемки для «SNI против ALPN: анализ рукопожатия TLS и согласование HTTP/2 в Wireshark PCAP». Зафиксируйте состояние до действия, первое видимое изменение и конечное состояние. Если результат отличается от заявленной цели, вернитесь к последней подтвержденной точке, а не продолжайте на предположениях.
Контрольная точка 3: Что делает АЛПН
Сформулируйте для «Что делает АЛПН» воспроизводимое условие успеха или отказа. Укажите, что должно присутствовать, отсутствовать и какое восстановление безопасно. Сохраняйте исходный проект или захват до прохождения той же проверки исправленной копией.
Контрольная точка 4: Общие симптомы
Рассматривайте «Общие симптомы» как отдельную границу приемки для «SNI против ALPN: анализ рукопожатия TLS и согласование HTTP/2 в Wireshark PCAP». Зафиксируйте состояние до действия, первое видимое изменение и конечное состояние. Если результат отличается от заявленной цели, вернитесь к последней подтвержденной точке, а не продолжайте на предположениях.
Контрольная точка 5: КлиентПривет, доказательства
Сформулируйте для «КлиентПривет, доказательства» воспроизводимое условие успеха или отказа. Укажите, что должно присутствовать, отсутствовать и какое восстановление безопасно. Сохраняйте исходный проект или захват до прохождения той же проверки исправленной копией.
Контрольная точка 6: СерверПривет, доказательства
Рассматривайте «СерверПривет, доказательства» как отдельную границу приемки для «SNI против ALPN: анализ рукопожатия TLS и согласование HTTP/2 в Wireshark PCAP». Зафиксируйте состояние до действия, первое видимое изменение и конечное состояние. Если результат отличается от заявленной цели, вернитесь к последней подтвержденной точке, а не продолжайте на предположениях.
Контрольная точка 7: SNI и ALPN вместе
Сформулируйте для «SNI и ALPN вместе» воспроизводимое условие успеха или отказа. Укажите, что должно присутствовать, отсутствовать и какое восстановление безопасно. Сохраняйте исходный проект или захват до прохождения той же проверки исправленной копией.
Контрольная точка 8: Завершение работы прокси и балансировщика нагрузки
Рассматривайте «Завершение работы прокси и балансировщика нагрузки» как отдельную границу приемки для «SNI против ALPN: анализ рукопожатия TLS и согласование HTTP/2 в Wireshark PCAP». Зафиксируйте состояние до действия, первое видимое изменение и конечное состояние. Если результат отличается от заявленной цели, вернитесь к последней подтвержденной точке, а не продолжайте на предположениях.
Контрольная точка 9: gRPC and ALPN
Сформулируйте для «gRPC and ALPN» воспроизводимое условие успеха или отказа. Укажите, что должно присутствовать, отсутствовать и какое восстановление безопасно. Сохраняйте исходный проект или захват до прохождения той же проверки исправленной копией.
Контрольная точка 10: Fallback is not always failure
Рассматривайте «Fallback is not always failure» как отдельную границу приемки для «SNI против ALPN: анализ рукопожатия TLS и согласование HTTP/2 в Wireshark PCAP». Зафиксируйте состояние до действия, первое видимое изменение и конечное состояние. Если результат отличается от заявленной цели, вернитесь к последней подтвержденной точке, а не продолжайте на предположениях.
Матрица приемки
| Точка | Сохраняемое доказательство | Критерий успеха |
|---|---|---|
| SNI против ALPN: анализ рукопожатия TLS и согласование HTTP/2 в Wireshark PCAP | Исходное состояние, одно действие и результат | Второй оператор воспроизводит заявленный результат |
| Анализ SNI и ALPN в рукопожатиях TLS. Диагностика ошибок согласования HTTP/2, резервного копирования h2 и http/1.1, расш | Исходное состояние, одно действие и результат | Второй оператор воспроизводит заявленный результат |
| Что делает АЛПН | Исходное состояние, одно действие и результат | Второй оператор воспроизводит заявленный результат |
| Общие симптомы | Исходное состояние, одно действие и результат | Второй оператор воспроизводит заявленный результат |
| КлиентПривет, доказательства | Исходное состояние, одно действие и результат | Второй оператор воспроизводит заявленный результат |
| СерверПривет, доказательства | Исходное состояние, одно действие и результат | Второй оператор воспроизводит заявленный результат |
Изоляция, восстановление и передача
Остановитесь на первой неуспешной границе. Сохраните источник, проект, сеанс или захват, сделайте копию перед разрушающим редактированием и меняйте одну переменную за опыт. Повтор широкого процесса после нескольких изменений может дать иной результат без объяснения причины.
Отличайте отсутствие доказательств от доказательства отсутствия. Пустой экран может означать неверный вход, область, фильтр, права, устройство, период или состояние проекта. Подтвердите получение или импорт до толкования decoder, редактора, отчета или экспорта.
Перед передачей повторно откройте артефакт и проверьте начало, точку решения и конец. Запишите версию, платформу, конфигурацию, ожидание, наблюдение и минимальное воспроизведение. Удалите или скройте чувствительные данные и проверьте полномочия получателя.
Вопросы и ответы
Как надежнее всего начать?
Возьмите минимальный репрезентативный случай, запишите ожидаемый результат и меняйте одну переменную. Подтвердите базовый путь до добавления фильтров, эффектов, правок, автоматизации или большого источника.
Какие доказательства сохранять?
Сохраните идентификатор входа, версию, платформу, настройки, точное действие, первый неожиданный переход и конечный выход. Закройте и повторно откройте проект, сеанс, отчет или экспорт.
Когда повторять процедуру?
После значимого изменения приложения, системы, драйвера, прошивки, модели, источника или процесса. Сохраните предыдущий принятый случай как неизменную основу сравнения.
Когда результат готов к передаче?
Когда другой уполномоченный человек определяет вход, повторяет действие, видит тот же результат, понимает ограничения и открывает артефакт без недокументированного локального состояния.
Связанные руководства
Эти страницы на том же языке описывают соседние этапы, не меняя канонического владельца темы:
- Анализ HTTP/2 GOAWAY и RSTSTREAM PCAP: отладка потоков сброса, ограничений прокси и сбоев gRPC
- Асимметричная маршрутизация и односторонний анализ PCAP: отсутствие ответов, половина разговоров, ошибки NAT, брандмауэра и точки захвата
- Медленный запрос HTTP и TTFB в PCAP: проверка того, связана ли задержка с DNS, TCP, TLS или временем сервера