Интернет — как это работает?

Внимание, эта страница достаточно сырая, и не претендует на звание самого правильного освещения темы. Информация будет периодически корректироваться и дополняться. Комментарии приветствуются.

Простыми словами: интернет — большая компьютерная сеть. Работает за счёт разнобразного сетевого оборудования и серверов. Сетевое оборудование (маршрутизаторы и прочее) обеспечивает передачу данных между серверами и пользователями сети.

Физическое оборудование

Серверы, в физическом и упрощённом виде — компьютеры, подключённые к глобальной сети. Они работают не выключаясь — дни, месяцы и годы. Это могут быть самые разные компьютеры — и привычные всем десктопы, и серверные стойки, размером с небольшой шкаф, и мини-компьютеры вроде Raspberry Pi, или даже мобильные телефоны (если, конечно, на них утсановить серверный софт и всё правильно настроить) и многие другие устройства.

Серверы работают под управлением разных операционных систем. Каждая больше подходит под свою задачу, но достаточно часто, для веб-серверов используются системы семейства Linux. Хотя, это так же может быть и Windows и Mac OS — жёстких правил нет, и не может быть.

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

Серверные приложения

Для работы скриптов нужен отдельный класс программ — веб-серверы. Оп — это словосочетание только что было использовано, когда я говорил про компьютеры, а теперь уже — про программы… Как так? Вообще, более правильно, эти программы будут называться «web application server» — «сервер сетевых приложений», но для простоты оно тоже будет называться веб-сервером.

Так вот, вся суть их работы сводится к одной вещи — получать запросы и отдавать данные в ответ. Есть много разных программ веб-серверов, наиболее популярными являются Apache HTTP server (или просто Apache, httpd), nginx, Node.js lighttpd.

На этом сайте, в основном я буду писать про Апач.

Когда кто-то запускает браузер и открывает сайт, это приводит к отправке запроса на сервер, обслуживающий этот сайт. Сервер обрабатывает запрос на основе определённых правил и настроек, передаёт данные запроса веб-приложению. Веб-приложение выполняет свою бизнес-логику, формирует код HTML и передаёт его обратно серверу, который уже отдаёт всё браузеру.

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

Что происходит, когда вы открываете сайт в браузере?

С момента, когда вы набрали адрес сайта в браузере и нажали «Enter», успевает пройти немало согласованных действий как на вашем компьютере, так и в оборудовании вашего интернет-провайдера, так и на конечном веб-сервере, куда ушёл запрос на передачу страницы вашему браузеру.

Определение IP адреса сервера

В данном случае можно применить такую аналогию: вы знаете, как зовут человека, и хотите ему позвонить. Номера телефона у вас нет. Но есть телефонный справочник (предположим, что ФИО искомого человека уникально, и в справочнике никак не может оказаться повторяющихся имён — а в интернете так и есть, все домены уникальны, и повторений быть не может). Вы ищите ФИО в справочнике, и в конце концов находите его телефонный номер.

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

  • Глянет в hosts-файле, не задан ли принудительно IP-адрес для выбранного домена. Если он там есть — отдаст его браузеру, и тот перейдёт к отправке запроса серверу. По аналогии — может вы заранее записали номер телефона.
  • Если в хост-файле ничего нет, то проверит в провайдерских DNS, на какой IP адрес указывает домен, и пошлёт запрос по этому IP. Вот это уже похоже на поиск в телефонной книге.
  • Если и там ничего нет — выведет сообщение об ошибке, сообщит, что такой домен не найден. Варианты исчерпаны — можно поискать другой сайт.

Отпавка запроса серверу

Зная, какой IP адрес у сервера, браузер может отправить запрос на получение страницы с этого самого сервера.

Это будет аналогично тому, если трубку возьмёт мама вашего товарища, и вы попросите его к телефону — браузер попросит отдать определённую страницу конкретного сайта.

Если такая страница есть — сервер сгенерирует её содержимое, и отдаст браузеру, а тот уже красиво (или не очень) вам его покажет.

Рендеринг (отрисовка) страницы

Полученный HTML-код, браузер отобразит в виде веб-странцы, со всеми интерактивными элементами и прочими её составляющими, если таковые были.

Продолжение следует…

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.