Лекция 5 WWW (World Wide Web) – всемирная паутина Всемирная паутина — глобальное информационное пространство, основанное на физической инфраструктуре Интернета и протоколе передачи данных HTTP. 3 основные идеи: 1. язык разметки / гипертекст (xHTML) 2. универсальная идентификация ресурсов (URL) 3. клиент/серверная архитектура (использование веб-серверов, протокол HTTP) 2 Основные понятие WWW Веб-сервер - это сервер принимающий запрос от клиента по определенному протоколу (HTTP) и формирующий ответ. Веб-браузер – ПО для просмотра веб-сайтов (для формирования HTTP-запросов к веб-серверу и отображения HTTP-ответа (заголовок + содержимое страницы)) Веб-сайт – совокупность электронных документов, объединенных одним IPадресом или доменным именем. HTTP (Hyper Text Transfer Protocol) – протокол прикладного уровня предназначен для обработки информации с веб-сайтов 3 Идентификатор ресурса * URI (Uniform Resource Identifier) – единообразный идентификатор ресурса. Формат: СХЕМА:ИДЕНТИФИКАТОР[?ЗАПРОС][#ФРАГМЕНТ] URL (Uniform Resource Locator) – единообразный локатор ресурса – подмножество URI, которое содержит информацию о местонахождении ресурса и способе обращения к нему URN (Uniform Resource Name) – единообразное имя ресурса URI URL URN 4 Примеры URI urn:ISBN:0-395-36341-1 urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 urn:btih:JFRYN46FHYBNSWGH66HRJUU57HWEBNY magnet:?xt=urn:btih:JFRYN46FHYBNSWGH66HRJUU57HWEBNY urn:ietf:rfc:2648 http://tools.ietf.org/html/rfc2648 bitcoin:6Fhj6bsghf3FHTYNFGHhgfng45n7ndGf3A http://aics.ru/index.shtml?a=showboard https://google.com 5 Примеры URI ftp://ftp.admin.tomsk.ru/pub/distr/ file://C:\Windows\temp\txt.html#chapter2 mailto:[email protected] news:comp.lang.perl.misc sms:+1-868-123-3423 tel:+1-868-123-3423 telnet://192.168.0.1:4352 data:text/html,<h1>example</h1> 6 URL (Universal Resource Locator) * Текущий URL (абсолютный URL) Относительный URL Результат http://aics.ru/text/doc1.html /files/logo.gif http://aics.ru/files/logo.gif http://aics.ru/text/doc1.html doc3.txt http://aics.ru/text/doc3.txt http://aics.ru/text/doc1.html ./doc4.txt http://aics.ru/text/doc4.txt http://aics.ru/text/doc1.html ../img/./first.jpg http://aics.ru/img/first.jpg http://ya.ru/cat/ed/1.html ../../main/../2.html http://ya.ru/2.html 7 URL и непредсказуемая мобильность ресурсов Интернета Persistent Uniform Resource Locator – постоянный единообразный локатор ресурса PURL веб-сервер PURL URL http://purl.oclc.org/OCLC/PURL/FAQ Режим доступа Сервер с БД PURL Путь 8 История развития всемирной паутины Развитие WWW (World Wide Web): 1. Символьный гипертекст (текстовый браузер LineMode, 1991 г.) 2. Графически-ориентированные статические HTML-документы (графический браузер Mosaic, 1993 г.) 3. Динамические HTML-документы (SSI, CGI, Perl, PHP, ASP) 4. Активные HTML-документы (с 1995 г. - Java, JavaScript, Flash) 5. WebGL - интерактивная 3D-графику (2011 г.) 9 10 HTTP (HyperText Transfer Protocol) Протокол передачи гипертекста – символьно-ориентированный клиентсерверный протокол прикладного уровня без сохранения состояния, используемый сервисом World Wide Web. HTTP/0.9 - Самая ранняя версия протокола HTTP/0.9 была впервые опубликована в январе 1992 г. Спецификация протокола привела к упорядочению правил взаимодействия между клиентами и серверами HTTP, а также чёткому разделению функций между этими двумя компонентами. HTTP/1.0 - В мае 1996 года для практической реализации HTTP был выпущен информационный документ RFC 1945, что послужило основой для реализации большинства компонентов HTTP/1.0. HTTP/1.1 - Соединение между клиентом и сервером может оставаться открытым после отправки ответа на запрос. Клиент теперь обязан посылать информацию об имени хоста, к которому он обращается. 11 Структура HTTP * (подробнее в методичке!) 1. Стартовая строка (для запроса и ответа различны); 2. Заголовок – характеризует тело сообщения (не обязательный); 3. Тело сообщения – непосредственно данные сообщения (не обязательный). Строка запроса выглядит так: Метод URI HTTP/Версия_протокола Пример запроса: GET it.aics.ru HTTP/1.1 Метод - последовательность из любых символов, кроме управляющих и разделителей, указывающая на основную операцию над ресурсом. Cтрока ответа сервера имеет следующий формат: HTTP/Версия Код_Состояния [Пояснение] Пример ответа: HTTP/1.1 200 OK Код состояния информирует клиента о результатах выполнения запроса и определяет его дальнейшее поведение. 12 Методы протокола HTTP Options GET HEAD POST Используется для определения возможностей веб-сервера или параметров соединения для конкретного ресурса. Используется для запроса содержимого указанного ресурса. Клиент может передавать параметры выполнения запроса в URI целевого ресурса после символа «?»: GET /path/resource?param1=value1&m2=value2 HTTP/1.1 Запрос HEAD обычно применяется для извлечения метаданных, проверки наличия ресурса (валидация URL) и чтобы узнать, не изменился ли он с момента последнего обращения. Используется для запроса содержимого указанного ресурса. Передаваемые данные включаются в тело запроса. Аналогично с помощью метода POST обычно загружаются файлы. 13 Методы протокола HTTP PUT PATCH Применяется для загрузки содержимого запроса на указанный в запросе URI. Используя PUT, клиент предполагает, что загружаемое содержимое соответствуют находящемуся по данному URI ресурсу. Аналогично PUT, но применяется только к фрагменту ресурса. DELETE Удаляет указанный ресурс. TRACE Возвращает полученный запрос так, что клиент может увидеть, что промежуточные сервера добавляют или изменяют в запросе. Устанавливает связь указанного ресурса с другими. LINK UNLINK Убирает связь указанного ресурса с другими. 14 Код состояния протокола HTTP 1xx Informational (информационный) В HTTP/1.1 клиент должен быть готов принять этот класс сообщений как обычный ответ, но ничего отправлять серверу не нужно. 100 Continue (Продолжать) 101 Switching Protocols (Переключение протоколов) 102 Processing (Идёт обработка) 2xx Success (Успешно) Сообщения данного класса информируют о случаях успешного принятия и обработки запроса клиента. 200 OK (Успешно) 201 Created (Создано) 202 Accepted (Принято) 3xx Redirection (Представление) Коды статуса класса 3xx сообщают клиенту, что для успешного выполнения операции нужно произвести следующий запрос к другому URI. 304 Not Modified (Не изменялось) 4xx Client Error (Ошибка клиента) Класс кодов 4xx предназначен для указания ошибок со стороны клиента. 404 Not Found (Не найдено) 5xx Server Error (Ошибка сервера) Коды 5xx выделены под случаи неудачного выполнения операции по вине сервера. 500 Internal Server Error (Внутренняя ошибка сервера) 15 Структура протокола в Chrome 16 Пример HTTP-запроса (метод GET) * GET http://tpu.ru/img/tom.gif HTTP/1.1 Accept: */* Referer: http://tpu.ru/ User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Host: tpu.ru Connection: close (пустая строка) GET /img/tom.gif HTTP/1.1 Host: tpu.ru (пустая строка) 17 Пример HTTP-запроса (метод POST) * POST http://aics.ru/temp/test.php HTTP/1.1 Host: aics.ru Content-Type: application/x-www-form-urlencoded Content-Length: 46 18 Пример HTTP-ответа (статический документ) * HTTP/1.1 200 OK Date: Wed, 14 Sep 2005 00:31:03 GMT Server: Apache/1.3.29 (Unix) PHP/4.3.5 Last-Modified: Thu, 11 Mar 2004 02:24:02 GMT ETag: "1509a-14e-f865835b" Content-Length: 8686 Content-Type: text/html; charset=WINDOWS-1251 <html>... 19 Пример HTTP-ответа (динамический документ) * HTTP/1.1 200 OK Date: Sun, 02 Mar 2003 15:56:19 GMT Server: Apache/2.0.40 (Win32) X-Powered-By: PHP/5.0.3 Content-length: 62 Connection: close Content-Type: text/html; charset=WINDOWS-1251 <html>... 20