В этом занятии мы разберём, как устроена глобальная сеть: кто такие клиент и сервер, чем отличается архитектура P2P, зачем нужны протоколы и как устроена модель OSI/TCP-IP при взгляде сверху вниз. В конце вы выполните практику: в браузере через DevTools отследите запросы DNS и HTTP.
Курс построен по нисходящему подходу: сначала - приложения и протоколы, с которыми вы сталкиваетесь каждый день (веб, доменные имена), затем - транспорт, сеть и канал. Так проще связать теорию с тем, что видно в браузере и в сетевых утилитах.
Курс знакомит с принципами построения сетей, протоколами и практическими инструментами, которые нужны и разработчику ПО, и администратору. Используется нисходящий подход: от приложений и протоколов, с которыми вы сталкиваетесь каждый день (веб, DNS, HTTP), к транспортному и сетевому уровню, затем к каналу и среде передачи. Так проще связать теорию с тем, что видно в браузере, в утилитах и в коде.
Для разработчика важно понимать, как устроены запросы к API, как работает DNS и TCP, почему нужны порты и заголовки - это напрямую влияет на отладку, производительность и безопасность приложений.
Компьютерная сеть - это совокупность узлов (компьютеры, серверы, маршрутизаторы, коммутаторы) и каналов связи между ними, по которым передаются данные. Узлы обмениваются сообщениями по согласованным правилам - протоколам.
Современные сети устроены сложно: при создании крупной сети приходится решать много задач одновременно. Поэтому сети организуют в виде уровней: сложную задачу разбивают на несколько более простых. Каждый уровень решает свою часть задачи и предоставляет услуги уровню выше, а реализацию можно менять, не ломая остальное.
При проектировании и эксплуатации сетей приходится учитывать несколько групп проблем:
При передаче данных по сети возможны ошибки: данные могут исказиться, сообщение может потеряться, а при передаче нескольких сообщений они могут прийти не в том порядке, в котором их отправили. Протоколы (например TCP) умеют обнаруживать и исправлять такие ситуации.
В крупной составной сети (например в Интернете) путей от отправителя к получателю может быть несколько. Часть оборудования может выходить из строя, появляются новые узлы - поэтому нужны механизмы поиска рабочего пути и доставки пакетов до цели.
Масштабируемость - способность сети работать при увеличении числа устройств. Интернет объединяет огромное количество сетей разных организаций; при объединении двух сетей может оказаться, что у них разные механизмы адресации, размеры сообщений и т.д. Нужно обеспечить совместную работу и возможность подключать новые сети в будущем.
Распределение пропускной способности может быть статическим (каждому устройству выделена фиксированная полоса, например 10 Мбит/с) или динамическим - ресурсы выдаются тем, кто сейчас активно использует сеть. Динамическое выгоднее, когда не все абоненты работают одновременно: ресурсы не простаивают.
Требования к качеству обслуживания зависят от типа трафика. Для видео и голоса важна минимальная задержка: лучше допустить небольшие потери (дёргающееся изображение), чем ждать повторной передачи и слышать речь с опозданием.
Для передачи файлов важнее передать данные без искажений; задержка допустима - большой файл может качаться минуты или часы, главное, чтобы он загрузился корректно. Сетевые протоколы и настройки QoS помогают учитывать эти различия.
В сетях приходится учитывать несколько видов угроз. Перехват информации - пароли, номера карт и другие данные можно подслушать при передаче; защита - шифрование. Поддельные узлы - например фальшивый сайт банка, похожий на настоящий; пользователь может ввести данные и потерять деньги. Изменение сообщений - злоумышленник перехватывает запрос (например «перевести на счёт 123») и подменяет номер счёта в сообщении.
Безопасность - большая отдельная тема; в курсе мы коснёмся протоколов вроде TLS (HTTPS) и практики анализа трафика.
Чтобы решать все перечисленные задачи, сеть организуют в виде уровней. Внутри каждого устройства сетевое взаимодействие разделено на несколько частей - уровней. Данные последовательно проходят через уровни: от приложения вниз до среды передачи, по среде передаются на другое устройство и там снова проходят уровни снизу вверх.
Два главных преимущества: декомпозиция - сложная задача разбивается на простые подзадачи по уровням; изоляция решений - можно заменить технологию на одном уровне (например провод на Wi‑Fi), не меняя верхние уровни и приложения.
Конечные узлы (хосты) - компьютеры, телефоны, серверы, то есть устройства, которые запускают приложения и являются источником или получателем данных. Промежуточные узлы - маршрутизаторы (передают пакеты между сетями, принимают решения по IP) и коммутаторы (передают кадры внутри одного сегмента сети, работают с MAC-адресами).
Среда передачи - то, по чему физически передаются сигналы: проводная (медные кабели, оптоволокно) или беспроводная (Wi‑Fi, радиоканал). Выбор среды влияет на скорость, помехоустойчивость и стоимость.
Сервис - что именно делает уровень (например надёжная передача потока данных или поиск маршрута). Протокол уровня N - правила и соглашения для связи уровня N одного устройства с уровнем N другого: формат сообщений, порядок обмена. Интерфейс - набор операций, которые нижний уровень предоставляет верхнему внутри устройства; это «как вызвать услугу уровня».
Инкапсуляция - включение сообщения верхнего уровня в сообщение нижнего. На каждом уровне сообщение обычно состоит из заголовка, данных и иногда концевика (trailer). Заголовки добавляются при движении вниз по стеку и снимаются при движении вверх на приёмной стороне.
Интернет - это глобальная совокупность соединённых между собой сетей. Отдельные сети (домашний роутер, провайдер, дата-центр) обмениваются данными по общим правилам. Никто не «владеет» Интернетом целиком: он складывается из множества независимых операторов и протоколов, которые делают взаимодействие возможным.
Когда вы открываете сайт или отправляете сообщение, ваш компьютер или телефон выступает одним из узлов этой сети, а запрос проходит через маршрутизаторы и каналы до сервера и обратно.
Любой обмен в сети строится на том, что одна сторона запрашивает данные или услугу, а другая - предоставляет. Например: вы вводите адрес сайта в браузере - браузер запрашивает страницу у веб-сервера; сервер отдаёт HTML, картинки, стили. То же с почтой, мессенджерами, стримингом.
Роли участников и правила обмена описываются архитектурой приложения (кто клиент, кто сервер, есть ли промежуточные узлы) и протоколами - согласованными форматами сообщений и последовательностями действий.
В модели клиент–сервер есть два типа участников. Клиент инициирует запросы: открывает соединение, отправляет запрос (например «дай страницу по такому-то URL») и ждёт ответа. Сервер принимает запросы, обрабатывает их и отдаёт ответы; он обычно постоянно запущен и обслуживает много клиентов.
Один и тот же компьютер может в разных сценариях быть и клиентом (когда вы смотрите сайт), и сервером (если на нём запущен веб-сервер для других). Роль определяется не железом, а тем, кто в данный момент инициирует обмен.
Клиент знает адрес сервера (или имя, которое потом превращается в адрес через DNS), устанавливает соединение и отправляет запрос в формате, который понимает сервер. Сервер не «звонит» клиенту сам - он ждёт входящих запросов и на каждый отвечает согласно протоколу (например HTTP для веба).
Типичные примеры: браузер - клиент, веб-сервер (nginx, Apache) - сервер; почтовый клиент - клиент, почтовый сервер (IMAP/SMTP) - сервер; приложение облачного хранилища - клиент, API облака - сервер.
nginx и Apache - это программы, которые устанавливаются на компьютер, чтобы он работал как сервер: ожидал входящие запросы для выполнения тех или иных операций и отвечал результатом их выполнения.
Когда вы открываете https://example.com, браузер сначала узнаёт IP-адрес сервера по имени домена (протокол DNS), затем устанавливает соединение (протокол TCP) и отправляет HTTP-запрос (протокол HTTP). Сервер отдаёт HTML, ссылки на CSS и JS, картинки - браузер запрашивает их отдельными HTTP-запросами и собирает страницу. Всё это - клиент–серверное взаимодействие.
Аналогично работают загрузка файлов (FTP), просмотр видео (стриминг с сервера), онлайн-игры с выделенным сервером. Центральный сервер упрощает управление, обновления и контроль доступа, но создаёт единую точку нагрузки и отказа.
В архитектуре P2P (peer-to-peer) узлы равноправны: нет единственного «сервера», который всем раздаёт данные. Участники одновременно и отдают, и запрашивают контент друг у друга. Файл или поток может собираться из кусочков от разных узлов.
Примеры: торренты (раздача файлов между пирами), некоторые мессенджеры и голосовые звонки (часть трафика идёт напрямую между пользователями), блокчейн-сети. Плюсы P2P — устойчивость к отказу одного узла и распределённая нагрузка; минусы — сложнее контроль, безопасность и предсказуемость. В нашем курсе модель P2P мы не изучаем, но знать о её существовании необходимо.
Клиент–сервер: чёткое разделение - клиенты обращаются к серверу; сервер - центральная точка. Удобно для веба, почты, API. Сервер можно обновлять и защищать централизованно, но он становится узким местом и единой точкой отказа.
P2P: все узлы равноправны, данные могут идти между любыми парами. Хорошо для массовой раздачи файлов и децентрализованных сервисов. Сложнее администрировать и обеспечивать конфиденциальность; часть трафика может идти через других участников.
Чтобы узлы сети понимали друг друга, нужны протоколы - согласованные правила: в каком формате передаются сообщения, в каком порядке отправляются запросы и ответы, как обрабатываются ошибки. Без протоколов каждая программа «говорила» бы по-своему и взаимодействие было бы невозможно.
Протоколы задают синтаксис (например, формат HTTP-заголовков) и семантику (что значит код 200 или 404). Они могут быть стандартизированы (RFC для интернет-протоколов) или де-факто общепринятыми. На разных «уровнях» сети работают разные протоколы: прикладные (HTTP, DNS), транспортные (TCP, UDP), сетевые (IP) и т.д.
Сетевое взаимодействие разбивают на уровни (слои), чтобы разделить задачи: приложение не думает о том, как пакеты летят по проводам, а драйвер сетевой карты не разбирает HTTP. Каждый уровень использует услуги уровня ниже и предоставляет услуги уровню выше; между одноимёнными уровнями на разных узлах «логически» общаются соответствующие протоколы.
Так проще разрабатывать и менять протоколы: можно заменить реализацию одного уровня, не переписывая остальные. Две самые известные модели - OSI (7 уровней) и TCP/IP (4 уровня). Модель OSI разрабатывалась с конца 1970-х годов и была принята как международный стандарт в 1984 году организациями ISO (стандарт ISO 7498) и ITU-T (X.200). Стек TCP/IP сложился в практике ARPANET/Интернета: ключевые RFC (IP - RFC 791, TCP - RFC 793) опубликованы в 1981 году, а с 1983 года TCP/IP стал стандартным протоколом сети ARPANET. В реальном Интернете ориентируются на TCP/IP; модель OSI остаётся эталонной для объяснения уровней.
Модель OSI (Open Systems Interconnection) описывает семь уровней, от приложения до физической среды:
В курсе мы идём сверху вниз: сначала прикладной уровень (веб, DNS), потом транспорт, сеть, канал.
Кроме модели OSI существует и другая модель — альтернативная, которая сложилась на практике и называется TCP/IP. В стеке TCP/IP уровней четыре. Его называют ближе к реальности Интернета, потому что именно на TCP/IP построен реальный Интернет: ARPANET перешла на TCP/IP в 1983 году, и с тех пор все протоколы Сети (HTTP, DNS, маршрутизация) работают поверх этого стека. Модель OSI — эталонная «учебная» схема с семью уровнями; в практике разработки и в оборудовании ориентируются на четыре уровня TCP/IP. В следующем занятии мы подробно разберём различия между этими двумя моделями.
При открытии страницы в браузере задействованы все четыре: приложение (HTTP), транспорт (TCP), сеть (IP), канал (Ethernet/Wi‑Fi).
На верхнем уровне работают приложения и прикладные протоколы. Браузер формирует HTTP-запрос (метод, URL, заголовки); почтовый клиент использует SMTP и IMAP; мессенджер - свой протокол поверх TCP или UDP. Здесь же работает DNS: преобразование имени домена в IP-адрес - это прикладная служба.
Данные приложения передаются «вниз» транспортному уровню в виде потока или сообщений; транспортный уровень упаковывает их в сегменты (TCP) или датаграммы (UDP) и передаёт сетевому уровню.
Транспортный уровень (TCP, UDP) обеспечивает доставку данных между процессами на разных узлах. TCP устанавливает соединение, гарантирует порядок и повторную передачу при потерях; UDP просто отправляет пакеты без установки соединения. Порты позволяют различать приложения на одном хосте.
Сетевой уровень (IP) отвечает за адресацию (IP-адреса) и маршрутизацию пакетов по сети. Маршрутизаторы смотрят на IP-заголовок и решают, куда переслать пакет дальше, при этом могут выбирать один из нескольких возможных маршрутов доставки. Так данные доходят от вашего компьютера до сервера и обратно.
Канальный уровень организует передачу кадров в пределах одного сегмента сети (например, по Ethernet или Wi‑Fi). На нём решаются задачи установления логического соединения между узлами сегмента, согласования скоростей передатчика и приёмника, а также управления доступом к среде в широковещательной сети. В сети Wi‑Fi, к которой подключено несколько устройств, если они передают данные одновременно, возможны искажения и потери данных; канальный уровень регламентирует, кто и когда может вести передачу. Он знает MAC-адреса, обрабатывает коллизии (в Ethernet), коммутаторы работают на этом уровне.
Физический уровень - это сама среда: электрические сигналы по витой паре, свет в оптоволокне, радиоволны в Wi‑Fi. Кодирование битов, скорости, разъёмы. В курсе мы касаемся его кратко; основное внимание - приложение, транспорт, сеть, канал.
Когда вы вводите URL в браузере, происходит примерно следующее. Сначала браузер или ОС отправляет DNS-запрос: «какой IP у домена example.com?» Запрос уходит на DNS-сервер: это может быть сервер вашего провайдера (ISP), публичный резолвер (например Google Public DNS - 8.8.8.8, Cloudflare - 1.1.1.1; компании размещают их в дата-центрах по всему миру) или корпоративный DNS. Сами записи «домен → IP» хранятся в распределённой иерархии: корневые DNS-серверы (13 групп, операторы - Verisign, ICANN, университеты, RIPE NCC и др., физически серверы разнесены по разным странам и городам), затем серверы зон (.com, .ru и т.д.), затем серверы конкретных доменов. DNS-сервер отвечает IP-адресом. Затем браузер устанавливает TCP-соединение с этим IP на порт 80 (HTTP) или 443 (HTTPS) и отправляет HTTP-запрос (GET с URL и заголовками). Сервер отдаёт HTTP-ответ с телом (HTML и т.д.).
В практике вы увидите эту цепочку во вкладке Network инструментов разработчика: запросы к DNS (иногда отображаются как отдельные или внутри других запросов) и HTTP/HTTPS-запросы к серверам с их статусами и заголовками.
Интернет - сеть сетей; обмен строится на запросах и ответах. Клиент–сервер - основная модель: клиент запрашивает, сервер отвечает. P2P - равноправные узлы без единого центра. Протоколы задают формат и порядок обмена. Модели OSI (7 уровней) и TCP/IP (4 уровня) описывают разбиение на слои; мы смотрим сверху вниз: приложение (HTTP, DNS), транспорт (TCP/UDP), сеть (IP), канал и физический уровень.
Дальше - короткие задания на закрепление, затем тест и практика в DevTools.
Сопоставьте пример с архитектурой.
Протокол в сети нужен для того, чтобы:
Расставьте уровни стека TCP/IP в правильном порядке сверху вниз (первый - самый верхний).
Для доступа к практике нужно набрать не менее 80% (минимум 7 из 8 правильных ответов).
1. Интернет - это…
2. В архитектуре клиент–сервер инициирует запрос…
3. В P2P узлы…
4. Протокол задаёт…
5. В модели TCP/IP верхний уровень - это…
6. DNS используется для…
7. HTTP - это протокол уровня…
8. Нисходящий подход в курсе означает…
Выполните пошаговые действия на своём компьютере: откройте браузер, включите инструменты разработчика, перейдите на вкладку Network и отследите запросы DNS и HTTP при загрузке страницы. Каждый следующий экран - один шаг. Делайте шаги по порядку у себя в браузере и нажимайте «Дальше».
После выполнения нажмите «Дальше».
Внизу или сбоку откроется панель с вкладками (Elements, Console, Network и др.).
Если запросы уже идут - вы увидите список. Пока можно оставить панель пустой: мы очистим её и загрузим страницу заново.
https://www.example.com или главную страницу поисковика, и нажмите Enter. Дождитесь полной загрузки страницы.
В панели Network появятся запросы: первый - обычно документ HTML, затем ресурсы (CSS, JS, картинки) с того же или других хостов.
Откроется панель с деталями: заголовки запроса и ответа, время, размер, статус (200, 304 и т.д.).
Если DNS уже закеширован, «DNS Lookup» может быть 0 ms - это нормально.
Вы открыли DevTools, перешли на вкладку Network, загрузили страницу и просмотрели запросы: основной HTTP(S)-запрос за документом, заголовки запроса и ответа, связь с DNS (через Remote Address и при необходимости Timing). Это соответствует прикладному уровню (HTTP, DNS) и цепочке «DNS → TCP → HTTP», которую мы разбирали в теории.
Ниже - дополнительные задания: интерактивы (тип сети, клиент–сервер) и пошаговые действия в терминале (IP, MAC, ping, шлюз, отчёт).
Сначала выполните два интерактивных задания (тип сети LAN/WAN и роли клиент–сервер), затем - пошаговые действия за компьютером: узнать свой IP и маску, MAC-адрес, проверить связность с шлюзом, вывести список интерфейсов и сформулировать роль шлюза. В конце - краткий отчёт о вашей рабочей сети.
Сопоставьте каждый сценарий с типом сети: выберите LAN (локальная сеть) или WAN (глобальная/распределённая сеть).
В сценарии «браузер запрашивает страницу у веб-сервера» соедините роли с участниками: выберите в каждом списке правильный вариант.
ipconfig, в macOS/Linux - ifconfig или ip a. Найдите активный интерфейс (например «Ethernet» или «Беспроводная сеть», eth0 или en0).
Пример (Windows): в выводе ищите «IPv4-адрес» и «Маска подсети».
MAC-адрес (Media Access Control) - это уникальный идентификатор сетевого адаптера, «зашитый» производителем. Он нужен на канальном уровне: по нему коммутатор или точка доступа доставляют кадры именно вашему устройству в пределах одного сегмента сети. В отличие от IP, MAC не меняется при переезде в другую сеть и используется для локальной доставки (Ethernet, Wi‑Fi).
ipconfig (Windows) найдите строку «Физический адрес» - это MAC-адрес сетевого адаптера. В Linux/macOS в ifconfig или ip link ищите поле link/ether.
00:1A:2B:3C:4D:5E). Он уникален для каждого сетевого интерфейса и используется на канальном уровне.
Ping - это утилита проверки доступности узла по сети: ваш ПК отправляет служебные пакеты (протокол ICMP), узел (например маршрутизатор) отвечает. Зачем нужен: быстро понять, «доходит ли» связь до шлюза, провайдера или любого IP. Типичные случаи: не открывается интернет - пингуем шлюз (если ответа нет, проблема до роутера); пингуем 8.8.8.8 - проверяем выход в интернет; при диагностике смотрят на потери пакетов и задержку (RTT). Так вы убеждаетесь, что канал до маршрутизатора работает.
ipconfig найдите «Основной шлюз» (Default Gateway) - это IP-адрес маршрутизатора. В Linux: ip route | grep default.
ping <IP шлюза>, например ping 192.168.1.1. Убедитесь, что приходят ответы (ответы от 192.168.1.1: число байт, время, TTL).
Если пинг проходит - связь с шлюзом есть; маршрутизатор доступен.
ipconfig (Windows) или ip a / ifconfig (macOS/Linux). Просмотрите все перечисленные интерфейсы.
Зачем это делать: вы научитесь отличать реальный сетевой интерфейс от виртуального и loopback, понимать, через какой адаптер ПК выходит в сеть и как связаны адрес, маска и шлюз у каждого интерфейса.
Шлюз по умолчанию - это узел (обычно маршрутизатор), через который ваш ПК отправляет весь трафик в другие сети. Зачем он нужен: ваш компьютер знает только свою подсеть; чтобы доставить пакет в интернет или в другую подсеть, он отдаёт его шлюзу, а тот по таблице маршрутизации пересылает пакет дальше. Примеры: домашний роутер (он же шлюз для ПК и телефонов), корпоративный маршрутизатор, в некоторых схемах - модем или внешний кабель провайдера, ведущий в его сеть.
Настройка того, как распределяется пропускная способность между абонентами (статически или динамически), обычно делается в настройках роутера или у провайдера.
В каком сценарии выгоднее динамическое распределение пропускной способности (ресурсы выдаются тем, кто сейчас использует сеть)?
При динамическом распределении канал не простаивает: полоса отдаётся активным пользователям. При статическом каждому выделена фиксированная доля, даже если он не пользуется сетью.
Подготовьте короткий отчёт (можно в тетради или в файле), включив:
Файл сдавать не нужно - это задание для самопроверки и закрепления. В следующих занятиях вы будете использовать Wireshark, HTTP и DNS в практике.