Вы открываете браузер, набираете в адресной строке адрес и видите страницу сайта. Откуда появляется эта страница и как она сделана?
При просмотре веб-страницы вы осуществляете простейшее действие – открываете документ.
В компьютере есть жёсткий диск, а на нём хранятся файлы-документы. Но любой файл состоит только из чисел, поэтому чтобы увидеть, что внутри него, нужна специальная программа.
Посмотреть текстовый документ можно с помощью программы Notepad или Word. Электронную таблицу – с помощью программы Excel. Изображения, аудио- и видеофайлы, 3D-сцены – тоже документы, и каждый открывается своей программой.
Точно так же и веб-документ открывается программой, которая называется "веб-браузер", то есть "просмотрщик веб-документов".
Что из себя представляет веб-документ? Это обычный текстовый документ, только снабжённый разметкой на языке HTML (HyperText Markup Language, язык разметки гипертекста). Эта разметка предназначена для веб-браузера и указывает ему, как правильно отобразить текст, где что расположить, как отформатировать и т.д. Текст с разметкой называется гипертекстом.
HTML-документ может храниться на диске вашей машины, и тогда его открытие ничем не будет отличаться от открытия любого другого документа. Но конечно, смысл веб-технологии не в этом.
Сетевое соединение позволяет вам просмотреть документ, который находится на другой машине. Очевидно, что для этого нужно послать на ту машину запрос. В запросе нужно сообщить: мне нужен такой-то документ.
Но если просто так послать запрос на другую машину, то ничего не произойдёт. Представьте, что вы позвонили в организацию, где на рабочем месте нет сотрудника. Телефон будет звонить, но ответа вы не получите, потому что отвечать некому.
Для того чтобы вы получили ответ, на удалённой машине должна быть запущена специальная программа: веб-сервер. Сервер это значит "исполнитель". Он "слушает" поступающие запросы и исполняет ("сервирует") их.
Большинство поступающих на сервер запросов – это простое требование открыть тот или иной документ. Получив такой запрос, сервер ищет документ на диске. Отыскав его, он отправляет его в ответ.
Получается примерно следующая схема:
- Вы говорите браузеру: хочу посмотреть такой-то файл на другой машине.
- Браузер: Через сеть совершает "телефонный звонок" на ту машину.
- Если с той стороны "на телефоне" сидит веб-сервер, он "берёт трубку" и слушает.
- Браузер: – Привет, это браузер. Говорят, на этой машине есть вот такой файл, пришли мне его.
- Сервер (проверяет): – Да, есть такой файл. Передаю по буквам, записывай...
- Браузер: – Всё получил, ну давай, пока. (Кладёт трубку).
И вот ваш браузер получил документ, и теперь вы можете его посмотреть с помощью, собственно, этого самого браузера.
Как открываются сайты?
Сайт – это просто машина в сети, на которой хранится коллекция веб-документов и работает веб-сервер. Когда мы открываем сайт в браузере, мы пишем его сетевое имя. Например: zdg.ru. Это всё равно что телефонный номер, по которому можно звонить. То есть браузер звонит туда и просит прислать файл. Но какой файл? Мы же не указываем никакое имя файла?
В этом случае браузер просто говорит серверу – пришли что хочешь, просто дай ответ. У сервера обычно заготовлен специальный файл, который высылается по умолчанию. Это, как правило, index.html, но имя файла можно изменить на другое.
Следовательно, когда мы открываем в браузере просто сайт без имени файла, в результате мы получаем, условно, файл index.html с этого сервера.
Сетевые протоколы
Вышеописанный диалог между браузером и сервером следует определённому протоколу. Там чётко регламентировано, кто должен говорить первым, что нужно говорить и что отвечать в разных ситуациях, и т.д.
В частности, протокол разговора с веб-сервером называется HTTP (HyperText Transfer Protocol, протокол передачи гипертекста).
Именно поэтому полный адрес сайта в браузере должен выглядеть так:
http://zdg.ru
Буквы http:// перед именем сайта указывают на то, что браузер должен общаться с сервером именно по HTTP-протоколу. Сравните, например, с таким адресом:
file:///C:/web/zdg/index.html
Здесь уже другой протокол, file://, и как нетрудно догадаться, он указывает на то, что файл надо... просто читать из файла, расположенного в /C:/web/zdg/index.hml, то есть прямо на локальной машине.
Есть также протокол FTP (File Transfer Protocol, протокол передачи файлов). Он не предназначен для просмотра веб-страниц, а только для закачки файлов. Строго говоря, веб-браузер не обязан его поддерживать, потому что для этого есть отдельная программа – FTP-клиент. Но большинство браузеров умеют быть и FTP-клиентами. Поэтому вы можете зайти из браузера на FTP-сайт, например:
ftp://ftp.cs.brown.edu/
Там вы увидите не страницу сайта, а просто список файлов и папок, как в обычном проводнике:
Со стороны сервера вам на этот раз отвечает не программа-http-сервер, а программа-ftp-сервер. Да, это разные программы, и обе они "берут трубку", только отвечают на разные запросы и используют разный протокол.
Нас в дальнейшем будет интересовать протокол HTTP и соответственно HTTP-сервер как основной компонент сайтов.
Есть ещё протокол HTTPS. Буква S значит Secure (безопасный). Это HTTP, работающий через зашифрованный канал связи. Вы можете зайти на сайт через http:// или https://, но не всегда. В настоящее время всё больше сайтов работает исключительно через HTTPS в целях безопасности, но также остаются сайты, которые поддерживают только HTTP.
В следующих выпусках мы разберёмся, что такое сокет и порт, установим собственный HTTP-сервер и сделаем собственный сайт, а в недалёкой перспективе более подробно разберём все аспекты работы веб-сервера, научимся программировать фронт- и бэкэнд, подключим базу данных и многое другое.
Читайте дальше: Порты, сокеты и выбор веб-сервера