Механизмы функционирования динамических сайтов

Технологу, проектирующему веб-приложения на основе серверных решений, как никакому другому веб-разработчику необходимо глубокое и всестороннее понимание законов, лежащих в основе устройства и функционирования Всемирной паутины (World Wide Web — WWW; во избежание назойливых повторов далее в этой книге мы будем пользоваться в качестве синонима также словом Web).

Речь идет, главным образом, о протоколе HTTP, а также о процессах, происходящих на сторонах клиента и, в особенности, сервера, при взаимодействии между ними. Эти вопросы и являются предметом данной главы.

Описание протокола HTTP

Для начала я конспективно напомню читателю некоторые общеизвестные тезисы, справедливые по отношению к Интернету, Всемирной паутине и протоколу HTTP. Эти нехитрые положения должны быть хорошо знакомы разработчикам, уже имеющим опыт создания сайтов, пусть даже и статических; тем не менее, освежить их в памяти, я уверен, не помешает. В примечаниях, сопровождающих данный подраздел, на всякий случай приводятся более подробные разъяснения некоторых понятий, фигурирующих в основном содержании.
Интернет представляет собой глобальное, мирового масштаба, объединение компьютерных сетей, взаимодействующих с использованием самых разнообразных каналов связи под управлением протоколов стека (т. е. иерархического семейства) TCP/IP.
Примечание
Протокол вообще — весьма четкий и определенный набор правил и соглашений, предписывающий, каким образом должны производиться обмен информацией и ее обработка.
Подробное описание всех протоколов и других открытых спецификаций, используемых в Интернете, обнародуется в документах, называемых RFC (Request For Comments — запрос для обсуждений). Они имеют сквозную нумерацию по хронологии создания. Эти документы можно без особого труда найти в Сети — например, на сайте Комитета по инженерным проблемам Интернета (IETF, Internet Engineering Task Force); см. www.ietf.org/rfc.html.
Всемирная паутина является одной из многочисленных прикладных служб Интернета, используя его как инфраструктуру, как транспорт для сообщений. В этом смысле Всемирная паутина находится в одном ряду с такими сервисами, как, например, электронная почта или телеконференции Usenet, существовавшими задолго до появления Web.
Примечание
Службой, или, иначе, сервисом, в общем случае принято называть пару взаимодействующих по определенному протоколу процессов (программ), один из которых называется сервером, а другой — клиентом. Сервер — это процесс, предоставляющий какой бы то ни было класс услуг по запросу клиента. Клиент — это потребитель услуг, оказываемых сервером. Взаимодействие между клиентом и сервером всегда инициируется клиентом. Когда программа-сервер и программа-клиент функционируют на различных компьютерах, служба в таком случае называется распределенной, а термины «сервер» и «клиент» не возбраняется применять для обозначения самих этих физических машин.
Сформировавшись много позже Интернета как инфраструктуры, Всемирная паутина, реализующая идеологию распределенной интерактивной гипермедиа-среды, обеспечивающей удобный доступ к огромным массивам информации, явилась, за счет своей привлекательности, катализатором лавинообразного роста Интернета и значительно потеснила другие службы. Такой сценарий привел к тому, что понятия «Интернет» и «Всемирная паутина» к настоящему моменту фактически смешались в обывательском сознании, но подобное отождествление, тем не менее, глубоко ошибочно и неправомерно с точки зрения специалиста.
Работоспособность Всемирной паутины как распределенной службы обеспечивает протокол HTTP (HyperText Transfer Protocol — протокол передачи гипертекста). В структуре стека протоколов TCP/IP он находится на вершине иерархии, на прикладном уровне.
Для работы HTTP необходим транспортный протокол, обеспечивающий гарантированную доставку сообщений с использованием метода виртуальных каналов (т. е. с установлением соединения). В Интернете таковым является TCP (Transfer Control Protocol — протокол управления передачей).
Примечание
Иерархическая структура, в соответствии с которой протоколы вышележащего уровня могут пользоваться услугами, предоставляемыми протоколами нижележащего уровня, является одним из важнейших свойств стека протоколов TCP/IP, обеспечивающим гибкость и универсальность последнего. (Структуру стека TCP/IP принято подразделять в общей сложности на 4 уровня: сетевого интерфейса, межсетевого взаимодействия, транспортный и прикладной — мы перечислили их в порядке «снизу вверх».) В частности, благодаря такому архитектурному решению, протоколы прикладных служб Интернета довольно просты и используют для сообщений и содержащихся в них служебных полей обычный текстовый формат, понятный любому человеку, читающему по-английски. Не является исключением и протокол HTTP.
Наиболее актуальной на сегодняшний день версией протокола HTTP является 1.1.
HTTP 1.1 впервые описан в RFC 2068 (1997 г.), который замещен более поздним RFC 2616 (1999 г.). Обсуждаемая версия HTTP в основном поддерживается всеми современными браузерами и веб-серверами, поэтому большинство клиентских запросов в Web обслуживается именно в рамках протокола HTTP 1.1.
Более ранняя версия — HTTP 1.0 (описана в RFC 1945, 1996 г.) используется реже, но все же продолжает оставаться весьма распространенной.
Первоначальный вариант HTTP обозначается номером версии 0.9. К настоящему моменту он практически вышел из употребления.
Стандартным для HTTP номером TCP-порта является 80. При необходимости, однако, веб-серверы могут использовать и нестандартные порты, например, 8000 или 8080. (Примером такого случая может являться ситуация, когда требуется с какой-либо целью запустить веб-сервер на UNIX-машине с правами непривилегированного пользователя — для того, чтобы открыть порт 80, серверу необходимы права администратора.)
Примечание
Протоколы транспортного уровня позволяют обмениваться сообщениями весьма многочисленному спектру прикладных служб. Номер порта — это числовой идентификатор, при помощи которого транспортный протокол различает, какому именно прикладному протоколу принадлежит то или иное сообщение.
Для ряда прикладных протоколов определены стандартные номера портов. Например, FTP (File Transfer Protocol, протокол передачи файлов) обычно использует порт 21, SMTP (Simple Mail Transfer Protocol, простой протокол передачи почты) — порт 25 и т. д. Порты с номерами менее 1024 называются привилегированными, и именно к этому множеству относятся зарезервированные стандартные порты. В UNIX-системах их могут открывать только процессы, выполняющиеся от имени суперпользователя (т. е. администратора; обычно речь идет о пользователе с именем root). В отличие от привилегированных портов, порты с номерами от 1024 до 65535 могут произвольным образом применяться обычными пользователями.


© 2008-2018 ОптимизацияВебСайтов.ру


Любое использование текстового и графического контента сайта без активной ссылки на источник не доскается.