
190
Часть
III. Web-протоколы
Введение терминологии MIME затруднило разделение ролей нолей заголовка,
используемых в различных контекстах, например, при передаче от клиента к серве-
ру или наоборот. Набор нолей HTTP-заголовка стал трактоваться, как произволь-
ный набор строк ASCII, который может игнорироваться Web-комнонентами, если
последние их не понимают. HTTP-заголовки, как мы увидим в разделе 6.2.3 и
в главе 7 (раздел 7.2.2), используются как для предоставления метаданных, так и
для модификации поведе1Н4я и интерпретации методов HTTP.
HTTP и ПРОТОКОЛЫ ARCHIE, GOPHER И WAIS
На разработку HTTP оказали влияние протоколы, которые были популярны во
время создания Web. В главе 1 (раздел
1.1.1)
обсуждалась роль, которую сыграли
системы Archie, Gopher и WAIS в эволюции Web в целом. Различные аспекты, от-
носящиеся к протоколам таких систем, повлияли на принципы, положенные в ос-
нову HTTP. В частности, в Gopher [AML^93] имелся протокол клиент-сервер, не
сохраняющий состояние и схожий с тем, который был реализован в HTTP. Все
серверы используют фиксированные ТСР-норты: 70 в Gopher, 210 в WAIS и 80
в HTTP. Идея типа документа в зачаточном состоянии использовалась в Gopher. В
HTTP понятие типа содержания было значительно расширено.
Протокол Prospero [NA93J, который создал условия для единообразного обра-
щения к множеству файлов в Internet, был применен в Archie. Prospero отличался
главным образом своей распределенной файловой системой, которая давала воз-
можность пользователям создавать собственные представления наборов файлов,
расположенных в любой точке Internet. Prospero был достаточно простым в смысле
разделения доступа к да1Н1ЫМ и интерпретации да1Н1ых. Однако он не имел специ-
ального протокола для извлечения файлов, для этого в системе использовались
другие протоколы, такие как FTP и Gopher. Сам Prospero использовал протокол
и DP и дополнительный уровень для обеспечения надежности передачи данных
гюверх UDP. В противоположность этому, HTTP, Gopher и WAIS обычно исполь-
зуют TCP. В Prospero, в отличие от Gopher, не предусмотрены различные уровни
аутентификации. В последних версиях Archie'планировалось использовать URI.
Главным назначением протокола Gopher было удаленная выборка документов.
Основным различием между Gopher и HTTP является использование гипертекста
в HTTP, в Gopher использовались текстовые файлы и меню. HTTP трактует меню
и текстовые файлы как особый вид гипертекста [BL92a]. Было бы неправильно
сравнивать Gopher с более поздними версиями HTTP, поскольку протокол Gopher
не был подвержен значительным усовершенствованиям с того времени, как Web
стала доминировать. Хотя использование виртуальных каталогов давало возмож-
ность клиентам Gopher кэшировать последние извлеченные ресурсы, в протоколе
Gopher отсутствовал какой-либо механизм для идентификации несоответствий ме-
жду кэшированными элементами и текущим содержанием. Кэширование выполня-
лось на уровне приложений, вне протокола Gopher. Протокол Gopher был специ-
ально разработан, чтобы воспользоваться рштеллектуальными возможгюстями сер-
веров, а не реализовывать их в протоколе. Необходимость предоставления более
широкого набора сервисов требовало усовершенствования сервера без внесения из-
менений в протокол. Хотя при этом протокол является гораздо более нростььм, чем
HTTP, различные реализации серверов могут вести себя по-разному. Gopher опре-
деляет набор символов, указывающих, является ли ресурс, к которому осуществля-
ется доступ, текстовым файлом, каталогом, двоичным файлом и т.д. Выбор одного
символа для идентификации тина ресурса естественно ограничивает количество
различных типов, которые могут быть представлены. HTTP в дальнейшем перешел