русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Протокол HTTP.


Дата добавления: 2013-12-23; просмотров: 1724; Нарушение авторских прав


HTTP (Hypertext Transfer Protocol) - основной протокол используемый в Web. Несмотря на то, что протокол называется протоколом передачи гипертекста (т.е. HTML), на самом деле HTTP протокол может использоваться (и используется) для передачи практически любых данных в сети. Это передача и текста, и изображений, и файлов. Популярность HTTP связана с несколькими факторами: это использование достаточно универсальной URL адресации, способность передавать любые данные (как от клиента серверу так и наоборот), а также работа в режиме on-line (т.е. передача данных непосредственно между клиентом и сервером, без посредников). HTTP протокол можно назвать дуальным, в том смысле, что в системе клиент-сервер данные могут идти в двух направлениях, и от клиента к серверу и наоборот от сервера к клиенту. Однако сам синтаксис HTTP нацелен именно на передачу данных от клиента к серверу.

HTTP/1.0 используется также для коммуникаций между различными пользовательскими броузерами (клиентами) и шлюзами, дающими гипермедиа доступ к существующим Internet протоколам, таким как SMTP, NNTP, FTP, Gopher, WAIS. HTTP/1.0 разработан так, чтобы позволять таким шлюзам через proxy серверы, без какой-либо потери передавать данные с помощью упомянутых протоколов более ранних версий.

HTTP основывается на парадигме запросов/ответов. Запрашивающая программа (клиент) устанавливает связь с обслуживающей программой-получателем (сервер) и посылает запрос серверу в следующей форме:

  • метод запроса,
  • URL,
  • версия протокола,
  • MIME-подобное сообщение, содержащее управляющую информацию запроса (параметры), информацию о клиенте и, может быть, тело сообщения.

 

Все, что предшествует телу сообщения, является заголовком запроса.

Сервер отвечает сообщением, содержащим строку статуса (включая версию протокола и код статуса - успех или ошибка), за которой следует MIME-подобное сообщение, включающее в себя информацию о сервере, метаинформацию о содержании ответа, и, вероятно, само тело ответа.



В Internet коммуникации обычно основываются на TCP/IP протоколах. Для WWW номер порта по умолчанию -- TCP:80, но также могут быть использованы и другие номера портов - это не исключает возможности использовать HTTP в качестве протокола верхнего уровня.

Для большинства приложений сеанс связи открывается клиентом для каждого запроса и закрывается сервером после окончания ответа на запрос. Тем не менее, это не является особенностью протокола. И клиент, и сервер должны иметь возможность закрывать сеанс связи, например, в результате какого-нибудь действия пользователя. В любом случае, разрыв связи, инициированный любой стороной, прерывает текущий запрос, независимо от его статуса.

 

Рассмотрим простейший пример HTTP - запроса. Если в адресном окне браузера мы наберем адрес http://yandex.ru, то браузер определит IP адрес сервера yandex.ru и пошлет ему на 80-й порт такой HTTP запрос:

 

GET http://yandex.ru/ HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*
Accept-Language: ru
Cookie: yandexuid=2464977781018373381
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)
Host: yandex.ru
Referer: narod.ru
Proxy-Connection: Keep-Alive

Запрос передается в незашифрованном текстовом виде. Самая главная часть запроса расположена в первой строке: Это тип запроса (GET), URL адрес запрашиваемого документа(http://yandex.ru) и версия HTTP протокола (HTTP/1.0). Далее перечисляются параметры запроса. Каждая строка соответствует одному параметру. В начале строки идет имя параметра, затем двоеточие и значение параметра.

Accept - тип данных, которые может принять браузер (в кодировке MIME).

Accept-Language - предпочтительный язык, на котором браузер хочет принять данные. User-Agent - тип программы, которая отослала запрос.

Host – DNS (или IP) имя хоста, которому адресован запрос.

Cookie - кукисы (данные, которые были сохранены сервером на локальном диске клиента, при посещении данного хоста прошлый раз).

Referer - хост, со страницы которого мы отсылаем запрос. Так, например, если мы находимся на странице http://narod.ru, и нажимаем там ссылку http://yandex.ru, то запрос будут отправлен хосту yandex.ru, а поле запроса referer будет содержать имя хоста narod.ru.

Набор параметров запроса не фиксирован. Помимо приведенных, могут присутствовать и другие параметры.

Наиболее интересны такие параметры, как referer и cookie. Эти параметры используются, в основном, для идентификации пользователя сервером.

Запрос GET может содержать данные, передаваемые клиентом серверу. Они передаются непосредственно через URL адрес по CGI протоколу. Данные отделены от URL знаком “?” и соединяются знаком “&”:

 

GET <URL>?<параметр 1>=<значение 1>&<параметр 2>=<значение 2>&…

 

Такой тип передачи данных серверу удобен, однако имеет ограничения на объем. Слишком большие массивы данных передавать через URL нельзя. Для таких целей существует другой тип зпросов: запрос POST. Запрос POST очень похож на GET, с той лишь разницей, что данные в запросе POST передаются отдельно от самого заголовка запроса:

Тело запроса должно отделяться от заголовка пустой строкой. Если сервер встречает пустую строку в POST запросе, то все что идет далее он считает телом запроса (передаваемыми данными). Отметим следующее: формат даных в теле POST запроса произволен. Несмотря на то, что чаще всего применяется CGI формат, он не обязателен. Кроме того, POST запрос не требует наличия тела запроса, и может передавать данные также и через URL.

Помимо CGI формата, иногда для передачи больших объемов информации (например файлов) применяют т.н. multipartформат (формат передаваемых данных определяется параметром Content-Type):

 



<== предыдущая лекция | следующая лекция ==>
РАСЧЕТ ОСНОВНЫХ РАЗМЕРОВ ГОРЕЛОК | Блоки данных


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.