<|||>
 

Как работает интернет. Часть 6 | Назначение протокола http - Ответ HTTP

Глобальные компьютерные сети и интернет
Оглавление
Как работает интернет. Часть 6 | Назначение протокола http
Что за методы GET, POST и Cookie
Ответ HTTP
Инкапсуляция протоколов
Все страницы

Итак, теперь мы знаем, как запросить что-то у сервера по протоколу HTTP. Что же приходит нам в ответ? В ответ нам приходит также несколько «заголовков», из которых первый должен содержать код ответа. Например, «HTTP/1.1 200 OK».

Как мы видим, сначала идет версия HTTP (та, которую вы указали в запросе), затем код ответа (200), а затем буквенное описание ответа (OK). Буквенное описание ответа нужно только для человека, компьютер его никак не воспринимает. Возникает вопрос – зачем же оно нужно, если человек почти никогда и запросов HTTP-то не делает? Все делает браузер, а как именно, мы же все равно не видим. На самом деле, это иногда очень помогает. Например, не грузится у нас страница, мы смотрим (вручную) ответ от сервера, а там какое-нибудь «Server Bandwith Exceeded, try again later», и сразу понимаем, что просто сервер перегружен (если, конечно, вы знаете английский).

Код 200 – самый приятный, и (как видно выше), означает OK. Код 404 – самый понятный – означает, что такой страницы (файла) на сервере нет. Код 301 означает, что в этом месте была страничка, но она была перемещена (и сервер скажем вам ее новое месторасположение), а код 401 – что для доступа на данную страницу необходима авторизация (например, ввод логина и пароля). Есть также множество других кодов, означающих разные вещи.

Итак, допустим, что нам пришел код 200, и все ОК. Далее нам придут несколько строчек, описывающих различную служебную информацию, например, текущую дату «Date: Wed, 11 Feb 2009 11:20:59 GMT», имя программы, которая нас обслуживает «Server: Apache», тип возвращаемого ответа и его кодировка (мы уже говорили, что странички создаются на языке HTML) – «Content-Type: text/html; charset=utf-8», размер ответа «Content-Length: 1234», в общем, все, что сервер пожелает нам сообщить.

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

Если нам пришел код 301, о том, что страничка перемещена, то после первой строки, например, «HTTP/1.1 301 Moved Permanently», нам придет еще и строчка, указывающая, где теперь находится документ, к примеру, «Location: https://yandex.ru/newlocation/». В этом случае браузер просто прочитает это месторасположение, и отправит еще один запрос по этому адресу.

Как уже говорилось, страничка может захотеть сохранить какую-либо информацию на компьютере пользователя в виде Cookie. Если это так, то она добавляет еще одну строчку, начинающуюся на Set-Cookie, где укажет имя и значение. Если браузер поддерживает Cookie, и они не отключены, то он запомнит эту информацию, и будет ее передавать при последующих соединениях с данным сервером.

Теперь, когда мы познакомились с протоколом HTTP, может возникнуть вполне закономерный вопрос – мы знаем что надо отправлять (HTTP-запрос), мы знаем, куда нужно его отправлять (например, на сайт https://yandex.ru), мы знаем на какой порт нужно его отправлять (он стандартный, 80). Но ведь от нас нет прямого провода до Москвы, где и находится компьютер yandex.ru?

Из предыдущих статей мы помним, что у нас должен быть шлюз, который и выпускает нас в Интернет, следовательно, именно ему нужно посылать всю информацию. Но для этого нужно определить адрес шлюза, определить его MAC-адрес, как-то установить с ним соединение, и сделать много чего еще. Неужели протокол HTTP такой сложный, что все это учитывает?

Конечно же нет. HTTP это вообще достаточно простой протокол, который и умеет-то только запрашивать странички и возвращать ответы. Для того, чтобы отправить то, что он «насочинял», протокол HTTP отдает все им созданное другому протоколу, TCP.

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

 



Комментарии
Добавить новый RSS
ы   |2013-10-12 22:43:14
Фраза: "языках HTTP и HTML" не верна. HTTP - протокол, а HTML - язык
Оставить комментарий
Имя:
Email:
 
Тема:
 
Пожалуйста, введите проверочный код, который Вы видите на картинке.

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 
Яндекс.Метрика Все права защищены. Copyright 2008-2024 © Мой компьютер плюс