Learning Platform
Глоссарий Troubleshooting
Урок 01.01 · 18 мин
Начальный
NetworkingCourse introData EngineeringCareer

О курсе — зачем Junior DE учить сети

Если вы Junior Data Engineer, рано или поздно случится один из таких дней. ETL-скрипт молча падает с Connection reset by peer, и никто не знает почему. API партнёра отвечает за 200 мс на одном инстансе и за 12 секунд на другом, идентичном по конфигу. DNS-кэш в Kubernetes-поде запоминает старый IP базы данных и подвисает на полчаса после миграции. Сертификат у внутреннего сервиса протух в выходные, и все ночные джобы упали.

Все эти ситуации не решаются глубоким знанием Python или SQL. Они решаются пониманием того, как байты ходят между машинами: что такое TCP, как работает DNS, зачем нужен TLS, что делает proxy. Это курс именно про это — про сети с точки зрения инженера, который пишет код, а не настраивает Cisco-маршрутизаторы.

В этом уроке разберём: что такое networking-fundamentals, для кого он, что отличает его от классических университетских курсов и как он связан с остальной траекторией.


Что мы изучаем — и чего не изучаем

Курс покрывает networking с практической точки зрения инженера, работающего с данными и сервисами. Это значит:

Scope курса -- широкий и hands-on
Что внутриOSI/TCP-IP, IP-адресация, маршрутизация, TCP/UDP, DNS, HTTP, TLS, sockets, load balancing, security, troubleshooting. Всё с командами и примерами кода
Hands-onКаждая тема -- с реальной командой (curl, dig, tcpdump, openssl) и Python-кодом. Не теория ради теории
Чего нетKernel internals (как netfilter устроен изнутри), RFC до запятой, Cisco-настройка железа, beam-forming в Wi-Fi. Это другие курсы
ЦельПосле курса вы понимаете, что происходит, когда вы запускаете curl или requests.get. Можете задиагностировать сетевую проблему за полчаса вместо двух дней

Курс охватывает 17 модулей, от «зачем нужны сети» до построения мини-инфраструктуры с TLS, DNS и load balancer’ом. Это широкое путешествие, но без углубления в kernel-internals. Если вам нужно поглубже — читайте Computer Networking: A Top-Down Approach (Kurose, Ross) или TCP/IP Illustrated (Stevens) после курса. Здесь же — то, что покрывает 95% задач Junior DE в боевой работе.

Принципиально важно: мы не учим вас настраивать роутеры. Cisco IOS, JunOS, конфигурация VLAN на switch — это work для network engineer’а, у которого сертификация CCNA или CCNP. У вас другая роль: вы пишете код, который ходит в сеть. Вам нужно понимать, как сеть работает, чтобы писать этот код правильно. И чтобы, когда что-то ломается, вы могли быстро сказать инфраструктурной команде: «у меня запросы пять секунд висят на TCP handshake к 10.0.5.42, посмотрите, что там с firewall’ом».


Для кого курс

Идеальный слушатель — Junior Data Engineer, бэкенд-разработчик или DevOps-инженер на начальной стадии. Конкретнее:

  1. Вы уже умеете базовый Python и shell. Прошли linux-fundamentals, знаете, что такое процесс, файл, переменная окружения. Запускали pip install, python script.py, читали логи в journalctl.
Сетевая диагностика: ping, dig, ss, nc, traceroute
  1. У вас есть представление о клиент-сервер архитектуре. Понимаете, что бывают frontend и backend, что API возвращает данные. Может быть, делали requests.get('https://api.github.com') и видели JSON в ответ.

  2. Вам нужно работать с сетью на уровне инструментов, а не теории. Запускать ETL, дебажить ингест из API, поднимать сервисы в Kubernetes, понимать, почему запрос идёт долго.

Если у вас нет даже этого — лучше начать с linux-fundamentals. Если вы senior network engineer с десятью годами CCIE — курс будет слишком базовым, но может дать свежий взгляд на то, как networking воспринимается со стороны разработчика.

TIP

