Что происходит на этапе установки соединения после получения IP адреса?
Что проверяют
Различаете ли вы уровни: транспортное соединение, шифрование, прикладной запрос. Тестировщику это нужно, чтобы по симптому понимать, на каком шаге всё встало, и не заводить дефект с описанием, что сайт не открывается.
Как отвечать
После получения адреса идёт рукопожатие TCP: клиент шлёт запрос синхронизации со своим начальным номером последовательности, сервер отвечает подтверждением и своим номером, клиент подтверждает. Соединение установлено, но данные ещё не пошли.
Для защищённого протокола дальше отдельное рукопожатие TLS:
- клиент присылает поддерживаемые версии и наборы шифров, имя запрашиваемого хоста и список прикладных протоколов;
- сервер выбирает параметры и отдаёт цепочку сертификатов;
- стороны согласуют ключи, клиент проверяет цепочку до доверенного корня, срок действия и соответствие имени;
- в свежих версиях протокола это укладывается в один круг, а при повторном подключении возможно возобновление сессии.
Только после этого уходит запрос. Добавьте, что соединение переиспользуется, поэтому у второго запроса рукопожатий нет вовсе, а поверх QUIC транспорт и шифрование согласуются вместе.
Для проверок пригодятся вкладка сети в браузере с разбивкой по фазам, curl -v и openssl s_client. Сценарии: истёкший сертификат, неполная цепочка, старый набор шифров, закрытый порт, потери и задержки в канале.
Где спотыкаются
Сливают TCP и TLS в одно рукопожатие. Тогда не получается объяснить разницу между таймаутом соединения и ошибкой сертификата, и отчёт сводится к скриншоту с ругательством браузера.
Второе: проверяют только браузером. Браузер умеет достроить недостающий промежуточный сертификат, а мобильное приложение и серверный клиент не умеют. Дефект выглядит как поломка у части пользователей и доживает до релиза.
Третье: тестируют на быстром офисном канале. На потерях и задержках вылезают таймауты, повторы и досрочно закрытые соединения, а повтор неидемпотентного запроса после таймаута создаёт второй заказ. Такое находят уже в бою.