HTTP, DNS и TLS: диагностика сетевых ошибок

Бесплатный курс по диагностике HTTP, DNS и TLS для разработчиков и QA. На готовом FastAPI-стенде вы разберёте ошибки разрешения имён, TCP-соединений, таймаутов, HTTP-ответов и сертификатов HTTPS. Напишете диагностический клиент на Python с HTTPX и тесты pytest, затем самостоятельно восстановите пять неисправных…
Начальный уровень
4–5 часов в неделю

Чему вы научитесь

  • Читать вывод curl и определять метод, адрес, статус, заголовки и тело фактического HTTP-ответа
  • Различать этапы системного разрешения имени, TCP-соединения, TLS-проверки и обмена HTTP-данными
  • Проверять разрешение имени через socket.getaddrinfo и понимать, какие выводы этот вызов позволяет сделать о DNS
  • Воспроизводить ошибку разрешения имени и определять, почему TCP-соединение ещё не началось
  • Диагностировать отказ TCP-соединения с закрытым портом и проверять исправление адреса или порта
  • Воспроизводить таймаут ожидания HTTP-ответа и отличать его от отказа подключения и таймаута соединения
  • Отличать ошибки подключения и ожидания от ответов HTTP 404 и 503, которые действительно вернул сервер
  • Проверять HTTP-заголовки и перенаправления, различать исходный ответ 302 и результат перехода клиента
  • Запускать локальный HTTPS-сервис и устанавливать, на каком этапе проверяется TLS-сертификат
  • Разбирать ошибку доверия к сертификату и настраивать доверие к учебному удостоверяющему центру для отдельного клиента
  • Диагностировать несовпадение имени сервера с сертификатом и исправлять подключение с сохранением проверки TLS
  • Создавать диагностический HTTPX-клиент на Python и отдельно обрабатывать HTTP-ответы, ошибки соединения и таймауты
  • Писать проверки pytest для успешных запросов, HTTP-ошибок и контролируемых сетевых отказов
  • Выбирать следующую диагностическую проверку по симптому и подтверждать вывод наблюдаемыми результатами
  • Разрабатывать универсальный Python-пробник для проверки разных конфигураций HTTP(S)-запросов
  • Находить и исправлять причины пяти независимых неисправностей, повторяя исходные запросы до подтверждённого HTTP 200
  • Возвращать учебные конфигурации в исходное состояние после диагностики и проверять воспроизводимость отказов

О курсе

HTTP, DNS и TLS: Диагностика ошибок DNS, TCP, HTTP и TLS на локальном стенде

🧭 Отправная точка

При обращении к сервису клиент может получить ошибку разрешения имени, отказ TCP-соединения или HTTP 503. Эти результаты говорят о разных этапах запроса. В первых двух случаях HTTP-ответа нет, а при 503 сервер уже ответил клиенту.

С HTTPS добавляется проверка сертификата. Например, соединение может завершиться ещё до HTTP из-за недоверенного удостоверяющего центра или несовпадения имени сервера с сертификатом. Чтобы найти причину, нужно установить, какой этап прошёл успешно и где возник отказ.

На курсе вы будете исследовать такие ситуации на готовом локальном HTTP/HTTPS-сервисе FastAPI. С помощью curl и Python воспроизведёте характерные ошибки, научитесь читать результаты запросов и выбирать следующую проверку. Затем напишете собственные диагностические скрипты и тесты.

🎯 Цель курса — научиться различать сбои разрешения имени, TCP, ожидания ответа, TLS и HTTP, находить причину по наблюдаемым признакам и проверять исправление повторным запуском.