Прохождение в режиме «слушал лекцию, посмотрел диаграммы» не работает. Сети — это про эксперимент. Откройте терминал прямо сейчас и держите его открытым весь курс. На каждом уроке будут команды для запуска. Не пропускайте их.


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

Обычный учебник по networking (Kurose, Tanenbaum, классический Stallings) построен снизу вверх: сначала физический уровень (электрические сигналы, кодирование), потом канальный (Ethernet-кадры), потом сетевой (IP), и так далее до приложений. Это академически правильный подход, но он не работает для инженера в 2026 году по двум причинам.

Во-первых, вы никогда не работаете с физическим уровнем. Никто из вас не будет паять кабели или анализировать модуляцию сигнала. Эта часть курсов читается как археология. Во-вторых, такой подход не даёт мотивации: студент учит Ethernet-кадры, не понимая, зачем они нужны для того, чтобы curl github.com работал.

Два подхода к преподаванию networking
Bottom-upКлассический подход: физический слой -> канальный -> сетевой -> транспортный -> приложение. Tanenbaum, Stallings. Академически правильно, но без мотивации
Top-downСначала приложения (HTTP, DNS), потом транспорт (TCP), потом сеть (IP), потом канальный. Kurose-Ross. Мотивация ясна с первой страницы
Hands-on hybridНаш подход: концепция -> команда -> наблюдение -> объяснение. Учим только то, что нужно для понимания работы кода. Минимум теории без практики
Цель: Junior DEПосле курса: понимаете, что происходит при requests.get(), умеете дебажить сетевые проблемы, знаете, когда какой инструмент применить

Мы будем идти преимущественно top-down, как Kurose-Ross, но с упором на инструменты. После теории каждого уровня — сразу команда. Изучили TCP-handshake — открываем Wireshark и видим его глазами. Изучили DNS — запускаем dig +trace google.com и смотрим, как resolver обходит дерево. Изучили TLS — ловим handshake через openssl s_client -debug.

Кроме того, курс делает акцент на современных реалиях: HTTP/3 через QUIC, DNS over HTTPS, TLS 1.3, IPv6, container networking. Многие классические книги были написаны до этих технологий и упоминают их только в последних главах. У нас они появляются органично.


Положение курса в трэке

Networking-fundamentals — часть трэка data для Data Engineering, но полезен любому бэкенд-разработчику. Внутри трэка курс лежит между несколькими другими:

Networking в трэке data
linux-fundamentalsПререкизит. Процессы, файлы, переменные окружения, shell. Без этого нельзя -- мы много работаем в терминале
networking-fundamentalsЭтот курс. Сети с точки зрения инженера. Junior level. После него -- понимаешь, как байты ходят между машинами
rest-api-fundamentalsСледующий курс. HTTP API во всех деталях: REST, OpenAPI, дизайн ресурсов, статус-коды, версионирование. Опирается на знания HTTP из networking
sql-fundamentalsПараллельно. Базы данных -- основа DE. SQL и networking перпендикулярны: можно учить в любом порядке
docker-fundamentalsПараллельно. Контейнеры -- стандарт деплоя. Контейнерный networking опирается на этот курс (bridge, port forwarding, DNS внутри Docker)
kubernetes-fundamentalsПозже. K8s networking сильно зависит от понимания базы: services, ingress, DNS, network policies -- всё это будет проще после networking-fundamentals

Главное соседство — rest-api-fundamentals. Этот курс даёт фундамент про HTTP, TCP, TLS, sockets. Дальше rest-api-fundamentals углубляется в HTTP-семантику (методы, статус-коды, REST-принципы, OpenAPI). Можно смотреть как два этажа: networking — этаж транспорта, rest-api — этаж приложения.

Что такое HTTP — текстовый протокол поверх TCP Network drivers в Docker: bridge, host, overlay Сетевая модель Kubernetes: требования и CNI

Сильно полезен курс будет также для понимания Kubernetes. K8s networking — одна из самых сложных тем платформы. Когда вы понимаете базу (IP-маршрутизация, NAT, DNS, load balancing), концепции K8s (Service, Ingress, NetworkPolicy, ClusterIP) становятся очевидными — это просто комбинации базовых примитивов.


