Основные протоколы интернет

World Wide Web (WWW) — Всемирная паутина

Разбить на страницы
Показывать лекцию целиком

World Wide Web (WWW) – это хранилище информации, размещенной во всем мире и соединенной воедино. WWW – уникальная комбинация гибкости, мобильности дружественных пользователю свойств, что отличает ее от других служб, обеспечиваемых с помощью Интернета.

WWW-проект был инициирован CERN (Center European Laboratory for Practice Physics), чтобы создать систему для обработки распределенных ресурсов, необходимых для научных исследований.

WWW сегодня — распределенная система клиент-сервер обслуживания, в которой клиент, использующий браузер1, может иметь доступ к этой службе с применением сервера. Однако обеспечиваемая служба распределяется по многим местам, называемым вместе websites.

Архитектура

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

Каждый сайт содержит одну или более ссылок на веб-документы. Каждая веб-страница может содержать линк (связь) с другими страницами на том же самом сайте. Страницы могут быть вызваны для работы с браузерами. Рассмотрим сценарий, показанный рис. 16.1. Клиенту нужна информация, которая принадлежит сайту A. Он посылает запрос через браузер, программа которого доставляет веб-документ. Запрос, который включает в себя адрес веб-сайта и веб-страницы (web-page), называется универсальным идентификатором ресурса — URI (Uniform Resource Identifier), который будет рассмотрен далее. Сервер находит и посылает документ клиенту. Когда пользователь смотрит документ, он может найти ссылки на другие документы, включая веб-страницы сайта B. Ссылка содержит URL для нового сайта. Пользователь может рассмотреть другой интересующий его документ. Клиент посылает другой запрос к новому сайту и вызывает другую страницу.

(рис 16.1) Архитектура WWW

Архитектура браузеров

Различные производители предлагают коммерческие браузеры, которые интерпретируют и отображают веб-документы, и все они используют одинаковую или родственную архитектуру. Каждый браузер обычно содержит три части: контроллер, клиентский протокол и интерпретатор. Контроллер получает входную информацию от клавиатуры или "мыши" и использует клиентскую программу для доступа к документам. После того как документ доступен, контроллер применяет один из интерпретаторов, чтобы отобразить документ на экране. Клиентские программы могут использовать один из методов (протоколов) – такие как HTTP, FTP, TELNET. Интерпретатор может быть HTML или Java, JavaScript, в зависимости от типа документа ( рис. 16.2.).

(рис 16.2) Архитектура браузера

Сервер

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

Универсальный идентификатор ресурса — URL (Uniform Resource Locator)

Клиент, который хочет вызвать веб-страницу, должен располагать ее адресом. Чтобы обеспечить доступ к документам, разбросанным во всем мире, существует протокол передачи гипертекста (HTTP – Hypertext Transfer Protocol). Универсальный идентификатор ресурса — URL (Uniform Resource Locator) — стандарт для любой заданной информации в Интернете. URL определяет четыре элемента: протокол, хост, порт и путь ( рис. 16.3.).

Протокол (метод) – программа клиент-сервер, используемая для доставки документа. Несколько различных протоколов могут доставлять документ; среди них Gopher, FTP, HTTP, News и TELNET. На сегодня наиболее общий протокол — HTTP.

Хост – компьютер, где находится информация, хотя имя компьютера может быть псевдонимом. Веб-страницы обычно накапливаются в компьютерах, и компьютеры дают псевдонимы именам, которые обычно начинаются с символов "www". Однако это не обязательно, поскольку хост может быть с любым именем, данным компьютеру, который является хостом веб-страницы.

(рис 16.3) Универсальный идентификатор ресурса — URL

URL иногда может содержать номер порта сервера. Если порт включен, он должен быть вставлен между хостом и путем и должен быть отделен от хоста двоеточием.

Путь — имя пути к файлу, где находится информация. Заметим, что путь сам может содержать "слеши" (наклонные черточки), которые в операционной системе UNIX отделяют директории от поддиректорий и файлов.

Cookies

