Компьютерные сети для разработчиков и DevOps

Курс для разработчиков, QA и DevOps, которым приходится разбираться в сетевых сбоях. На локальном стенде вы проследите HTTP-запрос от клиента через прокси до сервиса, проверите IP-маршруты, DNS, TCP, TLS, сети Docker, gRPC и балансировку. Самостоятельно восстановите несколько неисправных соединений и подготовите…
Начальный уровень
4–5 часов в неделю
Сертификат Stepik

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

  • Прослеживать путь HTTP-запроса от клиента через обратный прокси и приложение до зависимого сервиса, определяя границы каждого соединения
  • Находить IPv4- и IPv6-адреса сетевых интерфейсов хоста и контейнера и понимать область их доступности
  • Определять подсеть, шлюз, выбранный маршрут и следующий узел для заданного адреса назначения
  • Находить процесс, который слушает TCP-порт, и отличать ошибку адреса или порта от остановленного сервиса
  • Проверять влияние привязки к 127.0.0.1 и сетевому интерфейсу на доступность приложения с хоста и из контейнера
  • Наблюдать установление TCP-соединения по SYN, SYN-ACK и ACK в сетевом захвате
  • Различать отказ соединения, сброс, таймаут, повторную передачу и штатное завершение TCP по выводу клиента и пакетам
  • Сравнивать обмен по TCP и UDP и объяснять наблюдаемое поведение при отсутствии ответа
  • Читать DNS-записи A, AAAA и CNAME и проверять, какой адрес получает клиент при разрешении имени
  • Исследовать различия между ответами резолверов и влияние кэширования на выбор адреса
  • Диагностировать разрешение имён сервисов в Docker Compose и исправлять ошибки обращения к контейнерам
  • Читать HTTP-запросы и ответы: метод, путь, Host, статус, заголовки и тело
  • Отличать HTTP-ответы 404 и 503 от отказа соединения, а ответы прокси 502 и 504 — от ошибок самого приложения
  • Проверять цепочки перенаправлений, заголовок Location и конечный адрес запроса
  • Различать время установления соединения и ожидания HTTP-ответа, локализовать источник задержки
  • Определять по заголовкам и журналам, какой компонент сформировал неожиданный HTTP-ответ
  • Исследовать TLS-рукопожатие и влияние SNI на выбор сертификата сервером
  • Проверять имя, срок действия и цепочку доверия TLS-сертификата и объяснять конкретную причину отказа
  • Отличать ошибку проверки TLS от HTTP-ошибки, полученной после защищённого соединения
  • Исследовать bridge-сеть Docker, адреса хоста и контейнеров и публикацию портов
  • Проверять сопоставление адресов и портов через NAT и восстанавливать доступность сервиса из другой сети
  • Прослеживать маршрут запроса через обратный прокси и проверять выбор upstream-сервиса
  • Сопоставлять журналы прокси и приложения по идентификатору запроса и находить границу возникновения ошибки
  • Диагностировать неправильный адрес или порт upstream и подтверждать исправление исходным запросом
  • Проверять влияние прямого HTTP-прокси и переменных http_proxy и no_proxy на фактический маршрут клиента
  • Исследовать готовый gRPC-сервис с помощью grpcurl, находить метод и выполнять контрольный вызов
  • Различать gRPC-статус, ошибку соединения, TLS и превышение срока ожидания, проверять прохождение вызова через прокси с HTTP/2
  • Определять по ответам и журналам, какой экземпляр приложения обслужил запрос через балансировщик
  • Проверять распределение запросов и поведение балансировщика при остановке и восстановлении одного экземпляра
  • Исследовать локальные правила сетевой фильтрации и различать запрет доступа, ошибку маршрута и отказ приложения
  • Проверять связь приложения с учебным сервисом данных, отделяя сетевой сбой от ответа зависимого сервиса и ошибки обработки
  • Выбирать следующую диагностическую команду по наблюдаемому симптому и проверять конкурирующие гипотезы
  • Последовательно находить и исправлять три независимые неисправности сквозного запроса, повторяя один контроль после каждого изменения
  • Оформлять технический отчёт с симптомами, сетевыми наблюдениями, подтверждёнными причинами, исправлениями и результатами повторных проверок