Что вы будете уметь после курса

Конкретные навыки, которые формируются в течение курса:

  1. Читать curl -v от начала до конца. Понимать каждую строку: DNS lookup, TCP-handshake, TLS-handshake, HTTP-обмен. Видеть, где запрос завис, и понимать, почему.

  2. Дебажить DNS-проблемы. dig +trace, dig @8.8.8.8, разные TTL, негативное кэширование, DoH. Когда сервис «недоступен», но ping по IP работает — понимать, что это DNS, и идти проверять resolver.

  3. Анализировать pcap-файлы. Открыть в Wireshark захват трафика, понять, где tcp retransmission, где TLS handshake падает, что отдаёт сервер, что не отдаёт.

  4. Понимать сетевые ошибки. Connection refused (нет процесса на порту), Connection reset (RST-пакет), Connection timeout (нет ответа), No route to host (firewall или маршрутизация), Address already in use (порт занят, TIME_WAIT). Каждая ошибка указывает на конкретный слой и конкретную причину.

  5. Конфигурировать TLS правильно. Self-signed сертификаты для разработки, Let’s Encrypt в production, dual-stack IPv4/IPv6, корректные TLS-настройки в HTTP-клиенте.

  6. Понимать load balancing. Когда L4 vs L7, что такое sticky session, что такое consistent hashing для шардирования, как работает health check.

  7. Писать сетевые приложения. Базовый TCP/UDP-сервер на Python, async-вариант с asyncio. Понимать, что делает фреймворк под капотом, когда вы пишете FastAPI или aiohttp.

  8. Безопасно работать с сетью. Базовые принципы security: что такое MITM, как DNS spoofing работает, зачем VPN и в каких сценариях. Не security-эксперт, но осознанный пользователь.


Чего не будет

Чтобы избежать разочарований, явно перечислю, что в курс не входит:

  • Глубокая теория RFC. Мы упоминаем номера RFC, но не читаем их строчка за строчкой. Если нужно — RFC 9110 (HTTP/1.1), RFC 9000 (QUIC), RFC 5246 (TLS 1.2) — читайте сами.

  • Cisco/Juniper настройка железа. IOS, JunOS, конфигурация VLAN/EIGRP/OSPF на коробках — это CCNA-курс. У нас только обзор, что они делают.

  • Wi-Fi internals. Beam-forming, MIMO, OFDM — не наша тема. Только то, что Wi-Fi — это link layer, и снаружи он выглядит как Ethernet.

  • Сложная криптография. Мы понимаем, что TLS использует AES и RSA/ECDSA, но не разбираем математику. Для этого есть cryptography курсы.

  • 5G/телеком инфраструктура. Сети операторов — свой мир. У нас базовое понимание, что есть mobile networks с их особенностями (jitter, packet loss), и почему QUIC лучше работает в этой среде.

  • Глубокий BGP / маршрутизация в интернете. Обзор — да. Настройка BGP — нет.


Время и объём

Каждый урок — около 15-20 минут чтения, плюс 10-30 минут на эксперименты с командами. Всего 17 модулей, 60+ уроков. В сумме при ежедневной работе по часу — около двух месяцев. При выходных интенсивных сессиях — две-три недели.

Не торопитесь. Сети — это область, в которой быстрое прохождение не работает. Каждая концепция должна быть подкреплена реальной командой и наблюдением. Лучше один урок в день, но глубоко, чем три урока подряд поверхностно.

После каждого урока — 4-6 вопросов в quiz, в конце модуля — exam из 6 интегрирующих вопросов. Проходите их добросовестно: ошибка в quiz — это сигнал, что нужно перечитать.


Попробуй сам

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

# 1. curl -- основной инструмент для HTTP
curl --version
# Должна быть версия >= 7.84 (для современных фич)

# 2. dig -- DNS-диагностика
dig -v
# или
nslookup -version

# 3. ping и traceroute
ping -V 2>&1 | head -1
traceroute --version 2>&1 | head -1

# 4. tcpdump -- захват трафика
sudo tcpdump --version 2>&1 | head -1

