Изучал для себя Web-технологии и чтобы стало более понятно написал эту небольшую памятку.
Сервером (или серверной частью) является процесс (выполняющиеся в многозадачной ОС программа), который откликается на запросы из сети. На одной машине (или т.н. хосте) может быть запущено несколько серверных программ. Для того, чтобы из сети обратиться к нужной, используется номер порта – специально передаваемое модулем tcp/ip со стороны клиента число, от 0 до 65535, по которому модуль tcp/ip на стороне сервера определяет какому процессу передать пакет из сети.
Web cервер нужен для передачи данных по протоколу HTTP. Протокол предусматривает передачу файлов от сервера к клиенту (команда GET) и передачу информации от клиента серверу (команда GET или POST). Передаваемые от сервера данные не всегда являются файлами в их изначальном понимании (т.е. заранее записанной на накопитель информацией). Поэтому правильно называть их не файлами, а ресурсами. Отсюда адрес страницы еще называется URL – universal resourse locator. Наиболее часто ресурсы представляют из себя HTML-страницы.
HTML – это текстовый файл со специальной разметкой. Разметка осуществляется так называемыми тэгами – специально выделенными из текста командами для просмоторщика страниц (скажем MS Internet Explorer или Mozilla), который называется браузер. Теги задаются угловыми скобками. С помощью тэгов определяются все элементы оформления страницы: формат, таблицы, формы, размещение рисунков, окна ввода данных, реакция на действия пользователя и т.д. Основной особенностью HTML (гипертекст) является наличие т.н. ссылок – специальных указателей как на определенные места в самом файле, так и на другие файлы.
Чтобы браузер знал, как обработать запрошенный ресурс (отобразить как текст, рисунок, вывести окно загрузки и т.п.), сервер перед передачей файла передает т.н. заголовок HTTP. В заголовке указывается тип передаваемых данных.
Для придания странице интерактивности (“живости”, возможности немедленной рекции на действия пользователя, предварительной проверки введеных пользователем данных, также самостоятельного изменения страницы и т.п.), в HTML могут быть добавлены клиентские скрипты. В таком случае HTML называется DHTML – динамический HTML. Это кросплатформенные программы, написанные на специальном интерпретируемом языке. Как правило это JavaScript, Adobe Flash. JavaScript представляет собой обычный тест и может как входить в состав страницы, так и находится в отдельном ресурсе. Flash представляет собой двоичные данные и всегда находится в отдельном ресурсе.
Для получения ресурсов с сервера используется команда GET. Как правило активизация передачи данных на сервер происходит при нажатии кнопки или ссылки на HTML странице. Броузер запрашивает у сервера файл-обработчик (не обязательно HTML-страница, cмотри ниже) этого события. Для передачи данных может использоваться один из 2-х способов (еще называют методы) – GET или POST. GET – к имени запрашиваемого файла добавляются передаваемые данные в виде ?имя_переменной1=значение1&имя_переменной2 = значение2 и т.д. POST – все тоже самое, только передается отдельной командой POST.
Чтобы обработать полученные от клиента данные, используются т.н. серверные скрипты – какой либо исполняемый код. Они могут либо выполнятся непосредственно процессором сервера или с помощью интерпретатора. Для взаимодействия сервера со скриптами используется интерфейс cgi (Common Gateway Interface). Скрипт получает от сервера переданные ему от клиента данные и выдает серверу результаты своей работы, которые сервер отправляет клиенту. Обмен данными происходит через stdin (команда POST), переменные окружения (команда GET) и stdout (результаты работы скрипта).
Чтобы сервер знал, какой файл надо просто отдать клиенту, а какой запустить на выполнение, в настройках сервера прописывается каталог со скриптами (любой файл, запрошенный из этого каталога, не отдается клиенту, а запускаеся на выполнение и клиенту отдаются только результаты его работы), а также типы файлов, которые следует рассматривать как скрипты и интерпретаторы для них.