⚙️ Что вы будете делать

  • 🔎 Разбирать этапы запроса. Проверите системное разрешение имени через socket.getaddrinfo, воспроизведёте отказ соединения с закрытым портом и превышение времени ожидания HTTP-ответа. Сравните эти случаи с ответами 404 и 503, чтобы понимать, когда сервер действительно ответил, а когда обмен остановился раньше.

  • 🌐 Исследовать HTTP и HTTPS. Поработаете с curl, заголовками и перенаправлениями. Запустите локальный HTTPS-сервер, воспроизведёте ошибки доверия сертификату и несовпадения имени в сертификате. Настроите доверие к учебному удостоверяющему центру только для своего клиента, сохранив проверку TLS.

  • 🧪 Писать диагностический клиент и тесты. Создадите Python-клиент на HTTPX, который различает полученный HTTP-ответ, отказ подключения и таймаут чтения. Добавите проверки pytest для успешных и ошибочных сценариев, чтобы сравнивать поведение до исправления и после него.

  • 🔧 Самостоятельно восстанавливать запросы. Научитесь определять следующую проверку по конкретному симптому. В финале создадите отдельный пробник на Python, исследуете пять независимых неисправных конфигураций, исправите каждую и подтвердите результат повторным запуском.

🔥 Чем отличается курс

Вы работаете с одним готовым локальным стендом. Создавать сервер с нуля не потребуется: основное время уделите поведению клиента, сетевым ошибкам и способам их проверки. Для каждого случая можно получить исходный отказ, изменить один параметр и сравнить результат.

Системное разрешение имени, TCP и HTTP исследуются отдельно. Например, успешный вызов getaddrinfo показывает, что система вернула адрес, но ещё ничего не говорит о доступности порта. Этот вызов также не подтверждает, что адрес был получен именно от DNS-сервера. Такие различия помогают делать выводы по фактическим данным.

Для HTTPS предусмотрены два разных упражнения: проверка доверия к локальному сертификату и проверка имени сервера. Вы увидите, какой отказ возникает в каждом случае, и восстановите соединение с включённой проверкой сертификата. Менять системное хранилище доверенных сертификатов не нужно.

В практических заданиях вы будете фиксировать HTTP-статус или тип исключения, проверять настройки клиента и повторять исходный сценарий. Основные эксперименты выполняются локально, без внешних сетевых сервисов, изменения системного DNS и запросов к посторонним сайтам.

📚 Дополнительные бесплатные материалы

🎯 Итоговая диагностика

К концу курса вы напишете диагностический клиент на HTTPX и набор тестов pytest. Они помогут отличать реальные HTTP-ответы от ошибок подключения и ожидания данных.

В итоговом задании получите пять отдельных конфигураций неисправных HTTP(S)-запросов. Для каждого случая создадите и запустите универсальный case_probe.py, определите этап отказа, исправите минимально необходимую настройку и повторите проверку тем же пробником. Успех подтверждается фактическим HTTP 200 для каждого случая. После проверки восстановите исходные учебные конфигурации.

Курс бесплатный: 4 модуля, 17 уроков, ориентировочно 5–7 часов с практикой. Для работы понадобятся Python 3.12, curl и Git. Задания проверяются самостоятельно, с помощью команд и локальных тестов; ручная рецензия не требуется.

🧪 Поддержка

🧪 Самопроверка вместо ожидания ручной рецензии. Вы сверяете результат по критериям задания, ответам и предусмотренным в курсе локальным проверкам. Разборы самостоятельных упражнений доступны там, где они предусмотрены программой.

Индивидуальная проверка работ преподавателем и персональные консультации в этом курсе не предусмотрены. Формат рассчитан на самостоятельное прохождение.

🚀 О XNova

XNova — практические курсы и учебные проекты для разработчиков, тестировщиков и инженеров. Мы разбираем технологии на работающих примерах: с кодом, наблюдаемым результатом и объяснением инженерных решений.

🔗 xnova.dev — другие курсы и материалы XNova.

📬 Контакты и сообщество

Продолжить знакомство с XNova, следить за новыми материалами или задать организационный вопрос можно здесь:

  • 📣 Telegram-канал: @xnova_dev — анонсы курсов, статьи и новости проекта.
  • 💬 Написать XNova: @xnova_contact — контакт для вопросов о курсах и проекте.
  • ✉️ Почта: contact@xnova.dev — если удобнее написать письмом.
  • 💻 GitHub: xnova-tech — открытые учебные проекты и примеры.