# 5. openssl -- TLS-диагностика
openssl version

# 6. Python 3.13+
python3 --version

Если чего-то нет, ставьте через системный пакетный менеджер. На macOS все эти инструменты идут из Homebrew. На Ubuntu/Debian — apt install curl dnsutils iputils-ping traceroute tcpdump openssl.

Для Wireshark (мы будем им активно пользоваться в модулях про TCP и TLS) скачайте отдельно с wireshark.org. Это GUI, не command-line.


Как создавался курс

Курс создан при участии Claude (Anthropic) как соавтора: ИИ помогал писать материалы, структурировать темы, генерировать примеры кода и диаграммы. Каждая глава проходила ручную сверку с первоисточниками — спецификациями, документацией, исходным кодом рассматриваемых систем — но гарантировать 100% точность невозможно.

Если вы заметили неточность, опечатку или хотите предложить улучшение — напишите в Telegram-группу курса. Это самый ценный вклад в курс, который вы можете сделать.


Углублённое изучение с Claude

Курс рассчитан на самостоятельное изучение, но любая теория быстрее ложится, если задавать вопросы. Рекомендую держать рядом браузерное расширение Claude (claude.com/download) — оно работает с контентом открытой страницы: выделяете кусок урока и спрашиваете напрямую.

Сценарии, которые особенно хорошо работают для углублённого погружения:

  • «Объясни проще» / «дай ещё один пример» — когда формулировка из урока не дошла с первого раза.
  • «Покажи, как это устроено на уровне кода / железа» — когда хочется спуститься на слой ниже того, что даёт урок.
  • «Как это связано с [другая тема курса]» — когда нужно увязать концепцию с тем, что было раньше.
  • «У меня в проекте стек X — как применить?» — когда хочется примерить материал на свой реальный кейс.

Это не замена курсу, а способ ускорить интеграцию материала в вашу картину мира. Если что-то из ответов Claude расходится с уроком — присылайте в Telegram-группу, курс будет уточнён.


Нашли ошибку?

Если заметили неточность, опечатку или хотите предложить улучшение:

Telegram-группа курса
Обсуждение, вопросы, предложения

Telegram-канал

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

@levoely_channel
Новости, обновления, новые курсы

Проверка знанийKnowledge check
Junior после изучения этого курса видит в логе своего ETL-скрипта: 'requests.exceptions.ConnectionError: HTTPSConnectionPool(host='api.partner.com', port=443): Max retries exceeded with url: /v2/orders (Caused by NewConnectionError: Failed to establish a new connection: [Errno 110] Connection timed out)'. Что это означает по слоям и куда смотреть?
ОтветAnswer
Это ошибка на уровне TCP-handshake. 'Connection timed out' (errno 110) означает, что клиент отправил SYN-пакет на api.partner.com:443, но не получил SYN-ACK в ответ. Возможные слои и причины: (1) DNS отработал успешно -- иначе была бы 'Name or service not known'. То есть имя resolved в какой-то IP. Проверьте через dig api.partner.com -- какой IP получен, корректен ли он. (2) TCP-уровень: пакет ушёл, но SYN-ACK не пришёл. Возможные причины: a) сервер выключен; b) firewall на пути блокирует трафик молча (DROP, не REJECT); c) сервер слушает на другом порту; d) проблема с маршрутизацией (No route to host был бы немного другой). Команды для диагностики: telnet api.partner.com 443 -- увидите, висит ли на handshake. nc -vz api.partner.com 443 -- проверка порта. mtr api.partner.com -- покажет, на каком хопе теряются пакеты. ping api.partner.com -- если ICMP блокируется, проверьте только TCP. (3) Если из вашей сети работает, а из другой -- нет, проблема на вашей стороне (corporate firewall, NAT). (4) Если из всех сетей не работает -- проблема на стороне партнёра. Это типичная диагностика, которая после курса занимает 5 минут вместо нескольких часов.

Проверьте понимание

Результат: 0 из 0
Концептуальный
Вопрос 1 из 3. Для кого в первую очередь написан этот курс?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 3