О курсе

Компьютерные сети: Путь запроса от клиента до сервиса и причины сетевых сбоев

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

Клиент отправляет HTTP-запрос через обратный прокси и получает 502 Bad Gateway. Контейнеры запущены, однако прокси может обращаться к неправильному адресу или порту. Приложение также может принимать запросы напрямую, но оставаться недоступным из сети прокси. Чтобы найти причину, нужно проверить, до какого компонента дошёл запрос и какой ответ был получен на каждом участке.

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

На курсе вы будете исследовать такие сбои в локальном сетевом стенде. Проследите путь запроса от клиента через прокси и приложение до учебного сервиса данных, разберёте работу IP, TCP, DNS, HTTP, TLS и сетей Docker. Затем перейдёте к gRPC, балансировке и правилам доступа. Вы будете сопоставлять ответы клиентов, состояние соединений, сетевые захваты и журналы сервисов, чтобы находить место отказа.

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

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

  • 🔎 Исследовать адресацию и путь запроса. Разберёте IP-адреса, подсети, маршруты, порты и сетевые сокеты. Проверите, какой адрес выбирается для соединения, через какой интерфейс проходит трафик и какой процесс слушает нужный порт. На примерах с 127.0.0.1 и контейнерами увидите, как область доступности адреса зависит от сетевого окружения.

  • 🌐 Диагностировать DNS, TCP, HTTP и TLS. Исследуете разрешение имён и кэширование DNS, установление TCP-соединения, отказы, таймауты, повторные передачи и завершение соединений. Научитесь читать сетевые захваты, проверять HTTP-статусы и перенаправления, разбирать ошибки сертификатов и выяснять, какой компонент сформировал ответ. Отдельно изучите сети Docker, публикацию портов и NAT.

  • 🧪 Проверять прокси, gRPC и правила доступа. Сравните прямые запросы с обращениями через HTTP-прокси и обратный прокси, проследите выбор сервиса назначения по заголовкам и журналам. Проверите, как HTTP/2 влияет на прохождение gRPC-вызовов, как балансировщик ведёт себя при отказе одного экземпляра и как отличить ограничение доступа от ошибки соединения. Для каждой версии причины подберёте проверку, которая поможет её подтвердить или исключить.

  • 🔁 Исправлять сбои и проверять результат. Будете восстанавливать маршруты, связи контейнеров и настройки прокси, сравнивая поведение запроса до и после каждого изменения. Научитесь связывать журналы разных компонентов по идентификатору запроса и оформлять краткий технический отчёт с фактами, проверенными гипотезами и результатами повторного запуска.

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

Все темы разбираются на работающих локальных сервисах. После изучения маршрутов вы проверите фактический путь пакета, после знакомства с портами — адрес и процесс, который принимает соединение. Сетевые захваты позволят увидеть установление TCP-соединения, сбросы и повторные передачи. По каждому наблюдению вы будете определять, какой вывод оно позволяет сделать и что ещё требуется проверить.

Один и тот же HTTP-адрес может обслуживаться по разным маршрутам. В лабораториях вы сравните запросы через HTTP-прокси и напрямую, исследуете влияние http_proxy и no_proxy, а также случаи, когда приложение отвечает при прямом обращении, а обратный прокси возвращает 502. Сопоставление запросов и журналов помогает понять, где именно прерывается обмен.

Практика охватывает взаимодействие нескольких протоколов. Например, gRPC-вызов может проходить напрямую и через прокси с поддержкой HTTP/2, а через посредника, рассчитанного на HTTP/1.1, завершаться ошибкой. Отдельные задания посвящены распределению запросов между экземплярами приложения, работе при отказе одного из них и правилам сетевого доступа.

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

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

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

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

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

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

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

🧪 Поддержка

🤝 Вопросы по материалам курса можно задавать в комментариях Stepik. Разбирая сложную ситуацию, приложите название урока, свои действия и полученный результат — так проще понять причину ошибки и предложить следующий шаг.

✅ Практические работы проверяет преподаватель. Вы получаете обратную связь по выполненному заданию: что соответствует требованиям, что стоит исправить и на что обратить внимание при повторной проверке.

🚀 О XNova

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

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

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

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

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

🔒 Доступ к разделам

