Протокол http

30 Янв 2017 | Автор: | Комментариев нет »

Мы уже успешно запустили наше рабочие место. И мне кажется самое время заняться теорией и понять как же все это будет работать. Если же вы хотите сразу кинутся в бой вы можете пропустить данную статью, и вернутся к ней тогда когда посчитаете нужным.

Протокол http

Первое что вам надо поднимать что сайт, это не монолитное приложение, а клиент северное. Причем мы с вами будет писать код который будет исполнится как на стороне клиента так и на стороне сервера, но при этом сами клиент и сервер нам будут практически не доступны. В роли сервера у нас будет выступать апачь который вы сможете конфигурировать в соответствии с соглашением с хостером*, в роли клиента браузер пользователя, стоит отметить, что браузеров таки не так и мало они имеют свои особенности(что либо в них изменять мы и вовсе не сможем). Общение между клиентом(веб сервером, в нашем случае апачи) и клиентом(любым браузером) происходит по средствам http протокола.

Давайте детальное рассмотрим http протокол( HyperText Transfer Prоtocоl — «протокол передачи гипертекста»). Для начала разберемся, что вообще такое протокол передачи данных, если максимально просто то это определенное соглашение о форме данных. То есть в каком виде будет происходить передача данных между программами. http является протоколом прикладного уровня передача данных, в основе которого лежит технология “клиент-сервер”.

Теперь подробнее рассмотрим что значит данное определение. Прикладной уровень обозначает, что данный протокол самого высокого уровня и предназначен непосредственно и базируется на ряда протоколов более низкого уровня(в первую очередь на TCP\IP). Слова HyperText, обозначат форму данных, общение будет происходить в простом текстовом формате с заменой спец символов кодами.Технология клиент сервер подразумевает в данном случае то, что клиент(браузер или js код работающий на стороне браузера ) отправляет запрос серверу и получает от него(сервера) ответ. И не как иначе. Сервер не может отправить запрос или какие либо данные браузеру сам по себе(это очень важно и следует запомнить).

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

Запрос состоит из стартовой строки, заголовков(хедера), и тела(присутствует не всегда).

Стартовая строка стоит из название метода, URL(путь к запрашиваемому ресурсу) и версии протокола.

Пример:

GET /clan HTTP/1.0

Метод это действие которое мы хотим предпринять над ресурсом. Записывается в виде короткого слова заглавными английскими буквами. Методов существует довольно много я опишу только некоторые.

GET - получить данные с сервера(к примеру контент веб страницы).

POST - передачу данных серверу(исконно использовать для создания поста, скажем на форуме).

OPTIONS - определяет возможности конкретного узла или веб сервера.

PUT - для загрзки содержимого запроса по заданной URL

DELETE - для удаления ресурса.

Я причислил далеко не все методы,за более подробной информацией можно обратится к справочной литературе или стандартам.

В случае если сервер не распознал запрос он должен вернуть вернуть статус 501 (Not Implemented). В случае если данный метод не поддерживается указанным ресурсом будет возвращен статус 405 (Method Not Allowed).

Теперь рассмотри заголовки(хедеры). По сути это пара параметр(name) значение(value) разделенные “:”. Мы можем передавать таким образом произвольные значения. Причем в теле значение также могут быть “:” Небуду детльно останвливатся на конкртных хедрах отмечу пожалуй, хедр hots. Который указывает, на узел с которым мы работаем.

Пример:

Host: test.ru

Телом запроса может является произвольная информация отделённое одной пустой строкой. Важно что тело запроса не обязательно( в GET запросе к примеру тела вообще не может быть)

Теперь стоит отметить способы передачи данных серверу. Как вы поняли мы можем переедать ту или иную информацию при помощи хедеров(обычно это служебная информация а не данные), и само собой тела запроса. существует еще 1 способ, передачи данных по средствам URL целевого ресурса после символа “?”

Пример

GET /servises/calc?param1=va1&param2=val2 HTTP/1.1

Ну с запросом вроде бы разобрались теперь давайте рассмотрим ответ.

Ответ также состоит из стартовой строки, заголовков и теле ответа.

Стартовая строка стоит из http/<версия hhtp> <код состояния> <пояснение>

Пример

HTTP/1.0 200 OK

данный код сообщает об успехе выполнения запроса.

Давате подробние остановимся на кодах состояния. На данным монет существует 5 классов кодов

1xx Информационный

Данные коды информируют о процессе передачи. Сам ответ обычно недодержит нечего, за исключением нескольких служебных хедров.

2xx Успех

Сообщения данного класса информируют о случаях успешного принятия и обработки запроса клиента. В зависимости от статуса сервер может ещё передать заголовки и тело сообщения.

3xx Перенаправление

Данный класс обозначает что для успеха операции клиенту придется сделать другой запрос.

4xx. Ошибка клиента

Данный класс указывают на ошибку клиента.

5xx Ошибка сервера

Данный класс указывает на ошибку сервера.

После стартовой строки идет идут хедеры и тело ответа(аналогично с запросом).

протокол http

протокол http

Дополнительно стоит отметить что зачастую TCP на который базируется данный протокол разрывается сразу после получения ответа(современный браузеры правда в рамках одной серии могут также выкачать контент всей страницы). Для сохранения информации пользователя и о пользователе используется механизм cookies. О них будет в следующей статье.

Данная статья была предназначена для того, чтобы дать общее преставление о http протоколе и не как не претендует на полное и исчерпывающие его описания. Для этого существует справочная литература и стандарты.

Метки записи:

Здесь вы можете написать комментарий к записи "Протокол http".

* Обязательные для заполнения поля
Все отзывы проходят модерацию.
Реклама
Наши партнеры
Читать нас
Связаться с нами
Наши контакты

info@windowsfan.ru

О сайте

Информационно-познавательный интернет журнал про Windows