1. Как работает интернет: клиенты, серверы и базовые протоколы
Как работает интернет: клиенты, серверы и базовые протоколы
Для многих пользователей интернет выглядит как магия: достаточно ввести адрес сайта, и на экране мгновенно появляется текст, картинки и видео. Однако за этой кажущейся простотой скрывается сложная, но строго упорядоченная система физических кабелей, маршрутизаторов и программных правил. Чтобы стать успешным разработчиком, необходимо понимать, как именно данные путешествуют от дата-центра до экрана смартфона или монитора.
В основе архитектуры современного веба лежит концепция взаимодействия двух главных участников: тех, кто запрашивает информацию, и тех, кто ее предоставляет.
Клиенты и серверы: разделение труда
Вся работа в сети строится на архитектуре «клиент-сервер». Клиент — это устройство или программа, которая инициирует связь и запрашивает данные. В повседневной жизни клиентом чаще всего выступает веб-браузер (Google Chrome, Safari) на вашем ноутбуке или мобильное приложение на смартфоне.
Сервер — это мощный компьютер, который хранит данные (веб-страницы, изображения, видео) и программную логику. Его главная задача — непрерывно слушать входящие запросы от клиентов, обрабатывать их и отправлять правильный ответ обратно.
Для лучшего понимания можно использовать аналогию с рестораном. Клиент — это посетитель, который изучает меню и делает заказ. Официант передает этот заказ на кухню. Сервер — это кухня, где повара собирают блюдо из нужных ингредиентов (данных) и отдают его обратно в зал.
| Характеристика | Клиент | Сервер | | --- | --- | --- | | Основная роль | Формирует запросы и отображает полученный результат пользователю | Принимает запросы, выполняет вычисления, обращается к базам данных и отдает ответ | | Инициатива | Всегда инициирует соединение первым | Пассивно ожидает входящих подключений | | Примеры ПО | Браузеры, почтовые программы, мобильные клиенты | Веб-серверы (Nginx, Apache), серверы баз данных (PostgreSQL) |
Адресация в сети: IP и DNS
Чтобы клиент и сервер могли найти друг друга в глобальной сети, им нужны уникальные координаты. Эту роль выполняет IP-адрес (Internet Protocol Address) — уникальный числовой идентификатор устройства в сети.
В стандарте IPv4 адрес выглядит как четыре числа от 0 до 255, разделенные точками. Например, сервер может иметь адрес 142.250.190.46. Однако людям крайне сложно запоминать такие комбинации цифр для каждого сайта.
Для решения этой проблемы была создана DNS (Domain Name System — система доменных имен). Это гигантская распределенная телефонная книга интернета, которая переводит понятные человеку адреса в машинные IP-адреса.
> DNS — это служба, которая транслирует доменные имена, такие как example.com, в IP-адреса, необходимые компьютерам для связи друг с другом.
Когда вы вводите адрес сайта в браузере, происходит следующее:
Процесс разрешения DNS-имени обычно занимает от 20 до 50 миллисекунд. Если сайт посещается часто, это время сокращается до 0 миллисекунд благодаря локальному кэшированию на устройстве пользователя.
Базовые протоколы: TCP/IP и HTTP
Когда IP-адрес известен, устройствам нужно договориться о том, на каком языке они будут общаться и как именно передавать данные. Для этого используются протоколы.
Протокол — это строгий набор правил и стандартов, определяющий формат и последовательность сообщений, которыми обмениваются сетевые устройства.
Надежная доставка: TCP/IP
Фундаментом передачи данных в интернете является стек протоколов TCP/IP (Transmission Control Protocol / Internet Protocol).
Данные в интернете не передаются единым сплошным потоком. Протокол TCP разбивает большие файлы на маленькие фрагменты — пакеты. Каждый пакет получает порядковый номер и адрес назначения. Пакеты могут путешествовать до сервера разными маршрутами через разные узлы связи, а по прибытии TCP собирает их обратно в правильном порядке. Если какой-то пакет потерялся в пути, TCP автоматически запросит его повторную отправку.
Размер одного стандартного сетевого пакета обычно составляет около 1500 байт. Если мы хотим передать изображение размером 1 Мегабайт (1 048 576 байт), можно рассчитать количество пакетов:
Где — количество пакетов, — общий размер файла в байтах, а — размер одного пакета. Подставив значения, получим . Таким образом, для загрузки одной небольшой картинки ваш компьютер принимает и собирает воедино около 699 отдельных фрагментов данных.
Язык веба: HTTP
Если TCP/IP отвечает за транспортировку пакетов, то HTTP (HyperText Transfer Protocol) определяет смысл передаваемых сообщений. Это прикладной протокол, на котором строится весь современный веб.
Общение по HTTP состоит из текстовых запросов и ответов. Когда браузер хочет получить веб-страницу, он формирует HTTP-запрос, который выглядит примерно так:
В этом запросе:
* GET — это метод, указывающий, что мы хотим получить данные (существуют также методы POST для отправки данных, DELETE для удаления и другие).
* /index.html — путь к конкретному файлу на сервере.
Host, Accept-Language и User-Agent — это заголовки (headers*), передающие серверу дополнительную информацию о клиенте.
Получив запрос, сервер обрабатывает его и возвращает HTTP-ответ. Ответ всегда содержит статус-код, который сообщает об успехе или неудаче операции.
Например, код 200 OK означает, что все прошло отлично и сервер высылает запрошенный документ. Код 404 Not Found говорит о том, что файл не существует, а 500 Internal Server Error сигнализирует о поломке на самом сервере.
Жизненный цикл веб-запроса
Теперь мы можем собрать все изученные концепции в единую картину. Вот что происходит за те доли секунды, когда вы нажимаете клавишу Enter в адресной строке браузера:
GET /).200 OK и содержимым страницы, разбитым на TCP-пакеты.Понимание этого скрытого механизма — первый шаг к осознанной веб-разработке. Зная, как браузер общается с сервером, вы сможете оптимизировать скорость загрузки сайтов, правильно настраивать обмен данными и эффективно находить ошибки в своих будущих приложениях.