⚠️ Важно! Модули курса открываются постепенно. Чтобы перейти к следующему модулю, необходимо набрать определённое количество баллов в текущем. Это вынужденная мера. Выполнять все задания не требуется, достаточно выполнить основную часть.

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

— Backend-разработчики, которые работают с HTTP API и хотят самостоятельно находить причины ошибок подключения, таймаутов и ответов прокси, прослеживая запрос от клиента до приложения и следующего сервиса. — DevOps- и SRE-инженеры, которые развёртывают и сопровождают сервисы и хотят увереннее диагностировать IP-маршруты, DNS, TCP, TLS, сети контейнеров, прокси и балансировку по фактическим наблюдениям. — QA/AQA-инженеры, которые проверяют API и распределённые приложения и хотят научиться воспроизводить сетевые неисправности, отличать ошибки транспорта от ответов сервиса и подтверждать исправления повторными запросами. — Платформенные инженеры и специалисты технического сопровождения, которым приходится разбирать недоступность приложений между несколькими компонентами и связывать сетевые проверки, журналы и конфигурацию в обоснованное заключение.

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

📚 Что нужно знать

  • HTTP и работа сервисов: понимать, как клиент отправляет запрос и получает ответ. Сетевые протоколы подробно разбираются в курсе.
  • Терминал и Git: выполнять команды, читать вывод, работать с репозиторием и сохранять изменения.
  • Python: уметь запускать небольшие скрипты. Язык нужен прежде всего для работы с учебным стендом.

🧰 Что понадобится

  • Python 3.12, curl и Git для первых лабораторных работ.
  • Аккаунт GitHub для доступа к закрытому учебному проекту и работы в собственной копии.
  • Docker Engine или Docker Desktop с Compose для практики с сетями контейнеров, прокси и несколькими сервисами.

Все эксперименты проходят на локальном стенде. Подготовка окружения для Windows, macOS и Linux, установка зависимостей и диагностика проблем запуска разобраны в уроках. Платные облачные сервисы и доступ к рабочей инфраструктуре не требуются.

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

🧭 Идёте по цепочке запроса, пока причина сбоя не станет проверяемой. Объяснения и вопросы сопровождаются лабораторными заданиями в локальном сетевом стенде.

  • 🔎 Собираете наблюдения: проверяете клиент, proxy, backend и базу данных по одному участку за раз.
  • 🛠️ Проверяете гипотезы: сопоставляете симптомы DNS, соединения, TLS и HTTP с результатами запросов.
  • ✅ Доказываете исправление: повторяете исходный сценарий и сравниваете ответ с ожидаемым.

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

В курс входят

  • 61 урок
  • 1час 35минут видео
  • 97 тестов
  • 57 интерактивных задач
загружаем...

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

Certificate

Сертификат

Сертификат Stepik

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

  • Рабочая копия локального учебного стенда с клиентом, обратным прокси, HTTP-приложением и зависимым сервисом данных
  • Схемы сетевого пути, адресов, подсетей, маршрутов, портов и соединений между компонентами стенда
  • Результаты исследований TCP и UDP с сетевыми захватами, признаками отказов, повторных передач и завершения соединений
  • Протоколы диагностики DNS, HTTP и TLS с фактическими запросами, ответами и выводами о причинах ошибок
  • Проверенные конфигурации Docker-сетей, публикации портов и исправления недоступных соединений между контейнерами
  • Результаты диагностики обратного прокси и журналы связанных запросов с подтверждёнными исправлениями upstream
  • Примеры проверки gRPC через прямое соединение и прокси, а также измерения распределения запросов и поведения балансировщика при отказе
  • Результаты проверки сетевых правил доступа, прокси-переменных и соединения приложения с учебным сервисом данных
  • Три отдельных исправления итогового стенда с четырьмя проверенными состояниями одного сквозного запроса и сохранёнными изменениями в Git
  • Итоговый технический отчёт с идентификаторами запросов, доказательствами каждой причины, результатами повторных проверок и рассмотренными альтернативами

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

3 990 ₽
Вы попробовали и поняли, что вам сейчас не подходит этот курс? Ничего страшного, мы вернём вам деньги в течение 30-ти дней после покупки.

Часто задаваемые вопросы

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