Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
net_tech / Лабораторнаработа 6 (FTP, WWWl).doc
Скачиваний:
21
Добавлен:
10.12.2013
Размер:
125.44 Кб
Скачать

Лабораторная работа 6.

Информационные сервисы

Протокол FTP

Создание анонимного FTP-сервера

Протокол HTTP

HTTP (HyperText Transfer Protocol) - прикладной клиент-серверный протокол типа "запрос-ответ" работающий поверх TCP (стандартный порт 80). Клиентом является броузер; сервером - WWW-сервер. В первой версии протокола (1.0) на одно TCP-соединение приходился один запрос и ответ, после чего соединение закрывалось. В настоящее время протокол позволяет выполнить несколько итераций в рамках одного соединения, что позволяет избежать накладных расходов на установление/закрытие соединений, снизить нагрузку на сеть и уменьшить время получения данных.

Последняя версия HTTP 1.1 описана в RFC-2616,2617.

Http-запрос

Запрос (Request) имеет следующий формат:

Строка запроса

Заголовки запроса

Заголовки данных*

Пустая строка

Данные*

Поля, помеченные звездочкой (*), присутствуют только, если в запросе использован метод POST или PUT (см. ниже).

Строка запроса имеет вид:

метод URI протокол/версия

Примеры:

GET / HTTP/1.1

POST /cgi-bin/sript?X=1&Y=a%20b HTTP/1.1

HEAD http://www.vvsu.ru/index.html HTTP/1.1

Основные методы:

GET

запрос документа, идентифицируемого указанным URI.

HEAD

запрос заголовков документа, идентифицируемого указанным URI (аналогично GET, но само содержимое документа не возвращается).

POST

пересылка данных на сервер (используется при заполнении форм). URI в этом случае обычно идентифицирует CGI-скрипт, который будет обрабатывать присланные данные, и результат этой обработки будет возвращен в HTTP-ответе.

Существуют также методы PUT и DELETE, предназначенные для управления документами на сервере, но используются они крайне редко.

URI является указателем на запрашиваемый ресурс. При непосредственном обращении к серверу, содержащему запрашиваемый ресурс, URI имеет неполный вид (см. выше примеры GET и POST). При обращении через прокси-сервер URI должен быть полным (см. выше пример HEAD).

Заголовки, передаваемые вслед за строкой запроса, делятся на собственно заголовки запроса и на заголовки данных, передаваемых в запросе (разумеется, если такие данные присутствуют). Каждый заголовок начинается с новой строки и состоит из ключевого слова, за которым следует двоеточие, и данных, например:

Accept: text/html, text/plain;q=0.5

Порядок следования заголовков не имеет значения.

Ниже приведены примеры заголовков запроса (за полным списком и описаниями обращаться к RFC-2616). Заголовки данных рассмотрены ниже в отдельном пункте.

Host: athena.vvsu.ru

Доменное имя сервера, к которому производится обращение. Этот заголовок позволяет создавать на одном компьютере несколько виртуальных веб-серверов с различным содержимым; при этом запрошенный URI относится к пространству документов того виртуального сервера, имя которого указано в заголовке "Host:". Разумеется, имена всех виртуальных серверов должны быть прописаны в DNS как псевдонимы того компьютера, на котором они размещены. Заголовок "Host:" - единственный, являющийся обязательным в HTTP-запросе версии 1.1.

Accept: text/html, text/plain

MIME-типы данных, которые клиент согласен принять в ответ на свой запрос. Множественные значения перечисляются через запятую. Обычно броузер указывает среди значений "*/*", что означает, что он готов принять данные любого типа (в крайнем случае он предложит пользователю сохранить их на диск). Значение "*/*" также подразумевается, если заголовок отсутствует. О MIME-типах см. тему 4. Фактически, этот заголовок полезен, только если сервер может предоставить один и тот же документ в разных форматах (например, как текст, HTML-файл или документ Word).

Accept-Charset: koi8-r, windows-1251;q=0.5

Кодировка символов в запрашиваемом документе, которую клиент хотел бы видеть. Несколько кодировок перечисляются через запятую. Для указания приоритета кодировки может быть использован параметр "q="; по умолчанию q=1 - наибольший приоритет. Звездочка (*) может быть использована для указания приемлемости любой кодировки; это же подразумевается, если заголовок отсутствует. Если сервер не может выдать документ ни в одной из приемлемых кодировок, то рекомендуется, чтобы он возвратил ошибку с кодом 406, однако допускается выдача запрошенного документа в какой-то другой кодировке.

Accept-Encoding: compress, gzip

Представление данных (в данном случае, сжатие), которое клиент понимает. Может быть использовано для запроса передачи документа в сжатом виде, если сервер это поддерживает.

Accept-Language: ru, en;q=0.2

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

User-Agent: Netscape/5.40; Solaris 2.5

Тип клиента (броузера).

Referer: http://athena.vvsu.ru/index.html

URL документа, в котором находилась ссылка на запрашиваемый документ. (То есть, если пользователь просматривает документ, находящийся по адресу http://athena.vvsu.ru/index.html, и выбирает в нем одну из ссылок, то броузер формирует запрос нового документа, на который указывает ссылка, а поле Referer в заголовке этого запроса имеет значение http://athena.vvsu.ru/index.html.) Обратите внимание, что написание заголовка противоречит правилам орфографии (по-английски правильно - "referrer").

Authorization: Basic d2VibWFzdGVyOnpycW1hNHY=

Этот заголовок используется в запросах, для выполнения которых сервер требует аутентификацию клиента. В заголовке указывается схема аутентификации (Basic - обычная аутентификация по имени пользователя и паролю), после чего следует строка "имя:пароль", преобразованная по алгоритму base64. Подробнее о процедуре аутентификации доступа к закрытым ресурсам см. ниже п. "Обработка запроса клиента".

Connection: Keep-Alive

Клиент прдлегает не закрывать TCP-соединение после обработки запроса, с тем чтобы это соединение могло быть использовано для последующих запросов и ответов на них. Если новые запросы не последовали в тчечение некоторого времени (несколько секунд), сервер закрывает соединение. Значение заголовка "Connection: close" указывает на то, что соединение будет закрыто после обработки данного запроса.

If-Modified-Since: Wed, 03 Nov 1999 19:43:11 GMT

Условный запрос (только метод GET). Сервер вернет документ, только если он был изменен после указанного времени. Иначе сервер вернет код 304 "Not Modified" (о кодах ответа сервера см. след. пункт) и содержимое документа передано не будет. Такой условный запрос используется, если броузер (или прокси-сервер) уже имеет в своем кэше копию запрашиваемого документа.

Range: bytes=0-499

Запрос части документа (только метод GET). Сервер возвращает код 206 "Partial content" (а не как обычно 200 "OK"), заголовок ответа и документа, а в качестве данных передается только указанная в запросе "Range:" часть документа (в данном примере: первые 500 байт). Другие примеры: "bytes=500-" - от 501 байта до конца документа, "bytes=-500" - последние 500 байт, "bytes=0-0,-1" - первый и последний байты. Сервер может проигнорировать заголовок "Range:", в этом случае он возвращает полный документ с кодом 200 "OK".