Для кого этот курс

— Python-разработчики, которые пишут HTTP-клиенты и хотят самостоятельно разбираться в ошибках подключения, таймаутах и ответах сервера по результатам реальных запросов. — Backend-разработчики, которым приходится диагностировать недоступность локальных сервисов, неверные адреса, HTTP-ошибки и проблемы HTTPS при разработке и интеграции API. — QA/AQA-инженеры, которые тестируют API и хотят научиться отличать сбой клиента или соединения от ответа приложения, воспроизводить сетевые ошибки и закреплять проверки в pytest. — Начинающие DevOps- и SRE-инженеры со знанием основ Python, которые хотят освоить последовательную диагностику HTTP(S)-запроса с помощью curl, системных вызовов и небольших скриптов.

Начальные требования

🧠 Начальные знания

  • Вы умеете запускать программы Python, ориентируетесь в функциях, импортах и исключениях.
  • Вы знакомы с командной строкой и базовыми действиями Git.
  • Вы представляете, что клиент отправляет HTTP-запрос и получает ответ; подробная сетевая подготовка не требуется.

🛠️ Инструменты и окружение

  • Python 3.12 и возможность создать виртуальное окружение.
  • Git и личный аккаунт GitHub для собственной копии открытого учебного проекта.
  • curl с HTTPS и локальный loopback-интерфейс.
  • Python-зависимости FastAPI, Uvicorn, HTTPX, pytest и trustme из закреплённого requirements.txt учебного проекта.
  • Для Windows, macOS и Ubuntu Linux в уроках приведены отдельные команды подготовки и проверки окружения.

Для первоначальной установки зависимостей понадобится интернет. После установки основная практика должна работать без внешних сетевых сервисов.

🧭 Чего не потребуется

Docker, Kubernetes, платные API, личный TLS-сертификат, доступ к рабочим системам, изменение DNS, /etc/hosts, системных доверенных CA или прав администратора.

💰 Формат и стоимость

Курс бесплатный, ориентировочно 5–7 часов самостоятельной работы. Вопросы проверяются автоматически; практические результаты вы проверяете локально с помощью команд и pytest. Ручная рецензия не предусмотрена.

Как проходит обучение

🌐 Один запрос, несколько возможных причин сбоя. Объяснения и вопросы помогают выбрать следующую проверку, а локальный HTTP/HTTPS-стенд сразу показывает её результат.

  • 🔎 Исследуете симптомы: различаете ошибки DNS, соединения, TLS и ответы приложения.
  • 🛠️ Меняете клиент: собираете диагностические наблюдения через curl и Python.
  • ✅ Подтверждаете вывод: повторяете запрос и запускаете тесты, чтобы отличить исправление от случайного успеха.

Программа курса

В курс входят

  • 18 уроков
  • 39минут видео
  • 17 тестов
загружаем...

Наши преподаватели

Что вы получаете

  • Собственная копия открытой учебной лаборатории с готовым локальным HTTP/HTTPS-сервисом FastAPI и контролируемыми сетевыми ошибками
  • Диагностические скрипты на Python для проверки разрешения имени, соединения и выбора следующей проверки по симптому
  • Собственный HTTPX-клиент с раздельной обработкой HTTP-ответов, ошибок подключения и таймаутов
  • Набор локальных тестов pytest для успешных запросов, HTTP-статусов, ошибок соединения и TLS
  • Универсальный case_probe.py и результаты самостоятельного восстановления пяти неисправных HTTP(S)-запросов
  • Исправленные учебные конфигурации с подтверждёнными ответами HTTP 200 и проверкой возврата к исходным ошибочным сценариям

Сколько стоит обучение

Бесплатно

Расскажите о курсе друзьям

Бесплатно