World Wide Web (WWW) — Всемирная паутина — вначале была спроектирована для выполнения непосредственно функций вызова заданного документа. Сегодня эта система выполняет несколько дополнительных функций, перечисленных ниже.

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

    Рассмотрим коротко работу с этими объектами.

    Создание и хранение cookies

    Создание и сохранение cookies (на сленге — "плюшки") зависит от клиента; однако имеются общие принципы.

  • Когда сервер получает запрос от клиента, он сохраняет информацию о клиенте в файле или строке. Информация может включать в себя доменное имя клиента, содержание cookie (собранная информация сервера о клиенте, такая как имя, регистрационный номер и т. п.), метку времени и другую информацию, которая зависит от применения.
  • Сервер включает cookie в ответ, который посылается клиенту.
  • Когда клиент получает ответ, браузер накапливает cookie в директории "cookie", которая сохраняет эту информацию под доменным именем сервера.
  • Использование cookies

    Когда клиент посылает запрос серверу, браузер просматривает директорию "cookie". Если cookie найдены, они посылаются серверу. Они включаются в запрос. Когда сервер получает запрос, он узнает, что этот клиент "старый". Они создаются сервером и "потребляются" сервером. Рассмотрим теперь cookies, используемые для четырех целей, которые были упомянуты ранее.

  • Сайту, имеющему строгий доступ, посылается cookie, только когда клиент регистрируется первый раз. Для повторного доступа только этого клиента допускается посылать соответствующий cookie.
  • Электронный магазин (e-commerce) может использовать cookie. Когда клиент выбирает предмет и помещает его в корзину, он посылает браузеру cookie, которое содержит информацию об этом предмете, такую как номер и цену за единицу. Если клиент выбирает второй предмет, cookie обновляется новой информацией и так далее. Когда клиент заканчивает покупки и хочет рассчитаться, вызывается последний cookie и подсчитывается вся сумма стоимости покупок.
  • Веб-портал использует cookie следующим образом. Когда пользователь выбирает свою страничку, порождается и посылается cookie. Если сайт посещается вновь, cookie посылается серверу, чтобы показать, что это ожидаемый клиент.
  • Cookie также применяется рекламными агентствами. Рекламные агентства могут предоставлять полосу-баннер (banner) в дополнение к главному веб-сайту, который часто посещают пользователи. Рекламное агентство поддерживает только URL, который дает адрес, вместо самого баннера. Когда пользователь посещает главный веб-сайт и вызывает икону (изображение), размещенное рекламной корпорацией, посылается запрос в рекламное агентство. Рекламное агентство посылает баннер, например, графический файл (GIF — Graphic Interchange Format), но также и cookie с ID пользователя. Любое будущее использование баннера добавляется к базе данных, к профайлам веб-окружения пользователя. Коммерческое агентство собирает интересующую информацию пользователя и может продать другому пользователю. Это весьма сомнительное использование cookie. Следует надеяться только на законы, защищающие личную и коммерческую тайну.
  • Веб-документы

    Документы в WWW могут быть сгруппированы в три основных категории: статистические, динамические и активные. Эти категории основаны на допустимом времени их содержания.

    Статические документы

    Статические документы с фиксированным содержанием, которое порождается и сохраняется в сервере. Клиент может получить только копию документа. Другими словами, содержание в сервере задается при создании файла, но не тогда, когда он используется. Конечно, содержание в сервере может быть заменено, но пользователь не может сделать этого. Когда клиент получает доступ к документу, ему посылается только копия. Пользователь может затем использовать программы просмотра документа для его последовательного вывода на экран ( рис. 16.4.).

    (рис 16.4) Статический документ

    HTML

    Hypertext Markup Language (HTML) – язык гипертекстовой разметки, предназначен для создания веб-страниц. Термин язык разметки пришел из издательской индустрии. Перед тем как книга будет напечатана, технический редактор читает рукопись и ставит на ней много пометок. Эти пометки говорят дизайнеру, как форматировать текст. Например, если технический редактор хочет часть строк напечатать полужирным шрифтом, он подчеркивает волнистой линией такую часть. Тем же методом данные для веб-страницы форматируются для интерпретации браузером.

    Попробуем разъяснить эту идею примером. Чтобы часть текста высвечивалась полужирным шрифтом HTML, мы должны включить в начало и конец области жирного шрифта тег (пометку) в тексте, как это показано на рис. 16.5.

    (рис 16.5) Теги полужирного шрифта

    Два тега — <B> и </B> — инструкции для браузера. Когда браузер видит эти две отметки, он знает, что текст полужирный.

    Язык разметки, такой как HTML, позволяет нам включать инструкции форматирования в самом файле. Инструкции включают в текст. Таким способом браузер может читать инструкции и форматы текста так, как они заданы рабочей станцией. При этом может возникнуть вопрос, почему мы не используем для форматирования возможности самого процессора. Ответ – различные процессоры используют различную технику или процедуры форматирования текста. Например, изображение, которое создал пользователь, отформатировано на компьютере Macintosh и накоплено на веб-странице. Другой пользователь, который имеет IBM компьютер, не сможет получить эту страницу, потому что два компьютера используют различные процедуры форматирования.

    HTML позволяет использовать только символы ASCII для текста и инструкций форматирования. Таким образом, каждый компьютер может получить документ полностью как ASCII-документ. Этот главный текст – данные и инструкции форматирования — может быть применен для форматирования данных.

    Веб-страница состоит из двух частей: заголовок и информационный блок ("тело" сообщения). Заголовок — первая часть веб-страницы. Заголовок содержит название страницы и другие параметры, которые будут использоваться браузером.

    Реальное содержание страницы информационного сообщения включает текст и теги. Текст — реальная информация, содержащаяся в странице, теги определяют вид документа. Каждый HTML-тег – это имя, которое сопровождается списком атрибутов, заключенных между треугольными скобками.

    Атрибуты представлены следующие: эквивалентные знаки и значения атрибутов. Несколько тегов могут быть применены как одиночные символы; некоторые могут быть представлены парами. Те, которые используются парами, называются стартовый (beginning) и конечный (ending) теги. Стартовый тег может иметь атрибуты и значения. Конечный тег не может иметь атрибуты и значения, но может иметь "слеш" (наклонную черту) перед именем тега.

    На основе тегов браузер делает выводы о структуре текста, которая заложена внутри самого текста. Рисунок 16.6 показывает формат тега.

    (рис 16.6) Начальный и конечный теги

    Таблица 16.1 показывает некоторые наиболее общие теги. Мы объясним некоторые из них на основании их категорий.

    Наиболее общие теги
    Начальный тег Конечный тег Значение
    Теги структуры
    <HTML> </HTML> Определяет HTML-документ
    <HEAD> </HEAD> Определяет заголовок HTML-документа
    <BODY> </BODY> Определяет "тело" HTML-документа
    Теги названия и заголовка
    <Title> </Title> Определяет название документа
    <Hn> </Hn> Определяет различные заголовки (n целое)
    Теги форматирования текста
    <B> </B> Полужирный
    <I> </I> Курсив
    <U> </U> Подчеркнутый
    <SUB> </SUB> Нижний индекс
    <SUP> </SUP> Верхний индекс
    Теги потока данных
    <CENTER> </CENTER> Сосредоточенный
    <BR> Прерывистый
    Теги списков
    <OL> </OL> Упорядоченный список
    <UL> </UL> Неупорядоченный список
    <LI> </LI> Список единиц
    Теги изображения
    <IMG> Определяет изображение
    Теги гиперссылки
    <A> </A> Определение адреса (гиперссылки)
    Теги выполняемого содержания
    <APPLET> </APPLET> Документ – встроенная в текст программа

    Теги структуры

    Теги структуры (Skeletal tag) показывают структуру документа, а также как она разделяется на заголовки и "тело".

  • <HTML> и </HTML>. Каждый документ HTML должен стартовать и финишировать с этими двумя тегами. Это сигналы браузеру, что HTML-документ вложен между этими тегами.
  • <HEAD> и </HEAD>. Заголовок содержит информацию о самом документе. Заголовок должен определяться с использованием двух тегов.
  • <BODY> и </BODY>. "Тело" страницы содержит фактическую информацию. "Тело" вставляется между двумя метками body.
  • Теги названий и заголовков

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

  • <TITLE> и </TITLE> Название страницы обычно размещают в заголовке. Название включаются между двумя метками названия. Название может быть или не быть отображено на дисплее или при печати, когда страницы становятся доступными браузеру.
  • <Hn> и </Hn> Заголовки вставляются в страницу с использованием тегов заголовка. Мы можем создать различные уровни заголовков. Метки заголовков следуют за символом H с цифрой. Например, H1 — заголовок наибольшего уровня, H2 — второй уровень заголовков и так далее.
  • Теги форматирования текста

    Следующие теги используют для того, чтобы указать формат текста:

  • <B> и </B>. Текст между этими тегами должен быть полужирным.
  • <I> и </I>. Текст между этими тегами должен быть курсивом.
  • <U> и </U>. Текст между этими тегами должен быть подчеркнутым.
  • <SUB> и </SUB>. Текст между этими тегами должен быть нижним индексом.
  • <SUP> и </SUP>. Текст между этими тегами должен быть верхним индексом.
  • Теги потока данных

    Следующие теги используются для управления потоком данных:

  • <BR> Этот тег вставляется при прерывании строки в тексте.
  • <CENTER>> и </CENTER>. Текст между этими тегами должен быть сплошным.
  • Теги списков

    Следующие теги используются для создания списка единиц передачи:

  • <UL> и </UL>. Часто необходимо создать список рубрик. HTML имеет механизм для того, чтобы создать последовательно типы списков. Простейший — это неупорядоченный список, в котором рубрики перечислены одна за другой в произвольном порядке. Чтобы создать список, используют тег <UL> в начале и тег </UL> ) в конце списка. Каждому перечислению может предшествовать тег <LI>.
  • <OL> и </OL>. Этот тег похож на <UL> и </UL>, за исключением того, что рубрика в списке нумеруется.
  • <LI> и </LI>. Эти теги определяют список рубрик. В конце обычно тег пропускается.
  • Теги изображения

    Следующие теги используются, чтобы вставить рисунок в документ:

  • <IMG>. Нетекстовая информация, такая как цифровое фото или графические изображения, не является физической частью HTML-документа. Но мы можем использовать теги изображения в любой точке файла, чтобы добавить фото и изображения. Тег изображения определяет адрес изображения, чтобы изображение могло быть найдено. Также определяется, как изображение может быть вставлено после нахождения. Далее показан формат тега изображения. Мы можем выбрать из числа нескольких атрибутов. Наиболее общий — SRC (источник), который определяет источник (адрес), и ALIGN, который определяет принцип регулирования изображения. Большинство браузеров принимает изображение в GIF и JPEG-форматах.
  • <IMG SRC= "........" ALIGN= <........>

    Для примера: следующий тег может быть восстановлен, изображение накапливается как "image1.gif" в директории /bin/image:

    <IMG SRC="/bin/image/image1.gif" ALIGN=<MIDDLE>

    Теги гиперссылки

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

  • <A.......> и </A>. Язык гипертекстовой разметки необходим для связывания документов между собой. Любая рубрика (слово, фраза, параграф или изображение) может быть направлена к другому документу. Механизм, названный "закрепление" (anchor), делающий эту работу, определяется тегами <A…….> и </A>, и закрепление рубрик используется URL для ссылки на другие документы. Когда документ отражается на дисплее, элементы закрепления подчеркиваются, мигают или выделяются жирным шрифтом. Пользователь может "щелкнуть" указателем закрепленный элемент, чтобы перейти на другой документ, который может или не может быть накоплен на том же самом сервере как исходный документ.
  • Далее показан формат метки закрепления. Фраза, содержащая ссылку, вставлена между начальным и конечным тегом. Начальный тег может иметь несколько атрибутов, но один требуется обязательно — HREF (гиперссылка), которая определяет адрес (URL) подключаемого документа.

    <A HREF ="........"> Ref-Phrase </A>

    Например, для того, чтобы присоединить данные автора книги, мы можем

    <A HREF ="http:www.universitet/telecom"> Author </A>

    В тексте появляется слово "Author", с помощью которого пользователь может запросить переход к веб-странице автора.

    Теги выполняемого содержания

    Теги выполняемого содержания показывают, что содержание, заключенное между двумя тегами, является бинарным или байтовым кодом. Он должен быть выполнен, чтобы создавать выходной результат. Мы рассмотрим теги, которые определяют документ как апплет (applet). Мы обсудим только теги, которые определяют программу как распространяемую программу.

  • <APPLET CODE> и </APLET>. Эти теги определяют документ как апплет, т. е. маленькую программу. Несколько атрибутов могут быть использованы с тегами апплет; мы показываем только самые обычные.
  • <APPLET CODE>=……HEIGHT=….WIDTH=…..>
    ...................
    ...................
    ...................
    </APPLET>

    Примеры

    В этом разделе мы дадим некоторые простые примеры HTML-документов, чтобы показать выполнение тегов, которые рассматривались ранее.

    Пример 1

    Этот простой пример показывает, как теги структуры используют для частей HTML-документа.

    Первая HTML-программа
    <HTML>
    	<HEAD>
    		<TITLE>
    			Первый образец документа
    		</TITLE>
    	</HEAD>
    	<BODY>
    		Рад сообщить Вам, что........
    		..............
    		..............
    	</BODY>
    </HTML>
    
    <HTML>
    	<HEAD>
    		<TITLE>
    			Второй образец документа
    		</TITLE>
    	</HEAD>
    	<BODY>
    		<CENTER>
    		<H1>B> Особенности книги H1> B>
    		</CENTER>
    
    		Книга имеет небольшой формат........
    		<UL>
    		<LI> Письмо издателю
    		<LI> Форма заказа в режиме on-line
    		<LI> Форма заказ в книжном магазине
    		</UL>
    	</BODY>
    </HTML>

    Пример 2

    Этот пример показывает, как теги используют для того, чтобы позволить браузеру форматировать текст.

    Вторая HTML-программа
    <HTML>
    	<HEAD>
    		<TITLE> Список книг </TITLE>
    	</HEAD>
    	<BODY>
    		<CENTER>
    		<H1><B> ВНИМАНИЕ </B></H1>
    		</CENTER>
    		Список действителен по 1 февраля 2008 года:
    		<UL> Каналы сети связи
    		<LI> Цифровые преобразователи
    		<LI> Электропитающие устройства
    		</UL>
    	</BODY>
    </HTML>

    Пример 3

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

    Третья HTML-программа
    <HTML>
    	<HEAD>
    		<TITLE>
    			Третий образец документа
    		</TITLE>
    	</HEAD>
    	<BODY>
    		Это рисунки к этой книге
    		<IMG SRC= "picture/book1.jpg" ALIGN=MIDDLE>>
    	</BODY>
    </HTML>

    Пример 4

    Этот пример показывает, как используются теги, чтобы сделать гиперссылку на другой документ.

    Четвертая HTML-программа
    <HTML>
    	<HEAD>
    		<TITLE>
    			Четвертый образец документа
    		</TITLE>
    	</HEAD>
    	<BODY>
    		Если возникнут вопросы, можно обратится к автору.
    		<HREF=http:www.Berlin @univer.com">
    		Берлин </A>
    	</BODY>
    </HTML>

    Динамические документы

    Динамические документы не существуют в заранее определенном формате. Динамический документ создается веб-сервером всегда, когда браузер запрашивает документ. Когда поступает запрос, веб-сервер рассматривает прикладные программы, чтобы создать динамический документ. Сервер возвращает на выходе программы запрашиваемый документ как отклик, потому что каждый документ создается для каждого запроса, содержание динамического документа может варьироваться от одного запроса к другому. Очень простой пример динамического документа — это получение сервером времени и даты. Время и дата — это тип информации, который динамически изменяется от момента к моменту. Клиент может запросить, чтобы сервер осуществлял управление программой, такой как программа date и UNIX, и посылал результат программы клиенту.

    Общий шлюзовой интерфейс

    Общий шлюзовой интерфейс (Common Gateway Interface – CGI) – это технология, которая создает и обрабатывает динамические документы. CGI — набор стандартов, которые определяют, как динамический документ должен быть написан, как должны быть поддержаны входные данные для программы и как должен быть использован выходной результат.

    CGI – это не новый язык; он позволяет программисту использовать любые несколько языков, таких как C, C++ и языки того же класса. Суть в том, что стандарт определяет набор правил и терминов, которым должен следовать программист.

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

    CGI-программа в простейшей форме записывает коды языков, поддерживаемых CGI. Любой программист, который может кодировать последовательность своих мыслей в программе и знает синтаксис одного из вышеперечисленных языков, может сам написать простую CGI-программу.

    Вход

    В традиционном программировании, когда параметры выполнены, они могут быть переданы программе. Передача параметров позволяет программисту писать настраиваемую программу, которая может быть использована в различных ситуациях. Например, настраиваемая копия программы может быть написана для любого копирования одного файла в другой. Пользователь может использовать программу для копирования файла с именем x к другому файлу с именем y, передавая x или y как параметры.

    Входные данные посылают от браузера к серверу, используя форму. Если информация в форме мала (типа одного слова), она может быть добавлена к URL после знака вопроса. Например, следующий URL переносит форму информации (имя файла – файл1).

    http://www.yandex/list/prog.pl?file1

    Когда сервер принимает URL, он использует часть URL перед знаком вопроса для доступа к программе, чтобы выполнить ее, и он интерпретирует часть после вопросительного знака ("файл1"), чтобы послать входные данные клиенту. Форма сохраняет эту строку в переменных окружения под именем QUERY_STRING (строка запроса). Когда эта CGI программа выполнена, она может обратиться к этому значению.

    Если вход от браузера вводит форму слишком долго, браузер может запросить у сервера посылку формы. Браузер может заполнить форму входными данными и послать ее серверу. Информация в форме может быть использована как входные данные к CGI-программе.

    Выход

    Идея CGI в целом — выполнить CGI-программу на стороне сервера и послать выходные данные к клиенту (браузеру). Выход — обычно простой текст или текст со структурой HTML; однако выход может быть весьма разнообразен. Он может быть графическими или двоичными данными, кодом состояния, инструкцией для браузера для кэширования (накопления информации в сверхоперативной памяти) или инструкцией серверу, чтобы выслать существующий документ вместо фактического выхода.

    Чтобы сообщить клиенту тип документа, CGI-программа должна создать заголовок и "тело". В действительности, выход программы CGI всегда существует в двух частях: заголовок и "тело". Заголовок отделяется пустыми строками от "тела". Это означает, что программа CGI сначала создает заголовок, затем пустые строки, а затем "тело". Хотя заголовок и пустые строки не показываются на браузере экрана, заголовок используется браузером для интерпретации "тела".

    Определены несколько различных заголовков для выхода из CGI-программы. Они подобны MIME-заголовкам. Мы коротко перечислим общие из них.

  • CONTENT_LENGTH. Задает длину выходных данных в байтах. Она обычно определяется для двоичных данных (например, для графики). Например, программа с заголовком CONTENT_LEGHT: 2000 означает, что выход содержит 2000 байт двоичных данных.
  • CONTENT_TYPE. Он определяет тип выходных данных. Например, программа с заголовком CONTENET-TYPE: text/plain содержит простой текст, в то время как СONTENT-TYPE: text/html содержит HTML-текст.
  • EXPIRES. Показывает дату и время, когда документ становится далее недействительным.
  • LOCATION. Показывает переназначение адреса документа
  • PRAGMA. Переводит документ для кеширования и обратно.
  • STATUS. Показывает состояние запроса.
  • Переадресация

    Выход CGI-программ может быть адресным файлом. Это называется переадресацией.

    Выход программы может быть адресом, чтобы переадресовать запрос к статическому документу. Браузер теперь может использовать этот адрес (URL), который приводит к статическому документу.

    Активные документы

    Для многих приложений необходимо, чтобы программа выполнялась на стороне клиента. Их называют активными документами. Например, надо выполнить программу, которая из полученного изображения создает анимированную графику на экране или взаимодействует с пользователем. А программа анимации и интерактивного обмена находится на стороне клиента, где происходит анимация и интерактивный обмен. Когда браузер запрашивает активный документ, сервер посылает копию документа в форме побайтного кода. Документ затем выполняется на сайте клиента (браузера). Активный документ в сервере накапливается в форме двоичных кодов. Однако он не создается на сервере тем же самым способом, как это делается в случае динамического документа. Хотя активный документ в сервере не выполняется, он сохраняется как двоичный документ, который восстанавливается клиентом. Когда клиент получает этот документ, он может также сохранить его в собственной области памяти. Потом клиент может работать с документом без применения другого запроса.

    Активный документ предается от сервера к клиенту в двоичной форме. Это означает, что он может быть сжат на стороне сервера и расширен на стороне клиента, сберегая и полосу, и время передачи.

    Технология, использующая сценарий для динамического документа

    Проблема CGI-технологии — в неэффективности результата, если часть динамического документа, который должен быть создан, постоянная и не меняется от запроса к запросу. Например, предположим, что мы запросили список запасных частей на определенную марку автомобиля, их характеристики и цены. Хотя характеристики и цены время от времени меняются, наименование, описание, картинки могут оставаться одними и теми же. Если использовать CGI, программа должна каждый раз создавать документ для запроса. Решение этой проблемы заключается в том, чтобы создать файл, содержащий постоянную часть документа, и вложить в исходный код, что имеется переменная часть — характеристики и цены.

    Такие действия могут выполняться с помощью специальных языков, например, Java Script, Active Server Pages (ASP) и других.

    Протокол передачи гипертекстовых файлов (HTTP)

    Протокол передачи гипертекстовых файлов (HTTP — Hypertext Transfer Protocol) используется в основном для доступа данных на Word Wide Web. Этот протокол передает данные в форме простых текстов, гипертекстов, аудио, видео и так далее. Однако он называется протоколом передачи гипертекстов, потому что его эффективность позволяет использовать его в гипертекстовом окружении, где имеются быстрые переходы от одного документа к другому.

    HTTP-функции подобны комбинации FTP и SMTP. Они похожи на FTP, потому что он передает файлы и использует услуги TCP/IP. Однако он гораздо проще, чем FTP, потому что использует только один TCP (хорошо известный порт 80). Нет никакого отдельного соединения управления; между клиентом и сервером передаются только данные.

    HTTP похож на SMTP, потому что данные, передаваемые между клиентом и сервером, выглядят точно так же, как SMTP-сообщения. В дополнение, формат сообщений управляется с помощью MIME-подобного заголовка. Однако HTTP отличается от SMTP способом, которым сообщения посылаются от клиента к серверу и от сервера к клиенту. В отличие от SMTP, сообщения HTTP не предназначены для чтения людьми; они читаются и интерпретируются HTTP-сервером и HTTP-клиентом (браузером). SMTP-сообщения сохраняются и передаются, а HTTP-сообщения доставляются непосредственно.

    Идея HTTP очень проста. Клиент посылает запрос, который выглядит как почтовое сообщение к серверу. Север посылает ответ, который выглядит как почтовый ответ к клиенту. Сообщения запроса и ответа переносят данные в виде формата, подобного MIME.

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

    HTTP-переходы

    HTTP использует услуги TCP, потому что сам HTTP – протокол, не основанный на смене состояния. Клиент инициализирует переход посылкой сообщения запроса. Сервер отвечает посылкой ответа.

    Сообщение запроса

    Сообщение запроса содержит строку запроса, заголовок и иногда "тело" ( рис. 16.7.).

    (рис 16.7) Сообщение запроса и ответа

    Сообщение запроса

    Линейка запроса определяет тип запроса, ресурс (URL) и версию HTTP. Линейка запроса содержит тип запроса, пробел, URL, пробел и версию HTTP.

  • Тип запроса (Request type). В версии HTTP 1.1 определены несколько типов запросов. Типы запроса разделяются по категориям несколькими методами, которые мы обсудим позднее.
  • Унифицированный локатор информационного ресурса (URL — Uniform Resource Locator). Клиент, который хочет иметь доступ к странице, нуждается в адресе, чтобы осуществить доступ к документам, распределенным по всему миру. HTTP пользуется концепцией локаторов. URL — стандарт для определения любого вида информации в Интернете. URL определяет четыре элемента: метод, хост, компьютер, порт и путь.
  • Протокол — это программа клиент-сервер, используемая для извлечения и доставки документа. Имеются много таких протоколов: FTP, HTTP, TELNET. Наиболее общий из них HTTP.

    Хост – компьютер, где находится информация, хотя имя компьютера может быть псевдонимом. Веб-страницы обычно накапливаются в компьютерах, и компьютеры дают псевдонимы именам, которые обычно начинаются с символов "www". Однако это не обязательно, поскольку хост может быть с любым именем, данным компьютеру, который является хостом веб-страницы.

    URL иногда может содержать номер порта сервера. Если порт включен, он должен быть вставлен между хостом и путем и должен быть отделен от хоста двоеточием.

    Путь — имя пути к файлу, где находится информация. Заметим, что путь сам может содержать "слеши" (наклонные черточки), которые в операционной системе UNIX отделяют директории от поддиректориев и файлов.

    Методы

    Поле типа запроса в сообщении запроса определяет несколько видов сообщений, называемых методы. Метод запроса – реальная команда или запрос, с которым клиент выходит к серверу. Мы здесь коротко обсудим цели некоторых методов.

    GET

    Метод GET используют, когда клиент хочет доставить документ от сервера. Адрес документа определяется в URL; это главный метод для доставки документа. Сервер обычно отвечает содержанием документа в "теле" ответного сообщения, если нет ошибки.

    HEAD

    Метод HEAD используется, когда клиент хочет получить некоторую информацию о документе, но не сам документ. Он подобен GET, но ответ от сервера не содержит "тело".

    POST

    Метод POST используется, когда клиент обеспечивает информацией сервер. Например, это может быть нужно для посылки информации ввода к серверу.

    PUT

    Метод PUT используется клиентом, чтобы обеспечить накопление нового или обновленного документа на сервере. Этот документ включает в "тело" запрос и будет сохранен в месте, определенном URL.

    PATCH

    PATCH похож на PUT, за исключением того что запрос содержит только список отличий, которые нужно внести в существующий файл.

    COPY

    Метод COPY используется, чтобы скопировать файл в другое место. Дается место исходного файла в линейке запроса (URL); место пункта назначения дается в заголовке (обсуждается в разделе "Заголовок").

    MOVE

    Метод MOVE используется для переноса файла в другое место. Место файла источника дается в линейке запроса (URL); место пункта назначения дается в заголовке.

    DELETE

    Метод DELETE используется для удаления документа из сервера.

    LINK

    Метод LINK используется для создания ссылки (линка) или ссылок (линков) от одного документа к документу, расположенному в другом месте. Расположение файла дано в линейке запроса (URL); место пункта назначения дано в заголовке.

    UNLINK

    Метод UNLINK используется для удаления ссылок (линков), созданных методом LINK.

    OPTION

    Метод OPTION используется клиентом для запроса сервера о доступности опции.

    Сообщение ответа

    Сообщение ответа содержит линейку состояния, заголовок и иногда "тело" (см. рис. 16.7.).

    Линейка состояния

    Линейка состояния определяет состояние ответного сообщения. Она содержит версию HTTP, пробел, код состояния, пробел, состояние фразы.

  • HTTP-версия. Это поле такое же, как поле линейки запроса.
  • Код состояния (Status code). Поле кода состояния аналогично этим же полям в FTP- и SMTP-протоколах. Оно содержит три цифры. При этом коды в диапазоне 100 — только информационные, коды в диапазоне 200 указывают успешный запрос. Коды в диапазоне 300 переориентируют клиента к другому URL, а коды диапазона 400 указывают на ошибку на стороне клиента. Наконец, коды диапазона 500 указывают на ошибку на стороне сервера. Мы приводим список наиболее общих кодов в таблице 16.2.
  • Фраза состояния. Это поле поясняет код состояния, обмена сообщениями в текстовой форме. Таблица 16.2. приводит такие фразы.
  • Коды состояния
    Код Фраза Описание
    Информационные
    100 Continue (Продолжение) Начальная часть запроса получена и клиент может продолжать свой запрос
    101 Switching (Коммутация) Клиент переключает по запросу клиента протокол, определенный в модернизированном заголовке
    Благоприятный исход
    200 OK Запрос успешен
    201 Created (Создан) Новый URL создан
    202 Accept (Принято) Запрос принят, но он непосредственно не выполняется
    204 No content (Без содержания) Содержание в "теле" отсутствует
    Переадресация
    301 Multiple choices (Многократный выбор) Запрос URL с обращением к более чем одному ресурсу
    302 Moved permanently (Постоянно перемещаемый) Запрос URL больше не используемым сервером
    304 Moved temporary (Временно перемещаемый) Запрос URL временно перемещен
    Ошибка клиента
    400 Bad request (Плохой запрос) Синтаксическая ошибка в запросе
    401 Unauthorized (Неполномочный запрос) Запрос не имеет надлежащих полномочий
    403 Forbidden (Запрещенный) Сервис не существует
    404 Not found (Не найден) Документ не найден
    405 Method not allowed (Метод не разрешен) Метод не поддерживается данным URL
    406 Not acceptable (Недоступен) Формат требования не воспринимается
    Ошибка сервера
    500 Internal server error (Внутренняя ошибка сервера) Есть ошибка, такая как всплеск помех на стороне сервера
    501 Not implemented (Неосуществимо) Затребованное действие не может быть выполнено
    503 Service unviable (Сервис недоступен) Сервис временно недоступен, но может быть затребован в будущем

    Заголовок

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

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

    Линия заголовка принадлежит к одной из четырех категорий: общий заголовок, заголовок запроса, заголовок ответа и объекта. Сообщение запроса может содержать только заголовки: общий, запрос объекта. С другой стороны, ответное сообщение может содержать только заголовки общий, ответа и объекта. Рисунок 16.7. изображает схематически сообщение запроса и сообщение ответа.

    Общий заголовок

    Общий заголовок дает общую информацию о сообщении и может быть представлен и в запросе, и в ответе. Таблица 16.3. перечисляет некоторые заголовки с их описанием.

    Общий заголовок
    Заголовок Описание
    Cache-control (управление) Задает информацию о кэшировании кэш-памятью)
    Connection (Соединение) Показывает, должно ли соединение быть закончено или нет
    Date (Данные) Показывает текущие данные
    Версия MIME Показывает используемую версию MIME
    Upgrade (Обновление) Задает предпочитаемый протокол связи

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

    Заголовок запроса может присутствовать только в сообщении запроса. Он задает конфигурацию клиента и предпочтительный формат документа клиента. Таблица 16.4. содержит список некоторых заголовков запроса и их описания.

    Заголовки запроса
    Заголовок Описание
    Accept (Принято) Показывает массовый формат, который может быть принят клиентом
    Accept-charset (Принятый набор символов) Показывает набор символов, которые могут быть предложены клиенту
    Accept-encoding (Принятое кодирование) Показывает схему кодирования, которая может быть предложена клиенту
    Accept-language (Принятый язык) Показывает язык, который клиент может применить
    Authorization (Полномочия) Показывает, что разрешено клиенту
    From (От) Показывает электронный адрес пользователя
    Host (Хост) Показывает номера порта и хоста клиента
    If-modified-since (Если – модифицирован – к) Посылает документ, если он обновлен к определенной дате
    If-match (Если сравнился) Посылает документ, если только сравнениедает тег
    If-non-match (Если не сравнился) Посылает документ, если только сравнение не дает тег
    If-range (Если диапазон) Посылает порцию документов, которые потеряны
    If-unmodified-since (Если – не модифицирован – к) Посылает документ, если он не изменен к определенной дате
    Referrer (Ссылка) Задает URL присоединяемого документа
    User-agent (Агент пользователя) Идентифицирует программу клиента

    Заголовок ответа

    Заголовок ответа может присутствовать только в сообщении "ответ". Он задает конфигурацию сервера и специальную информацию о запросе. Таблица 16.5. содержит список некоторых заголовков с их описаниями.

    Заголовки ответа
    Заголовок Описание
    Accept-range (Принятый диапазон) Показывает диапазон, запрашиваемый клиентом у сервера
    Age (Возраст) Показывает "возраст" документа
    Public Показывает поддерживаемый список методов
    Retry-after Задает события, после которых сервер становится доступным
    Server Показывает имя сервера и номер версии

    Заголовок объекта

    Заголовок объекта дает информацию о "теле" документа. Хотя он в большинстве случаев представлен в сообщении ответа, некоторые сообщения запроса, такие как POST- или PUT-методы, которые содержат "тело", также используют этот тип заголовка. Таблица 16.6. содержит список некоторых заголовков объекта и их описания.

    Заголовки объекта
    Заголовок Описание
    Allow (Разрешено) Список действительных методов, которые могут быть использованы с URL
    Content-encoding (Перечень кодирования) Заданная схема кодирования
    Content-language (Перечень языков) Заданный язык
    Content-length (Перечень длины) Показывает длину документа
    Content-rang (Перечень диапазонов) Задает диапазон документа
    Content-type (Перечень типов) Задает тип аппаратуры окружения
    Etag (E-тег) Дает тег объекта
    Expires (Истекло) Дает дату и время, когда содержание может измениться
    Last-modified (Последняя модификация) Задает дату и время последнего изменения документа
    Location (месторасположение) Задает местоположение созданного или перемещенного документа

    Примеры

    В этом разделе мы дадим три простых примера запросов и ответных сообщений.

    Пример 1

    В этом примере доставляется документ. Мы используем метод GET, чтобы доставить изображение с путем /usr/bin/image1. Линейка запроса показывает метод ( GET ), URL и HTTP-версию (1.1). Этот заголовок имеет две линейки, которые показывают, что клиент может принять изображение в форматах GIF и JPEG. Запрос не имеет "тела". Ответное сообщение содержит линейку состояния и четыре линейки заголовка. Линейки заголовка определяют дату, сервер, версию MIME и длину документа ( рис. 16.8.).

    (рис 16.8) Пример 1

    Пример 2

    Пример доставки информации о документе. Мы используем метод HEAD для доставки информации о HTML-документе. Линейка запроса показывает метод ( HEAD ), URL и версию HTTP (1.1). Заголовок – это одна линейка, показывающая, что клиент может принять документ в любом формате (непредсказуемое событие). Запрос не имеет "тела". Ответное сообщение содержит линейку состояния и пять линеек заголовка. Линейка запроса определяет дату, сервер, версию MIME, тип документа и длину документа ( рис. 16.9.). Заметим, что сообщение не содержит "тела".

    (рис 16.9) Пример 2

    Пример 3

    В этом примере клиент хочет послать входные данные серверу. Мы используем метод POST. Линейка запроса показывает метод ( POST ), URL и версию HTTP (1.1). Имеется четыре линейки заголовков. Запрос содержит входную информацию в "теле". Ответное сообщение содержит линейку состояния и четыре линейки заголовков. Созданный документ является документом CGI и включает "тело" ( рис. 16.10.).

    Продолжительное соединение в сравнении с непродолжительным

    HTTP-версия 1.0 — непродолжительное соединение, в то время как продолжительное соединение есть по умолчанию в версии 1.1.

    Непродолжительное соединение

    В непродолжительном соединении одно TCP-соединение делается по каждому запросу/ответу.

    (рис 16.10) Пример 3

    Ниже перечислены шаги в этой стратегии.

  • Клиент открывает TCP-соединение и посылает запрос.
  • Сервер посылает ответ и заканчивает соединение.
  • Клиент читает данные, пока не наталкивается на метку конца файла, затем он закрывает соединение. В этой стратегии для N различных картинок в различных файлах соединение должно быть открыто и закрыто N раз. Непродолжительное соединение вызывает перегрузку сервера, потому что сервер нуждается в N различных буферах и требует процедуру медленного старта каждый раз, когда открывает соединение.

    Продолжительное соединение

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

    Сервер-посредник (Proxy server)

    HTTP поддерживается прокси-серверами. Это компьютеры, которые содержат программные средства, предназначенные для защиты локальной и корпоративной сети от несанкционированного доступа или опасных приложений. Proxy(промежуточный)-сервер – это компьютер, который сохраняет копии ответов на прежние запросы. При наличии прокси-сервера клиент HTTP посылает запрос именно к нему. Прокси-сервер проверяет свою кэш-память. Если ответ в кэше не сохранен, прокси-сервер посылает запрос к соответствующему серверу. Входящий ответ посылается к прокси-серверу и запоминается для будущих запросов от клиентов.

    Прокси-сервер уменьшает загрузку исходного сервера, уменьшает нагрузку, улучшает реакцию. Однако чтобы использовать прокси-сервер, клиент должен быть конфигурирован для доступа к proxy вместо целевого сервера.

    Краткие итоги

  • Всемирная паутина (World Wide Web – WWW) – это хранилище информации, размещенной во всем мире и соединенной воедино.
  • Гипертекст и гипермедиа – документы, объединенные один за другим с использованием концепции указателей.
  • Браузеры интерпретируют и отображают веб-документы.
  • Hypertext Transfer Protocol – это усовершенствованная прикладная программа извлечения файлов, которая может предоставить доступ и соединить документы WWW.
  • Веб-документ может быть классифицирован как статический, динамический и активный.
  • Статический документ — это один из тех, содержание которых зафиксировано и накоплено на сервере. Клиент не может изменять этот документ на сервере.
  • Hypertext Markup Language (HTML, русский перевод – язык гипертекстовой разметки) – это язык, используемый для создания статических веб-страниц.
  • Любой браузер может читать инструкции форматирования (теги), вставленные в HTML-документы.
  • Веб-страница имеет заголовок и "тело".
  • Теги обеспечивают структуру документа, определяя название и заголовок, формат текста, управление потоком данных, вставкой рисунков, соединением различных документов вместе, а также определяют исполняемые коды.
  • Динамический веб-документ создает с помощью браузера только запрос на порождаемый документ.
  • Обычный интерфейс шлюза (Common Gateway interface – CGI) – это стандарт для создания и обработки динамических веб-документов.
  • Сервер получает входные данные от браузера с помощью формы.
  • Сервер посылает выходные данные CGI-программы к браузеру.
  • Выходные данные CGI-программы могут быть текстом, графикой, двоичными данными, кодами состояния, инструкциями или адресом файла.
  • Активный документ – это копия программы, извлекаемая клиентом и выполняемая клиентом на сайте.
  • Протокол передачи гипертекстовых файлов (Hypertext Transfer Protocol — HTTP) — главный протокол, используемый для доступа к WWW (World Wide Web).
  • HTTP использует TCP-соединение для передачи файла.
  • HTTP-сообщение похоже по форме на SMTP-сообщение.
  • Сообщение (запрос или ответ) состоит из линейки состояния, заголовка и "тела" (требуется только для некоторых типов сообщений).
  • Линейка запроса состоит из типа запроса URL и номера версии HTTP.
  • Универсальный локатор ресурсов (Uniform resource Locator — URL) состоит из метода, компьютера хоста, необязательно из номера порта, и имени пути к месторасположению информации WWW.
  • Тип запроса или метод – это действующая команда или запрос, исходящий от клиента к серверу.
  • Линейка состояния состоит из номера версии HTTP, кода состояния и фразы состояния.
  • Код состояния транслирует общую информацию, относящуюся к успешным запросам, перенаправлению информации или ошибочной информации.
  • Заголовок транслирует дополнительную информацию между клиентом и сервером.
  • Заголовок состоит из имени заголовка и содержания заголовка.
  • Общий заголовок дает общую информацию о сообщении запроса или ответном сообщении.
  • Заголовок запроса задает конфигурацию клиента и предпочтительный формат документа.
  • Ответный заголовок задает конфигурацию сервера и специальную информацию о запросе.
  • Заголовок объекта обеспечивает информацией о "теле" документа.
  • Версия 1.1 HTTP задает продолжительное соединение.
  • Прокси-сервер сохраняет копии ответов на предыдущие запросы.
  • Задачи и упражнения

  • Покажите роль тегов в следующей строке:
    This is <BR> a line of <BR> HTML
  • Покажите роль тегов в следующей строке:
    This is <BR> <BR> another line of <BR><BR> HTML
  • Покажите роль тегов в следующей строке:
    <H1> DOCUMENT </H2> HTML
    <H1> This is an HTML document </H1>
    <H1> It shows the effect of H-tags </H1>
  • Покажите роль тегов в следующей строке
    <UL>
    <LI> Last Name, First Name, Initial </LI>
    <LI> Street Address, City </LI>
    <LI> Stat, Zip Code </LI>
  • Покажите извлечение документа usr/users/doc/doc1/, используйте по крайней мере два общих заголовка, два заголовка запроса и один заголовок объекта.
  • Покажите сообщение "ответ" по упражнению 5 при успешном запросе
  • Покажите ответ по упражнению 5, если документ перемещен постоянно в /usr/.deads/doc1.
  • Покажите ответ по упражнению 5, если обнаружена синтаксическая ошибка.
  • Покажите ответ по упражнению 5, если клиент при доступе к документу не опознан.
  • Покажите запрос, который запрашивает информацию о документе /bin/users/file/, используйте по крайней мере два общих заголовка и один заголовок запроса.
  • Покажите ответ по упражнению 10.
  • Покажите запрос копии файла, расположенного /bin/usr/bin/file1/ в файл /bin/file1/.
  • Покажите сообщение "ответ" по упражнению 12.
  • Покажите запрос на удаление файла, расположенного /bin/file1/. Клиенту необходимо это сделать, если документ был модифицирован в определенную дату.
  • Покажите сообщение "ответ" по упражнению 14.
  • Дополнительный материал для прохождения тестирования к лекции, Вы можете скачать здесь.

    Страницы:

    World Wide Web (WWW) – это хранилище информации, размещенной во всем мире и соединенной воедино. WWW – уникальная комбинация гибкости, мобильности дружественных пользователю свойств, что отличает ее от других служб, обеспечиваемых с помощью Интернета.

    WWW-проект был инициирован CERN (Center European Laboratory for Practice Physics), чтобы создать систему для обработки распределенных ресурсов, необходимых для научных исследований.

    WWW сегодня — распределенная система клиент-сервер обслуживания, в которой клиент, использующий браузер1, может иметь доступ к этой службе с применением сервера. Однако обеспечиваемая служба распределяется по многим местам, называемым вместе websites.

    Архитектура

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

    Каждый сайт содержит одну или более ссылок на веб-документы. Каждая веб-страница может содержать линк (связь) с другими страницами на том же самом сайте. Страницы могут быть вызваны для работы с браузерами. Рассмотрим сценарий, показанный рис. 16.1. Клиенту нужна информация, которая принадлежит сайту A. Он посылает запрос через браузер, программа которого доставляет веб-документ. Запрос, который включает в себя адрес веб-сайта и веб-страницы (web-page), называется универсальным идентификатором ресурса — URI (Uniform Resource Identifier), который будет рассмотрен далее. Сервер находит и посылает документ клиенту. Когда пользователь смотрит документ, он может найти ссылки на другие документы, включая веб-страницы сайта B. Ссылка содержит URL для нового сайта. Пользователь может рассмотреть другой интересующий его документ. Клиент посылает другой запрос к новому сайту и вызывает другую страницу.

    (рис 16.1) Архитектура WWW

    Архитектура браузеров

    Различные производители предлагают коммерческие браузеры, которые интерпретируют и отображают веб-документы, и все они используют одинаковую или родственную архитектуру. Каждый браузер обычно содержит три части: контроллер, клиентский протокол и интерпретатор. Контроллер получает входную информацию от клавиатуры или "мыши" и использует клиентскую программу для доступа к документам. После того как документ доступен, контроллер применяет один из интерпретаторов, чтобы отобразить документ на экране. Клиентские программы могут использовать один из методов (протоколов) – такие как HTTP, FTP, TELNET. Интерпретатор может быть HTML или Java, JavaScript, в зависимости от типа документа ( рис. 16.2.).

    (рис 16.2) Архитектура браузера

    Сервер

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

    Универсальный идентификатор ресурса — URL (Uniform Resource Locator)

    Клиент, который хочет вызвать веб-страницу, должен располагать ее адресом. Чтобы обеспечить доступ к документам, разбросанным во всем мире, существует протокол передачи гипертекста (HTTP – Hypertext Transfer Protocol). Универсальный идентификатор ресурса — URL (Uniform Resource Locator) — стандарт для любой заданной информации в Интернете. URL определяет четыре элемента: протокол, хост, порт и путь ( рис. 16.3.).

    Протокол (метод) – программа клиент-сервер, используемая для доставки документа. Несколько различных протоколов могут доставлять документ; среди них Gopher, FTP, HTTP, News и TELNET. На сегодня наиболее общий протокол — HTTP.

    Хост – компьютер, где находится информация, хотя имя компьютера может быть псевдонимом. Веб-страницы обычно накапливаются в компьютерах, и компьютеры дают псевдонимы именам, которые обычно начинаются с символов "www". Однако это не обязательно, поскольку хост может быть с любым именем, данным компьютеру, который является хостом веб-страницы.

    (рис 16.3) Универсальный идентификатор ресурса — URL

    URL иногда может содержать номер порта сервера. Если порт включен, он должен быть вставлен между хостом и путем и должен быть отделен от хоста двоеточием.

    Путь — имя пути к файлу, где находится информация. Заметим, что путь сам может содержать "слеши" (наклонные черточки), которые в операционной системе UNIX отделяют директории от поддиректорий и файлов.

    Cookies

    World Wide Web (WWW) — Всемирная паутина — вначале была спроектирована для выполнения непосредственно функций вызова заданного документа. Сегодня эта система выполняет несколько дополнительных функций, перечисленных ниже.

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

    Рассмотрим коротко работу с этими объектами.

    Создание и хранение cookies

    Создание и сохранение cookies (на сленге — "плюшки") зависит от клиента; однако имеются общие принципы.

  • Когда сервер получает запрос от клиента, он сохраняет информацию о клиенте в файле или строке. Информация может включать в себя доменное имя клиента, содержание cookie (собранная информация сервера о клиенте, такая как имя, регистрационный номер и т. п.), метку времени и другую информацию, которая зависит от применения.
  • Сервер включает cookie в ответ, который посылается клиенту.
  • Когда клиент получает ответ, браузер накапливает cookie в директории "cookie", которая сохраняет эту информацию под доменным именем сервера.
  • Использование cookies

    Когда клиент посылает запрос серверу, браузер просматривает директорию "cookie". Если cookie найдены, они посылаются серверу. Они включаются в запрос. Когда сервер получает запрос, он узнает, что этот клиент "старый". Они создаются сервером и "потребляются" сервером. Рассмотрим теперь cookies, используемые для четырех целей, которые были упомянуты ранее.

  • Сайту, имеющему строгий доступ, посылается cookie, только когда клиент регистрируется первый раз. Для повторного доступа только этого клиента допускается посылать соответствующий cookie.
  • Электронный магазин (e-commerce) может использовать cookie. Когда клиент выбирает предмет и помещает его в корзину, он посылает браузеру cookie, которое содержит информацию об этом предмете, такую как номер и цену за единицу. Если клиент выбирает второй предмет, cookie обновляется новой информацией и так далее. Когда клиент заканчивает покупки и хочет рассчитаться, вызывается последний cookie и подсчитывается вся сумма стоимости покупок.
  • Веб-портал использует cookie следующим образом. Когда пользователь выбирает свою страничку, порождается и посылается cookie. Если сайт посещается вновь, cookie посылается серверу, чтобы показать, что это ожидаемый клиент.
  • Cookie также применяется рекламными агентствами. Рекламные агентства могут предоставлять полосу-баннер (banner) в дополнение к главному веб-сайту, который часто посещают пользователи. Рекламное агентство поддерживает только URL, который дает адрес, вместо самого баннера. Когда пользователь посещает главный веб-сайт и вызывает икону (изображение), размещенное рекламной корпорацией, посылается запрос в рекламное агентство. Рекламное агентство посылает баннер, например, графический файл (GIF — Graphic Interchange Format), но также и cookie с ID пользователя. Любое будущее использование баннера добавляется к базе данных, к профайлам веб-окружения пользователя. Коммерческое агентство собирает интересующую информацию пользователя и может продать другому пользователю. Это весьма сомнительное использование cookie. Следует надеяться только на законы, защищающие личную и коммерческую тайну.
  • Веб-документы

    Документы в WWW могут быть сгруппированы в три основных категории: статистические, динамические и активные. Эти категории основаны на допустимом времени их содержания.

    Статические документы

    Статические документы с фиксированным содержанием, которое порождается и сохраняется в сервере. Клиент может получить только копию документа. Другими словами, содержание в сервере задается при создании файла, но не тогда, когда он используется. Конечно, содержание в сервере может быть заменено, но пользователь не может сделать этого. Когда клиент получает доступ к документу, ему посылается только копия. Пользователь может затем использовать программы просмотра документа для его последовательного вывода на экран ( рис. 16.4.).

    (рис 16.4) Статический документ

    HTML

    Hypertext Markup Language (HTML) – язык гипертекстовой разметки, предназначен для создания веб-страниц. Термин язык разметки пришел из издательской индустрии. Перед тем как книга будет напечатана, технический редактор читает рукопись и ставит на ней много пометок. Эти пометки говорят дизайнеру, как форматировать текст. Например, если технический редактор хочет часть строк напечатать полужирным шрифтом, он подчеркивает волнистой линией такую часть. Тем же методом данные для веб-страницы форматируются для интерпретации браузером.

    Попробуем разъяснить эту идею примером. Чтобы часть текста высвечивалась полужирным шрифтом HTML, мы должны включить в начало и конец области жирного шрифта тег (пометку) в тексте, как это показано на рис. 16.5.

    (рис 16.5) Теги полужирного шрифта

    Два тега — <B> и </B> — инструкции для браузера. Когда браузер видит эти две отметки, он знает, что текст полужирный.

    Язык разметки, такой как HTML, позволяет нам включать инструкции форматирования в самом файле. Инструкции включают в текст. Таким способом браузер может читать инструкции и форматы текста так, как они заданы рабочей станцией. При этом может возникнуть вопрос, почему мы не используем для форматирования возможности самого процессора. Ответ – различные процессоры используют различную технику или процедуры форматирования текста. Например, изображение, которое создал пользователь, отформатировано на компьютере Macintosh и накоплено на веб-странице. Другой пользователь, который имеет IBM компьютер, не сможет получить эту страницу, потому что два компьютера используют различные процедуры форматирования.

    HTML позволяет использовать только символы ASCII для текста и инструкций форматирования. Таким образом, каждый компьютер может получить документ полностью как ASCII-документ. Этот главный текст – данные и инструкции форматирования — может быть применен для форматирования данных.

    Веб-страница состоит из двух частей: заголовок и информационный блок ("тело" сообщения). Заголовок — первая часть веб-страницы. Заголовок содержит название страницы и другие параметры, которые будут использоваться браузером.

    Реальное содержание страницы информационного сообщения включает текст и теги. Текст — реальная информация, содержащаяся в странице, теги определяют вид документа. Каждый HTML-тег – это имя, которое сопровождается списком атрибутов, заключенных между треугольными скобками.

    Атрибуты представлены следующие: эквивалентные знаки и значения атрибутов. Несколько тегов могут быть применены как одиночные символы; некоторые могут быть представлены парами. Те, которые используются парами, называются стартовый (beginning) и конечный (ending) теги. Стартовый тег может иметь атрибуты и значения. Конечный тег не может иметь атрибуты и значения, но может иметь "слеш" (наклонную черту) перед именем тега.

    На основе тегов браузер делает выводы о структуре текста, которая заложена внутри самого текста. Рисунок 16.6 показывает формат тега.

    (рис 16.6) Начальный и конечный теги

    Таблица 16.1 показывает некоторые наиболее общие теги. Мы объясним некоторые из них на основании их категорий.

    Наиболее общие теги
    Начальный тег Конечный тег Значение
    Теги структуры
    <HTML> </HTML> Определяет HTML-документ
    <HEAD> </HEAD> Определяет заголовок HTML-документа
    <BODY> </BODY> Определяет "тело" HTML-документа
    Теги названия и заголовка
    <Title> </Title> Определяет название документа
    <Hn> </Hn> Определяет различные заголовки (n целое)
    Теги форматирования текста
    <B> </B> Полужирный
    <I> </I> Курсив
    <U> </U> Подчеркнутый
    <SUB> </SUB> Нижний индекс
    <SUP> </SUP> Верхний индекс
    Теги потока данных
    <CENTER> </CENTER> Сосредоточенный
    <BR> Прерывистый
    Теги списков
    <OL> </OL> Упорядоченный список
    <UL> </UL> Неупорядоченный список
    <LI> </LI> Список единиц
    Теги изображения
    <IMG> Определяет изображение
    Теги гиперссылки
    <A> </A> Определение адреса (гиперссылки)
    Теги выполняемого содержания
    <APPLET> </APPLET> Документ – встроенная в текст программа

    Теги структуры

    Теги структуры (Skeletal tag) показывают структуру документа, а также как она разделяется на заголовки и "тело".

  • <HTML> и </HTML>. Каждый документ HTML должен стартовать и финишировать с этими двумя тегами. Это сигналы браузеру, что HTML-документ вложен между этими тегами.
  • <HEAD> и </HEAD>. Заголовок содержит информацию о самом документе. Заголовок должен определяться с использованием двух тегов.
  • <BODY> и </BODY>. "Тело" страницы содержит фактическую информацию. "Тело" вставляется между двумя метками body.
  • Теги названий и заголовков

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

  • <TITLE> и </TITLE> Название страницы обычно размещают в заголовке. Название включаются между двумя метками названия. Название может быть или не быть отображено на дисплее или при печати, когда страницы становятся доступными браузеру.
  • <Hn> и </Hn> Заголовки вставляются в страницу с использованием тегов заголовка. Мы можем создать различные уровни заголовков. Метки заголовков следуют за символом H с цифрой. Например, H1 — заголовок наибольшего уровня, H2 — второй уровень заголовков и так далее.
  • Теги форматирования текста

    Следующие теги используют для того, чтобы указать формат текста:

  • <B> и </B>. Текст между этими тегами должен быть полужирным.
  • <I> и </I>. Текст между этими тегами должен быть курсивом.
  • <U> и </U>. Текст между этими тегами должен быть подчеркнутым.
  • <SUB> и </SUB>. Текст между этими тегами должен быть нижним индексом.
  • <SUP> и </SUP>. Текст между этими тегами должен быть верхним индексом.
  • Теги потока данных

    Следующие теги используются для управления потоком данных:

  • <BR> Этот тег вставляется при прерывании строки в тексте.
  • <CENTER>> и </CENTER>. Текст между этими тегами должен быть сплошным.
  • Теги списков

    Следующие теги используются для создания списка единиц передачи:

  • <UL> и </UL>. Часто необходимо создать список рубрик. HTML имеет механизм для того, чтобы создать последовательно типы списков. Простейший — это неупорядоченный список, в котором рубрики перечислены одна за другой в произвольном порядке. Чтобы создать список, используют тег <UL> в начале и тег </UL> ) в конце списка. Каждому перечислению может предшествовать тег <LI>.
  • <OL> и </OL>. Этот тег похож на <UL> и </UL>, за исключением того, что рубрика в списке нумеруется.
  • <LI> и </LI>. Эти теги определяют список рубрик. В конце обычно тег пропускается.
  • Теги изображения

    Следующие теги используются, чтобы вставить рисунок в документ:

  • <IMG>. Нетекстовая информация, такая как цифровое фото или графические изображения, не является физической частью HTML-документа. Но мы можем использовать теги изображения в любой точке файла, чтобы добавить фото и изображения. Тег изображения определяет адрес изображения, чтобы изображение могло быть найдено. Также определяется, как изображение может быть вставлено после нахождения. Далее показан формат тега изображения. Мы можем выбрать из числа нескольких атрибутов. Наиболее общий — SRC (источник), который определяет источник (адрес), и ALIGN, который определяет принцип регулирования изображения. Большинство браузеров принимает изображение в GIF и JPEG-форматах.
  • <IMG SRC= "........" ALIGN= <........>

    Для примера: следующий тег может быть восстановлен, изображение накапливается как "image1.gif" в директории /bin/image:

    <IMG SRC="/bin/image/image1.gif" ALIGN=<MIDDLE>

    Теги гиперссылки

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

  • <A.......> и </A>. Язык гипертекстовой разметки необходим для связывания документов между собой. Любая рубрика (слово, фраза, параграф или изображение) может быть направлена к другому документу. Механизм, названный "закрепление" (anchor), делающий эту работу, определяется тегами <A…….> и </A>, и закрепление рубрик используется URL для ссылки на другие документы. Когда документ отражается на дисплее, элементы закрепления подчеркиваются, мигают или выделяются жирным шрифтом. Пользователь может "щелкнуть" указателем закрепленный элемент, чтобы перейти на другой документ, который может или не может быть накоплен на том же самом сервере как исходный документ.
  • Далее показан формат метки закрепления. Фраза, содержащая ссылку, вставлена между начальным и конечным тегом. Начальный тег может иметь несколько атрибутов, но один требуется обязательно — HREF (гиперссылка), которая определяет адрес (URL) подключаемого документа.

    <A HREF ="........"> Ref-Phrase </A>

    Например, для того, чтобы присоединить данные автора книги, мы можем

    <A HREF ="http:www.universitet/telecom"> Author </A>

    В тексте появляется слово "Author", с помощью которого пользователь может запросить переход к веб-странице автора.

    Теги выполняемого содержания

    Теги выполняемого содержания показывают, что содержание, заключенное между двумя тегами, является бинарным или байтовым кодом. Он должен быть выполнен, чтобы создавать выходной результат. Мы рассмотрим теги, которые определяют документ как апплет (applet). Мы обсудим только теги, которые определяют программу как распространяемую программу.

  • <APPLET CODE> и </APLET>. Эти теги определяют документ как апплет, т. е. маленькую программу. Несколько атрибутов могут быть использованы с тегами апплет; мы показываем только самые обычные.
  • <APPLET CODE>=……HEIGHT=….WIDTH=…..>
    ...................
    ...................
    ...................
    </APPLET>

    Примеры

    В этом разделе мы дадим некоторые простые примеры HTML-документов, чтобы показать выполнение тегов, которые рассматривались ранее.

    Пример 1

    Этот простой пример показывает, как теги структуры используют для частей HTML-документа.

    Первая HTML-программа
    <HTML>
    	<HEAD>
    		<TITLE>
    			Первый образец документа
    		</TITLE>
    	</HEAD>
    	<BODY>
    		Рад сообщить Вам, что........
    		..............
    		..............
    	</BODY>
    </HTML>
    
    <HTML>
    	<HEAD>
    		<TITLE>
    			Второй образец документа
    		</TITLE>
    	</HEAD>
    	<BODY>
    		<CENTER>
    		<H1>B> Особенности книги H1> B>
    		</CENTER>
    
    		Книга имеет небольшой формат........
    		<UL>
    		<LI> Письмо издателю
    		<LI> Форма заказа в режиме on-line
    		<LI> Форма заказ в книжном магазине
    		</UL>
    	</BODY>
    </HTML>

    Пример 2

    Этот пример показывает, как теги используют для того, чтобы позволить браузеру форматировать текст.

    Вторая HTML-программа
    <HTML>
    	<HEAD>
    		<TITLE> Список книг </TITLE>
    	</HEAD>
    	<BODY>
    		<CENTER>
    		<H1><B> ВНИМАНИЕ </B></H1>
    		</CENTER>
    		Список действителен по 1 февраля 2008 года:
    		<UL> Каналы сети связи
    		<LI> Цифровые преобразователи
    		<LI> Электропитающие устройства
    		</UL>
    	</BODY>
    </HTML>

    Пример 3

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

    Третья HTML-программа
    <HTML>
    	<HEAD>
    		<TITLE>
    			Третий образец документа
    		</TITLE>
    	</HEAD>
    	<BODY>
    		Это рисунки к этой книге
    		<IMG SRC= "picture/book1.jpg" ALIGN=MIDDLE>>
    	</BODY>
    </HTML>

    Пример 4

    Этот пример показывает, как используются теги, чтобы сделать гиперссылку на другой документ.

    Четвертая HTML-программа
    <HTML>
    	<HEAD>
    		<TITLE>
    			Четвертый образец документа
    		</TITLE>
    	</HEAD>
    	<BODY>
    		Если возникнут вопросы, можно обратится к автору.
    		<HREF=http:www.Berlin @univer.com">
    		Берлин </A>
    	</BODY>
    </HTML>

    Динамические документы

    Динамические документы не существуют в заранее определенном формате. Динамический документ создается веб-сервером всегда, когда браузер запрашивает документ. Когда поступает запрос, веб-сервер рассматривает прикладные программы, чтобы создать динамический документ. Сервер возвращает на выходе программы запрашиваемый документ как отклик, потому что каждый документ создается для каждого запроса, содержание динамического документа может варьироваться от одного запроса к другому. Очень простой пример динамического документа — это получение сервером времени и даты. Время и дата — это тип информации, который динамически изменяется от момента к моменту. Клиент может запросить, чтобы сервер осуществлял управление программой, такой как программа date и UNIX, и посылал результат программы клиенту.

    Общий шлюзовой интерфейс

    Общий шлюзовой интерфейс (Common Gateway Interface – CGI) – это технология, которая создает и обрабатывает динамические документы. CGI — набор стандартов, которые определяют, как динамический документ должен быть написан, как должны быть поддержаны входные данные для программы и как должен быть использован выходной результат.

    CGI – это не новый язык; он позволяет программисту использовать любые несколько языков, таких как C, C++ и языки того же класса. Суть в том, что стандарт определяет набор правил и терминов, которым должен следовать программист.

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

    CGI-программа в простейшей форме записывает коды языков, поддерживаемых CGI. Любой программист, который может кодировать последовательность своих мыслей в программе и знает синтаксис одного из вышеперечисленных языков, может сам написать простую CGI-программу.

    Вход

    В традиционном программировании, когда параметры выполнены, они могут быть переданы программе. Передача параметров позволяет программисту писать настраиваемую программу, которая может быть использована в различных ситуациях. Например, настраиваемая копия программы может быть написана для любого копирования одного файла в другой. Пользователь может использовать программу для копирования файла с именем x к другому файлу с именем y, передавая x или y как параметры.

    Входные данные посылают от браузера к серверу, используя форму. Если информация в форме мала (типа одного слова), она может быть добавлена к URL после знака вопроса. Например, следующий URL переносит форму информации (имя файла – файл1).

    http://www.yandex/list/prog.pl?file1

    Когда сервер принимает URL, он использует часть URL перед знаком вопроса для доступа к программе, чтобы выполнить ее, и он интерпретирует часть после вопросительного знака ("файл1"), чтобы послать входные данные клиенту. Форма сохраняет эту строку в переменных окружения под именем QUERY_STRING (строка запроса). Когда эта CGI программа выполнена, она может обратиться к этому значению.

    Если вход от браузера вводит форму слишком долго, браузер может запросить у сервера посылку формы. Браузер может заполнить форму входными данными и послать ее серверу. Информация в форме может быть использована как входные данные к CGI-программе.

    Выход

    Идея CGI в целом — выполнить CGI-программу на стороне сервера и послать выходные данные к клиенту (браузеру). Выход — обычно простой текст или текст со структурой HTML; однако выход может быть весьма разнообразен. Он может быть графическими или двоичными данными, кодом состояния, инструкцией для браузера для кэширования (накопления информации в сверхоперативной памяти) или инструкцией серверу, чтобы выслать существующий документ вместо фактического выхода.

    Чтобы сообщить клиенту тип документа, CGI-программа должна создать заголовок и "тело". В действительности, выход программы CGI всегда существует в двух частях: заголовок и "тело". Заголовок отделяется пустыми строками от "тела". Это означает, что программа CGI сначала создает заголовок, затем пустые строки, а затем "тело". Хотя заголовок и пустые строки не показываются на браузере экрана, заголовок используется браузером для интерпретации "тела".

    Определены несколько различных заголовков для выхода из CGI-программы. Они подобны MIME-заголовкам. Мы коротко перечислим общие из них.

  • CONTENT_LENGTH. Задает длину выходных данных в байтах. Она обычно определяется для двоичных данных (например, для графики). Например, программа с заголовком CONTENT_LEGHT: 2000 означает, что выход содержит 2000 байт двоичных данных.
  • CONTENT_TYPE. Он определяет тип выходных данных. Например, программа с заголовком CONTENET-TYPE: text/plain содержит простой текст, в то время как СONTENT-TYPE: text/html содержит HTML-текст.
  • EXPIRES. Показывает дату и время, когда документ становится далее недействительным.
  • LOCATION. Показывает переназначение адреса документа
  • PRAGMA. Переводит документ для кеширования и обратно.
  • STATUS. Показывает состояние запроса.
  • Переадресация

    Выход CGI-программ может быть адресным файлом. Это называется переадресацией.

    Выход программы может быть адресом, чтобы переадресовать запрос к статическому документу. Браузер теперь может использовать этот адрес (URL), который приводит к статическому документу.

    Активные документы

    Для многих приложений необходимо, чтобы программа выполнялась на стороне клиента. Их называют активными документами. Например, надо выполнить программу, которая из полученного изображения создает анимированную графику на экране или взаимодействует с пользователем. А программа анимации и интерактивного обмена находится на стороне клиента, где происходит анимация и интерактивный обмен. Когда браузер запрашивает активный документ, сервер посылает копию документа в форме побайтного кода. Документ затем выполняется на сайте клиента (браузера). Активный документ в сервере накапливается в форме двоичных кодов. Однако он не создается на сервере тем же самым способом, как это делается в случае динамического документа. Хотя активный документ в сервере не выполняется, он сохраняется как двоичный документ, который восстанавливается клиентом. Когда клиент получает этот документ, он может также сохранить его в собственной области памяти. Потом клиент может работать с документом без применения другого запроса.

    Активный документ предается от сервера к клиенту в двоичной форме. Это означает, что он может быть сжат на стороне сервера и расширен на стороне клиента, сберегая и полосу, и время передачи.

    Технология, использующая сценарий для динамического документа

    Проблема CGI-технологии — в неэффективности результата, если часть динамического документа, который должен быть создан, постоянная и не меняется от запроса к запросу. Например, предположим, что мы запросили список запасных частей на определенную марку автомобиля, их характеристики и цены. Хотя характеристики и цены время от времени меняются, наименование, описание, картинки могут оставаться одними и теми же. Если использовать CGI, программа должна каждый раз создавать документ для запроса. Решение этой проблемы заключается в том, чтобы создать файл, содержащий постоянную часть документа, и вложить в исходный код, что имеется переменная часть — характеристики и цены.

    Такие действия могут выполняться с помощью специальных языков, например, Java Script, Active Server Pages (ASP) и других.

    Протокол передачи гипертекстовых файлов (HTTP)

    Протокол передачи гипертекстовых файлов (HTTP — Hypertext Transfer Protocol) используется в основном для доступа данных на Word Wide Web. Этот протокол передает данные в форме простых текстов, гипертекстов, аудио, видео и так далее. Однако он называется протоколом передачи гипертекстов, потому что его эффективность позволяет использовать его в гипертекстовом окружении, где имеются быстрые переходы от одного документа к другому.

    HTTP-функции подобны комбинации FTP и SMTP. Они похожи на FTP, потому что он передает файлы и использует услуги TCP/IP. Однако он гораздо проще, чем FTP, потому что использует только один TCP (хорошо известный порт 80). Нет никакого отдельного соединения управления; между клиентом и сервером передаются только данные.

    HTTP похож на SMTP, потому что данные, передаваемые между клиентом и сервером, выглядят точно так же, как SMTP-сообщения. В дополнение, формат сообщений управляется с помощью MIME-подобного заголовка. Однако HTTP отличается от SMTP способом, которым сообщения посылаются от клиента к серверу и от сервера к клиенту. В отличие от SMTP, сообщения HTTP не предназначены для чтения людьми; они читаются и интерпретируются HTTP-сервером и HTTP-клиентом (браузером). SMTP-сообщения сохраняются и передаются, а HTTP-сообщения доставляются непосредственно.

    Идея HTTP очень проста. Клиент посылает запрос, который выглядит как почтовое сообщение к серверу. Север посылает ответ, который выглядит как почтовый ответ к клиенту. Сообщения запроса и ответа переносят данные в виде формата, подобного MIME.

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

    HTTP-переходы

    HTTP использует услуги TCP, потому что сам HTTP – протокол, не основанный на смене состояния. Клиент инициализирует переход посылкой сообщения запроса. Сервер отвечает посылкой ответа.

    Сообщение запроса

    Сообщение запроса содержит строку запроса, заголовок и иногда "тело" ( рис. 16.7.).

    (рис 16.7) Сообщение запроса и ответа

    Сообщение запроса

    Линейка запроса определяет тип запроса, ресурс (URL) и версию HTTP. Линейка запроса содержит тип запроса, пробел, URL, пробел и версию HTTP.

  • Тип запроса (Request type). В версии HTTP 1.1 определены несколько типов запросов. Типы запроса разделяются по категориям несколькими методами, которые мы обсудим позднее.
  • Унифицированный локатор информационного ресурса (URL — Uniform Resource Locator). Клиент, который хочет иметь доступ к странице, нуждается в адресе, чтобы осуществить доступ к документам, распределенным по всему миру. HTTP пользуется концепцией локаторов. URL — стандарт для определения любого вида информации в Интернете. URL определяет четыре элемента: метод, хост, компьютер, порт и путь.
  • Протокол — это программа клиент-сервер, используемая для извлечения и доставки документа. Имеются много таких протоколов: FTP, HTTP, TELNET. Наиболее общий из них HTTP.

    Хост – компьютер, где находится информация, хотя имя компьютера может быть псевдонимом. Веб-страницы обычно накапливаются в компьютерах, и компьютеры дают псевдонимы именам, которые обычно начинаются с символов "www". Однако это не обязательно, поскольку хост может быть с любым именем, данным компьютеру, который является хостом веб-страницы.

    URL иногда может содержать номер порта сервера. Если порт включен, он должен быть вставлен между хостом и путем и должен быть отделен от хоста двоеточием.

    Путь — имя пути к файлу, где находится информация. Заметим, что путь сам может содержать "слеши" (наклонные черточки), которые в операционной системе UNIX отделяют директории от поддиректориев и файлов.

    Методы

    Поле типа запроса в сообщении запроса определяет несколько видов сообщений, называемых методы. Метод запроса – реальная команда или запрос, с которым клиент выходит к серверу. Мы здесь коротко обсудим цели некоторых методов.

    GET

    Метод GET используют, когда клиент хочет доставить документ от сервера. Адрес документа определяется в URL; это главный метод для доставки документа. Сервер обычно отвечает содержанием документа в "теле" ответного сообщения, если нет ошибки.

    HEAD

    Метод HEAD используется, когда клиент хочет получить некоторую информацию о документе, но не сам документ. Он подобен GET, но ответ от сервера не содержит "тело".

    POST

    Метод POST используется, когда клиент обеспечивает информацией сервер. Например, это может быть нужно для посылки информации ввода к серверу.

    PUT

    Метод PUT используется клиентом, чтобы обеспечить накопление нового или обновленного документа на сервере. Этот документ включает в "тело" запрос и будет сохранен в месте, определенном URL.

    PATCH

    PATCH похож на PUT, за исключением того что запрос содержит только список отличий, которые нужно внести в существующий файл.

    COPY

    Метод COPY используется, чтобы скопировать файл в другое место. Дается место исходного файла в линейке запроса (URL); место пункта назначения дается в заголовке (обсуждается в разделе "Заголовок").

    MOVE

    Метод MOVE используется для переноса файла в другое место. Место файла источника дается в линейке запроса (URL); место пункта назначения дается в заголовке.

    DELETE

    Метод DELETE используется для удаления документа из сервера.

    LINK

    Метод LINK используется для создания ссылки (линка) или ссылок (линков) от одного документа к документу, расположенному в другом месте. Расположение файла дано в линейке запроса (URL); место пункта назначения дано в заголовке.

    UNLINK

    Метод UNLINK используется для удаления ссылок (линков), созданных методом LINK.

    OPTION

    Метод OPTION используется клиентом для запроса сервера о доступности опции.

    Сообщение ответа

    Сообщение ответа содержит линейку состояния, заголовок и иногда "тело" (см. рис. 16.7.).

    Линейка состояния

    Линейка состояния определяет состояние ответного сообщения. Она содержит версию HTTP, пробел, код состояния, пробел, состояние фразы.

  • HTTP-версия. Это поле такое же, как поле линейки запроса.
  • Код состояния (Status code). Поле кода состояния аналогично этим же полям в FTP- и SMTP-протоколах. Оно содержит три цифры. При этом коды в диапазоне 100 — только информационные, коды в диапазоне 200 указывают успешный запрос. Коды в диапазоне 300 переориентируют клиента к другому URL, а коды диапазона 400 указывают на ошибку на стороне клиента. Наконец, коды диапазона 500 указывают на ошибку на стороне сервера. Мы приводим список наиболее общих кодов в таблице 16.2.
  • Фраза состояния. Это поле поясняет код состояния, обмена сообщениями в текстовой форме. Таблица 16.2. приводит такие фразы.
  • Коды состояния
    Код Фраза Описание
    Информационные
    100 Continue (Продолжение) Начальная часть запроса получена и клиент может продолжать свой запрос
    101 Switching (Коммутация) Клиент переключает по запросу клиента протокол, определенный в модернизированном заголовке
    Благоприятный исход
    200 OK Запрос успешен
    201 Created (Создан) Новый URL создан
    202 Accept (Принято) Запрос принят, но он непосредственно не выполняется
    204 No content (Без содержания) Содержание в "теле" отсутствует
    Переадресация
    301 Multiple choices (Многократный выбор) Запрос URL с обращением к более чем одному ресурсу
    302 Moved permanently (Постоянно перемещаемый) Запрос URL больше не используемым сервером
    304 Moved temporary (Временно перемещаемый) Запрос URL временно перемещен
    Ошибка клиента
    400 Bad request (Плохой запрос) Синтаксическая ошибка в запросе
    401 Unauthorized (Неполномочный запрос) Запрос не имеет надлежащих полномочий
    403 Forbidden (Запрещенный) Сервис не существует
    404 Not found (Не найден) Документ не найден
    405 Method not allowed (Метод не разрешен) Метод не поддерживается данным URL
    406 Not acceptable (Недоступен) Формат требования не воспринимается
    Ошибка сервера
    500 Internal server error (Внутренняя ошибка сервера) Есть ошибка, такая как всплеск помех на стороне сервера
    501 Not implemented (Неосуществимо) Затребованное действие не может быть выполнено
    503 Service unviable (Сервис недоступен) Сервис временно недоступен, но может быть затребован в будущем

    Заголовок

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

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

    Линия заголовка принадлежит к одной из четырех категорий: общий заголовок, заголовок запроса, заголовок ответа и объекта. Сообщение запроса может содержать только заголовки: общий, запрос объекта. С другой стороны, ответное сообщение может содержать только заголовки общий, ответа и объекта. Рисунок 16.7. изображает схематически сообщение запроса и сообщение ответа.

    Общий заголовок

    Общий заголовок дает общую информацию о сообщении и может быть представлен и в запросе, и в ответе. Таблица 16.3. перечисляет некоторые заголовки с их описанием.

    Общий заголовок
    Заголовок Описание
    Cache-control (управление) Задает информацию о кэшировании кэш-памятью)
    Connection (Соединение) Показывает, должно ли соединение быть закончено или нет
    Date (Данные) Показывает текущие данные
    Версия MIME Показывает используемую версию MIME
    Upgrade (Обновление) Задает предпочитаемый протокол связи

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

    Заголовок запроса может присутствовать только в сообщении запроса. Он задает конфигурацию клиента и предпочтительный формат документа клиента. Таблица 16.4. содержит список некоторых заголовков запроса и их описания.

    Заголовки запроса
    Заголовок Описание
    Accept (Принято) Показывает массовый формат, который может быть принят клиентом
    Accept-charset (Принятый набор символов) Показывает набор символов, которые могут быть предложены клиенту
    Accept-encoding (Принятое кодирование) Показывает схему кодирования, которая может быть предложена клиенту
    Accept-language (Принятый язык) Показывает язык, который клиент может применить
    Authorization (Полномочия) Показывает, что разрешено клиенту
    From (От) Показывает электронный адрес пользователя
    Host (Хост) Показывает номера порта и хоста клиента
    If-modified-since (Если – модифицирован – к) Посылает документ, если он обновлен к определенной дате
    If-match (Если сравнился) Посылает документ, если только сравнениедает тег
    If-non-match (Если не сравнился) Посылает документ, если только сравнение не дает тег
    If-range (Если диапазон) Посылает порцию документов, которые потеряны
    If-unmodified-since (Если – не модифицирован – к) Посылает документ, если он не изменен к определенной дате
    Referrer (Ссылка) Задает URL присоединяемого документа
    User-agent (Агент пользователя) Идентифицирует программу клиента

    Заголовок ответа

    Заголовок ответа может присутствовать только в сообщении "ответ". Он задает конфигурацию сервера и специальную информацию о запросе. Таблица 16.5. содержит список некоторых заголовков с их описаниями.

    Заголовки ответа
    Заголовок Описание
    Accept-range (Принятый диапазон) Показывает диапазон, запрашиваемый клиентом у сервера
    Age (Возраст) Показывает "возраст" документа
    Public Показывает поддерживаемый список методов
    Retry-after Задает события, после которых сервер становится доступным
    Server Показывает имя сервера и номер версии

    Заголовок объекта

    Заголовок объекта дает информацию о "теле" документа. Хотя он в большинстве случаев представлен в сообщении ответа, некоторые сообщения запроса, такие как POST- или PUT-методы, которые содержат "тело", также используют этот тип заголовка. Таблица 16.6. содержит список некоторых заголовков объекта и их описания.

    Заголовки объекта
    Заголовок Описание
    Allow (Разрешено) Список действительных методов, которые могут быть использованы с URL
    Content-encoding (Перечень кодирования) Заданная схема кодирования
    Content-language (Перечень языков) Заданный язык
    Content-length (Перечень длины) Показывает длину документа
    Content-rang (Перечень диапазонов) Задает диапазон документа
    Content-type (Перечень типов) Задает тип аппаратуры окружения
    Etag (E-тег) Дает тег объекта
    Expires (Истекло) Дает дату и время, когда содержание может измениться
    Last-modified (Последняя модификация) Задает дату и время последнего изменения документа
    Location (месторасположение) Задает местоположение созданного или перемещенного документа

    Примеры

    В этом разделе мы дадим три простых примера запросов и ответных сообщений.

    Пример 1

    В этом примере доставляется документ. Мы используем метод GET, чтобы доставить изображение с путем /usr/bin/image1. Линейка запроса показывает метод ( GET ), URL и HTTP-версию (1.1). Этот заголовок имеет две линейки, которые показывают, что клиент может принять изображение в форматах GIF и JPEG. Запрос не имеет "тела". Ответное сообщение содержит линейку состояния и четыре линейки заголовка. Линейки заголовка определяют дату, сервер, версию MIME и длину документа ( рис. 16.8.).

    (рис 16.8) Пример 1

    Пример 2

    Пример доставки информации о документе. Мы используем метод HEAD для доставки информации о HTML-документе. Линейка запроса показывает метод ( HEAD ), URL и версию HTTP (1.1). Заголовок – это одна линейка, показывающая, что клиент может принять документ в любом формате (непредсказуемое событие). Запрос не имеет "тела". Ответное сообщение содержит линейку состояния и пять линеек заголовка. Линейка запроса определяет дату, сервер, версию MIME, тип документа и длину документа ( рис. 16.9.). Заметим, что сообщение не содержит "тела".

    (рис 16.9) Пример 2

    Пример 3

    В этом примере клиент хочет послать входные данные серверу. Мы используем метод POST. Линейка запроса показывает метод ( POST ), URL и версию HTTP (1.1). Имеется четыре линейки заголовков. Запрос содержит входную информацию в "теле". Ответное сообщение содержит линейку состояния и четыре линейки заголовков. Созданный документ является документом CGI и включает "тело" ( рис. 16.10.).

    Продолжительное соединение в сравнении с непродолжительным

    HTTP-версия 1.0 — непродолжительное соединение, в то время как продолжительное соединение есть по умолчанию в версии 1.1.

    Непродолжительное соединение

    В непродолжительном соединении одно TCP-соединение делается по каждому запросу/ответу.

    (рис 16.10) Пример 3

    Ниже перечислены шаги в этой стратегии.

  • Клиент открывает TCP-соединение и посылает запрос.
  • Сервер посылает ответ и заканчивает соединение.
  • Клиент читает данные, пока не наталкивается на метку конца файла, затем он закрывает соединение. В этой стратегии для N различных картинок в различных файлах соединение должно быть открыто и закрыто N раз. Непродолжительное соединение вызывает перегрузку сервера, потому что сервер нуждается в N различных буферах и требует процедуру медленного старта каждый раз, когда открывает соединение.

    Продолжительное соединение

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

    Сервер-посредник (Proxy server)

    HTTP поддерживается прокси-серверами. Это компьютеры, которые содержат программные средства, предназначенные для защиты локальной и корпоративной сети от несанкционированного доступа или опасных приложений. Proxy(промежуточный)-сервер – это компьютер, который сохраняет копии ответов на прежние запросы. При наличии прокси-сервера клиент HTTP посылает запрос именно к нему. Прокси-сервер проверяет свою кэш-память. Если ответ в кэше не сохранен, прокси-сервер посылает запрос к соответствующему серверу. Входящий ответ посылается к прокси-серверу и запоминается для будущих запросов от клиентов.

    Прокси-сервер уменьшает загрузку исходного сервера, уменьшает нагрузку, улучшает реакцию. Однако чтобы использовать прокси-сервер, клиент должен быть конфигурирован для доступа к proxy вместо целевого сервера.

    Краткие итоги

  • Всемирная паутина (World Wide Web – WWW) – это хранилище информации, размещенной во всем мире и соединенной воедино.
  • Гипертекст и гипермедиа – документы, объединенные один за другим с использованием концепции указателей.
  • Браузеры интерпретируют и отображают веб-документы.
  • Hypertext Transfer Protocol – это усовершенствованная прикладная программа извлечения файлов, которая может предоставить доступ и соединить документы WWW.
  • Веб-документ может быть классифицирован как статический, динамический и активный.
  • Статический документ — это один из тех, содержание которых зафиксировано и накоплено на сервере. Клиент не может изменять этот документ на сервере.
  • Hypertext Markup Language (HTML, русский перевод – язык гипертекстовой разметки) – это язык, используемый для создания статических веб-страниц.
  • Любой браузер может читать инструкции форматирования (теги), вставленные в HTML-документы.
  • Веб-страница имеет заголовок и "тело".
  • Теги обеспечивают структуру документа, определяя название и заголовок, формат текста, управление потоком данных, вставкой рисунков, соединением различных документов вместе, а также определяют исполняемые коды.
  • Динамический веб-документ создает с помощью браузера только запрос на порождаемый документ.
  • Обычный интерфейс шлюза (Common Gateway interface – CGI) – это стандарт для создания и обработки динамических веб-документов.
  • Сервер получает входные данные от браузера с помощью формы.
  • Сервер посылает выходные данные CGI-программы к браузеру.
  • Выходные данные CGI-программы могут быть текстом, графикой, двоичными данными, кодами состояния, инструкциями или адресом файла.
  • Активный документ – это копия программы, извлекаемая клиентом и выполняемая клиентом на сайте.
  • Протокол передачи гипертекстовых файлов (Hypertext Transfer Protocol — HTTP) — главный протокол, используемый для доступа к WWW (World Wide Web).
  • HTTP использует TCP-соединение для передачи файла.
  • HTTP-сообщение похоже по форме на SMTP-сообщение.
  • Сообщение (запрос или ответ) состоит из линейки состояния, заголовка и "тела" (требуется только для некоторых типов сообщений).
  • Линейка запроса состоит из типа запроса URL и номера версии HTTP.
  • Универсальный локатор ресурсов (Uniform resource Locator — URL) состоит из метода, компьютера хоста, необязательно из номера порта, и имени пути к месторасположению информации WWW.
  • Тип запроса или метод – это действующая команда или запрос, исходящий от клиента к серверу.
  • Линейка состояния состоит из номера версии HTTP, кода состояния и фразы состояния.
  • Код состояния транслирует общую информацию, относящуюся к успешным запросам, перенаправлению информации или ошибочной информации.
  • Заголовок транслирует дополнительную информацию между клиентом и сервером.
  • Заголовок состоит из имени заголовка и содержания заголовка.
  • Общий заголовок дает общую информацию о сообщении запроса или ответном сообщении.
  • Заголовок запроса задает конфигурацию клиента и предпочтительный формат документа.
  • Ответный заголовок задает конфигурацию сервера и специальную информацию о запросе.
  • Заголовок объекта обеспечивает информацией о "теле" документа.
  • Версия 1.1 HTTP задает продолжительное соединение.
  • Прокси-сервер сохраняет копии ответов на предыдущие запросы.
  • Задачи и упражнения

  • Покажите роль тегов в следующей строке:
    This is <BR> a line of <BR> HTML
  • Покажите роль тегов в следующей строке:
    This is <BR> <BR> another line of <BR><BR> HTML
  • Покажите роль тегов в следующей строке:
    <H1> DOCUMENT </H2> HTML
    <H1> This is an HTML document </H1>
    <H1> It shows the effect of H-tags </H1>
  • Покажите роль тегов в следующей строке
    <UL>
    <LI> Last Name, First Name, Initial </LI>
    <LI> Street Address, City </LI>
    <LI> Stat, Zip Code </LI>
  • Покажите извлечение документа usr/users/doc/doc1/, используйте по крайней мере два общих заголовка, два заголовка запроса и один заголовок объекта.
  • Покажите сообщение "ответ" по упражнению 5 при успешном запросе
  • Покажите ответ по упражнению 5, если документ перемещен постоянно в /usr/.deads/doc1.
  • Покажите ответ по упражнению 5, если обнаружена синтаксическая ошибка.
  • Покажите ответ по упражнению 5, если клиент при доступе к документу не опознан.
  • Покажите запрос, который запрашивает информацию о документе /bin/users/file/, используйте по крайней мере два общих заголовка и один заголовок запроса.
  • Покажите ответ по упражнению 10.
  • Покажите запрос копии файла, расположенного /bin/usr/bin/file1/ в файл /bin/file1/.
  • Покажите сообщение "ответ" по упражнению 12.
  • Покажите запрос на удаление файла, расположенного /bin/file1/. Клиенту необходимо это сделать, если документ был модифицирован в определенную дату.
  • Покажите сообщение "ответ" по упражнению 14.
  • Дополнительный материал для прохождения тестирования к лекции, Вы можете скачать здесь.

    Вернуться к учебному плану