Василий Тимофеев
Member
HTTP (HyperText Transfer Protocol - протокол передачи гипертекста) был разработан как основа World Wide Web. <br><br>Работа по протоколу HTTP происходит следующим образом: программа-клиент устанавливает TCP-соединение с сервером (стандартный номер порта-80) и выдает ему HTTP-запрос. Сервер обрабатывает этот запрос и выдает HTTP-ответ клиенту. <br><br>Структура HTTP-запроса <br><br>HTTP-запрос состоит из заголовка запроса и тела запроса, разделенных пустой строкой. Тело запроса может отсутствовать. <br><br>Заголовок запроса состоит из главной (первой) строки запроса и последующих строк, уточняющих запрос в главной строке. Последующие строки также могут отсутствовать. <br><br>Запрос в главной строке состоит из трех частей, разделенных пробелами: <br><br>Метод (иначе говоря, команда HTTP): <br><br>GET - запрос документа. Наиболее часто употребляемый метод; в HTTP/0.9, говорят, он был единственным. <br><br>HEAD - запрос заголовка документа. Отличается от GET тем, что выдается только заголовок запроса с информацией о документе. Сам документ не выдается. <br><br>POST - этот метод применяется для передачи данных CGI-скриптам. Сами данные следуют в последующих строках запроса в виде параметров. <br><br>PUT - разместить документ на сервере. Насколько я знаю, используется редко. Запрос с этим методом имеет тело, в котором передается сам документ. <br><br>Ресурс - это путь к определенному файлу на сервере, который клиент хочет получить (или разместить - для метода PUT). Если ресурс - просто какой-либо файл для считывания, сервер должен по этому запросу выдать его в теле ответа. Если же это путь к какому-либо CGI-скрипту, то сервер запускает скрипт и возвращает результат его выполнения. Кстати, благодаря такой унификации ресурсов для клиента практически безразлично, что он представляет собой на сервере. <br><br>Версия протокола - версия протокола HTTP, с которой работает клиентская программа. <br><br>Таким образом, простейший HTTP-запрос может выглядеть следующим образом: <br><br>GET / HTTP/1.0 <br><br>Здесь запрашивается корневой файл из корневой директории web-сервера. <br><br>Строки после главной строки запроса имеют следующий формат: <br><br>Параметр: значениe. <br><br>Таким образом задаются параметры запроса. Это является необязательным, все строки после главной строки запроса могут отсутствовать; в этом случае сервер принимает их значение по умолчанию или по результатам предыдущего запроса (при работе в режиме Keep-Alive). <br><br>Перечислю некоторые наиболее употребительные параметры HTTP-запроса: