Урок 1 — Что такое сеть
Прежде чем учить IP, DNS, TCP и сорок других страшных аббревиатур — давай разберёмся, что такое сеть в принципе. Без этого фундамента всё остальное превратится в зазубривание.
1. Сеть — это просто
Компьютерная сеть — это два или больше компьютера, которые соединены между собой и могут обмениваться данными. Всё. Не больше и не меньше.
Если у тебя дома есть Wi-Fi и к нему подключены ноутбук и телефон — это уже сеть. Если эта Wi-Fi подключена к интернету — твоя сеть соединена с миллионами других сетей по всему миру. Этот «соединённый мир сетей» и называется Интернет (буквально «между-сеть», от англ. inter + net).
Сеть = дороги между домами
Представь сеть как систему дорог. Каждый компьютер — это дом. Дороги между ними — каналы связи (кабели, Wi-Fi). Перекрёстки и развязки — роутеры и коммутаторы. То, что ездит по дорогам — пакеты данных.
Все остальные понятия — IP, маршруты, фаерволы — это «правила дорожного движения». Если ты держишь в голове картинку дорог и едущих по ним машин, ты не запутаешься.
2. Хост, узел, устройство
Когда мы говорим «компьютер в сети», правильнее говорить хост (англ. host). Хостом может быть что угодно с сетевым адресом: ноутбук, сервер, телефон, IP-камера, умный холодильник, принтер, да хоть лампочка, если у неё есть Wi-Fi.
Хост (host)
Любое устройство, которое подключено к сети и имеет адрес. Источник и/или получатель данных.
Узел (node)
Шире: любая точка в сети, включая промежуточные устройства, которые сами по себе не отправляют данные (роутеры, коммутаторы).
Простое правило: каждый хост — это узел, но не каждый узел — это хост. Твой ноутбук — хост. Роутер у тебя дома — узел (точнее, тоже хост, но промежуточный).
В документации, статьях и собеседованиях говорят именно «хост», «узел», «эндпоинт» (endpoint — конечная точка). Привыкай. Когда говорят «host name» — речь о текстовом имени машины (например web-01.example.com), а не о её IP.
3. Пакет — единица обмена
Когда ты загружаешь сайт, ты не получаешь его «одним куском». Данные дробятся на маленькие порции, и каждая порция отправляется отдельно. Эта порция называется пакет (англ. packet).
Пакет — это конверт. У него есть:
- Адрес получателя — кому везти
- Адрес отправителя — от кого, и куда вернуть ответ
- Содержимое (payload) — собственно данные: кусок картинки, кусок HTML, кусок видео
- Технические поля — номер пакета (чтобы собрать обратно в правильном порядке), контрольная сумма (чтобы понять, не побилось ли в пути), и т.д.
Почему так? Если бы мы отправляли всё одним «куском», то:
- Один битый бит — и нужно перекачивать весь файл заново.
- Канал был бы занят одной передачей — никто другой ничего не отправит.
- Пакеты могут идти разными путями и обходить «пробки» в сети.
Поэтому пакеты — это прорыв инженерной мысли, благодаря которому интернет вообще существует в том виде, в каком мы его знаем. До этого (в 60-х) у телефонных сетей была другая модель — коммутация каналов: между двумя абонентами заранее «прокладывался» канал. Пакетная коммутация заменила её и оказалась дешевле и надёжнее.
git pull — всё это летит по сети как поток конвертов с адресами.
4. Клиент и сервер
Самая частая модель общения в сети — клиент-сервер. Тебе нужно её понять как «таблицу умножения» — она будет всплывать в каждой следующей теме.
🙋 Клиент
Запрашивает данные или действие. Браузер, мобильное приложение, твой curl в терминале — это клиенты.
🖥️ Сервер
Отдаёт данные или выполняет действие. Постоянно слушает запросы и отвечает. Web-сервер, БД, API — это серверы.
Несколько важных нюансов:
- Сервер не разговаривает «сам». Он сидит и ждёт. Пока клиент не пришёл — сервер «молчит». Это базовый принцип безопасности: атакующий должен сначала найти сервер и сделать запрос, иначе ничего не происходит.
- Один сервер обслуживает миллионы клиентов. Поэтому он мощнее, постоянно включён, имеет постоянный адрес.
- Один компьютер может быть и клиентом, и сервером одновременно. Когда ты открываешь сайт — твой ноут клиент. Когда ты запускаешь у себя
python -m http.server— он стал ещё и сервером.
Клиент-сервер = посетитель и официант
Ты приходишь в кафе (клиент). Официант стоит и ждёт (сервер). Ты делаешь заказ — он приносит. Если посетителей нет — официант ничего не делает, но всегда готов. Один официант обслуживает много столиков подряд (один сервер — много клиентов). Если официант ушёл (сервер упал) — никто не обслужит.
А есть другие модели?
Да. Менее распространённые, но знать стоит:
- P2P (peer-to-peer) — все участники равны, каждый и клиент, и сервер. Так работают торренты, BitTorrent, частично — мессенджеры.
- Pub/Sub (publish-subscribe) — есть «брокер» посередине. Издатели публикуют сообщения, подписчики получают. Так устроены Kafka, RabbitMQ, MQTT. Появится позже — когда дойдёшь до микросервисов.
Но 95% твоей работы будет с клиент-серверной моделью. Запомни её надёжно.
5. LAN, WAN, интернет
Сети различаются по масштабу. Это нужно знать, чтобы потом не путаться, когда увидишь «VPC», «private subnet», «public IP».
6. Зачем нужны «уровни» (модель OSI и TCP/IP)
В сетях всё устроено по «слоям» (или «уровням», англ. layers). Это одна из тех вещей, которые поначалу кажутся скучной теорией, а потом ты понимаешь — без неё в сети ты слепой.
Зачем слои? Чтобы упростить мышление. Один слой не знает, как работает другой — он просто использует его как «чёрный ящик». Это как готовить еду: тебе не нужно знать, как делается мука, чтобы испечь хлеб.
Когда ты загружаешь страницу:
- На прикладном уровне браузер делает HTTP-запрос «дай /index.html»
- На транспортном уровне этот запрос упаковывается в TCP (с номерами, чтобы можно было собрать обратно)
- На сетевом уровне ему приклеивается IP — адрес получателя и отправителя
- На канальном уровне Ethernet/Wi-Fi прокидывает биты до ближайшего узла
На приёмной стороне всё разбирается в обратном порядке — снизу вверх.
Сейчас не нужно запоминать названия. Тебе достаточно понять, что сеть — это слои, и каждый отвечает за свою часть работы. Подробно про OSI / TCP-IP — в Roadmap, модуль 02 Networking, после того как ты дойдёшь до сюда.
7. Что с этим делает DevOps / DevSecOps
«Окей, я понял что такое сеть и пакет. А мне зачем это знать?» — спросишь ты. Вот зачем.
Реальные задачи, где это всплывает каждый день
- Деплой приложения. Твой сервис недоступен из браузера, но на сервере работает. Где упало? Без понимания «клиент → роутер → сервер → процесс на порту» ты будешь гадать.
- Облако (AWS). Чтобы создать VPC, ты должен понимать, что такое сеть и подсеть. Без этого ты не создашь правильную инфраструктуру.
- Безопасность. Атаки происходят на разных уровнях. SYN flood — транспортный. SQL-injection — прикладной. Без понимания слоёв ты не выберешь правильный инструмент защиты.
- Дебаг. «Сайт тормозит» — это может быть DNS, TCP, TLS, приложение или БД. Знание слоёв позволяет системно искать проблему, а не наугад.
- Контейнеры и Kubernetes. Каждый контейнер — это маленький хост в виртуальной сети. K8s целиком построен на сетевых концепциях.
Поэтому каждый Senior DevSecOps умеет нарисовать на доске диаграмму обмена пакетами и объяснить, что происходит в каждой точке. Через 8 уроков — ты сможешь так же.
8. Чек-лист «понимаю это»
Проставь галочки. Если хоть одна не отмечена — вернись к соответствующему разделу.
- ☐ Могу своими словами объяснить, что такое сеть
- ☐ Знаю, что такое хост, и могу привести 5 примеров хостов в моём доме
- ☐ Понимаю, что такое пакет, и могу объяснить, зачем данные дробятся
- ☐ Объясню, чем клиент отличается от сервера, и могу привести по 3 примера каждого
- ☐ Различаю LAN, WAN и интернет
- ☐ Помню, что сеть устроена «слоями», и каждый слой решает свою задачу
- ☐ Понимаю, зачем DevOps вообще учит сети
9. Мини-лаба: потрогай сеть руками прямо сейчас
10 минут практики закрепят урок лучше трёх перечитываний. Открой терминал: в Windows нажми
Win+R, набери cmd, Enter. В macOS — приложение «Терминал»,
в Linux — ты и так знаешь. Для каждого шага написано, что ты должен увидеть — сверяйся.
ipconfig (Windows) или ip addr (Linux/macOS:
ifconfig). Найди строку «IPv4-адрес» — что-то вроде 192.168.1.10.
Это адрес твоего компьютера-хоста в твоей LAN. Запиши его — пригодится в следующих уроках.ping 8.8.8.8 — ты только что отправил 4 пакета серверу Google
и получил 4 ответа. Смотри на time=15ms — столько миллисекунд конверт ехал туда
и обратно. Это называется задержка (latency). Сравни: ping до адреса своего
роутера (найдёшь его в выводе ipconfig как «Основной шлюз») — будет 1–5 мс:
внутри LAN близко, через город — дальше.tracert 8.8.8.8 (Windows) или traceroute 8.8.8.8.
Каждая строка — узел (роутер), через который проехали твои пакеты. Первая строка — твой
домашний роутер (LAN), дальше — сеть провайдера (WAN), в конце — сервер Google (интернет).
Ты буквально видишь иерархию из раздела 5 своими глазами.curl example.com (в Windows 10+ curl встроен). На экран
вывалится HTML — это тот самый ответ сервера из модели «клиент-сервер». Браузер делает ровно
то же самое, только потом красиво рисует этот HTML.python -m http.server 8000 и открой в браузере
http://localhost:8000. Поздравляю: твой ноутбук теперь и клиент (браузер),
и сервер (python) одновременно. Останови сервер: Ctrl+C.Не всё понял в выводе команд? Это нормально и так задумано: через 7 уроков ты будешь читать его как привычный текст. Главное — ты увидел, что сеть отвечает тебе, живая.
10. Задачи — реши сам (ответы спрятаны)
Задача 1. В квартире: ноутбук, телефон, телевизор, умная колонка и Wi-Fi-роутер. Сколько здесь хостов?
Пять. Всё, что имеет сетевой адрес, — хост. Роутер — тоже хост (промежуточный), он и сам принимает/отправляет данные (например, когда ты заходишь в его настройки). А вот кабель и Wi-Fi-волны — не хосты, это каналы связи.
Задача 2. Файл 3 МБ разбился при отправке на ~2000 пакетов, один потерялся в пути. Придётся перекачивать весь файл?
Нет — только один пакет. У каждого пакета есть номер, поэтому получатель видит, какого куска не хватает, и просит переслать именно его. Это главное преимущество пакетной коммутации. (Как именно устроен этот «пересчёт» — узнаешь в уроке 4 про TCP.)
Задача 3. Ты смотришь видео на YouTube. Кто здесь клиент, а кто сервер? А когда вы с другом созвонились по видеосвязи напрямую?
YouTube: твой браузер — клиент (запрашивает), серверы YouTube — сервер (отдают видео). Прямой видеозвонок — модель P2P: оба участника одновременно и отправляют свой видеопоток (как сервер), и принимают чужой (как клиент).
Задача 4. Почему «сервер молчит, пока его не спросят» — это принцип безопасности?
Потому что сервер не рассылает данные кому попало сам: чтобы что-то получить, атакующий должен сам прийти с запросом — а значит, оставить след (свой адрес), попасть в логи и наткнуться на проверки. Всё управление доступом строится вокруг точки «кто и что у меня спросил».
Задача 5. Домашний Wi-Fi — это LAN или WAN? Сеть провайдера по городу? А VPC в облаке AWS?
Wi-Fi дома — LAN (маленькая, одна квартира, один владелец). Сеть провайдера — WAN (город/страна). VPC — по сути LAN, но в дата-центре облака: твой изолированный кусочек сети, который ты полностью контролируешь.
Задача 6. Бабушка говорит: «у меня пропал Wi-Fi» — а на самом деле не открываются сайты, хотя значок Wi-Fi горит. Wi-Fi и интернет — одно и то же?
Нет. Wi-Fi — это канал связи внутри LAN (радио вместо кабеля до роутера). Интернет — связь роутера с миром. Wi-Fi может отлично работать, а кабель провайдера — лежать. Диагноз по слоям: до роутера связь есть (Wi-Fi горит), дальше — нет. Такое «мышление слоями» — главный навык, который ты унесёшь из этого пути.
11. Словарик урока (термины + английский)
Английские термины — не для галочки: вся документация, логи и половина собеседований — на них.
На каждом «конверте»-пакете написан адрес — ты уже видел его в лабе: 192.168.1.10,
8.8.8.8. Но что это за числа? Почему их четыре и почему до 255? Почему у тебя и у
соседа дома адреса одинаковые — и это не ломает интернет? Разберём в уроке 2 — это
фундамент всего, что будет дальше.