Открыть сервис

RFC 1945

RFC 1945 — это документ (Request for Comments) номер 1945, опубликованный в 1996 году, который определяет спецификацию протокола HTTP/1.0 (Hypertext Transfer Protocol — протокол передачи гипертекста). Данный документ зафиксировал первую широко распространённую версию протокола, лежащего в основе Всемирной паутины (World Wide Web), и стал основой для дальнейшего развития HTTP, включая версию 1.1, описанную в RFC 2068 и RFC 2616. RFC 1945 является историческим стандартом, описывающим базовую модель взаимодействия «клиент-сервер» в вебе.

История и предпосылки создания

Разработка протокола HTTP началась в 1989 году в Европейской организации по ядерным исследованиям (CERN) под руководством Тима Бернерса-Ли. Первоначальная версия, известная как HTTP/0.9, была крайне простой и поддерживала только передачу HTML-документов по запросу клиента. В 1991–1992 годах были внедрены первые расширения, такие как поддержка заголовков (headers) и типов MIME (Multipurpose Internet Mail Extensions), что позволило передавать не только текст, но и изображения, аудио и другие медиафайлы.

К середине 1990-х годов, по мере стремительного роста популярности интернета и появления первых веб-браузеров (NCSA Mosaic, Netscape Navigator), возникла необходимость в стандартизации протокола. Разрозненные реализации HTTP/0.9 и ранних версий HTTP/1.0 приводили к проблемам совместимости. В 1995 году группа инженеров, включая Роя Филдинга (Roy Fielding) и Хенрика Фристюка Нильсена (Henrik Frystyk Nielsen), подготовила проект спецификации, который после обсуждения и доработки был опубликован в мае 1996 года как RFC 1945. Этот документ не вводил принципиально новых возможностей, а систематизировал и уточнял уже существовавшую на тот момент практику использования протокола.

Основные положения и структура RFC 1945

RFC 1945 описывает протокол прикладного уровня, работающий поверх TCP/IP (обычно порт 80). Документ состоит из нескольких разделов, определяющих синтаксис сообщений, методы запросов, коды ответов, формат заголовков и правила взаимодействия.

Модель взаимодействия

Протокол HTTP/1.0, согласно RFC 1945, основан на модели «запрос-ответ» (request-response). Клиент (например, веб-браузер) устанавливает TCP-соединение с сервером, отправляет запрос, сервер обрабатывает его и возвращает ответ. Ключевой особенностью HTTP/1.0 является то, что после отправки ответа сервер немедленно закрывает TCP-соединение. Это означает, что для загрузки каждого элемента веб-страницы (HTML-файла, изображения, стилей) требуется установка нового соединения, что создаёт значительные накладные расходы.

Методы запросов

RFC 1945 определяет три основных метода запроса:

  • GET: Запрос на получение ресурса, указанного в URI (Uniform Resource Identifier). Это основной метод, используемый для загрузки веб-страниц и файлов. GET-запрос не должен изменять состояние сервера (идемпотентен).
  • HEAD: Аналогичен GET, но сервер возвращает только заголовки ответа без тела сообщения. Используется для проверки существования ресурса, получения метаданных (например, даты последнего изменения) или определения размера файла.
  • POST: Запрос на отправку данных на сервер для обработки (например, заполнение формы, загрузка файла). В отличие от GET, POST-запрос может изменять состояние сервера и имеет тело сообщения.

Коды состояния ответов

RFC 1945 вводит базовую классификацию кодов состояния, разделённых на три класса:

  • 1xx (Informational — Информационные): В RFC 1945 не определены, но зарезервированы для будущего использования.
  • 2xx (Success — Успех): Запрос успешно получен, понят и принят. Основной код — 200 OK.
  • 3xx (Redirection — Перенаправление): Для завершения запроса клиенту необходимо предпринять дополнительные действия. Включает коды 301 Moved Permanently (ресурс перемещён навсегда) и 302 Found (ресурс временно находится по другому адресу).
  • 4xx (Client Error — Ошибка клиента): Запрос содержит синтаксическую ошибку или не может быть выполнен. Наиболее известные коды: 400 Bad Request, 401 Unauthorized (требуется аутентификация), 403 Forbidden (доступ запрещён), 404 Not Found (ресурс не найден).
  • 5xx (Server Error — Ошибка сервера): Сервер не смог выполнить корректный запрос. Пример: 500 Internal Server Error.

Заголовки сообщений

RFC 1945 определяет несколько обязательных и необязательных заголовков, которые передаются как в запросах, так и в ответах. Ключевые заголовки включают:

  • Content-Type: Указывает тип передаваемого контента (например, text/html, image/jpeg).
  • Content-Length: Размер тела сообщения в байтах.
  • Last-Modified: Дата и время последнего изменения ресурса.
  • Location: Используется в ответах 3xx для указания нового URI ресурса.
  • User-Agent: Строка, идентифицирующая клиентское приложение (браузер).
  • Authorization: Передаёт учётные данные для аутентификации (базовая аутентификация HTTP).

Недостатки и ограничения HTTP/1.0

Несмотря на свою историческую роль, HTTP/1.0, описанный в RFC 1945, имел ряд существенных ограничений, которые были устранены в последующей версии HTTP/1.1:

  • Отсутствие постоянных соединений: Как уже упоминалось, каждое TCP-соединение закрывалось после одного запроса-ответа. Это приводило к высокой загрузке сети и задержкам при загрузке страниц с множеством элементов.
  • Отсутствие поддержки виртуальных хостов: HTTP/1.0 не требовал передачи имени хоста (Host) в запросе. Это делало невозможным размещение нескольких веб-сайтов на одном IP-адресе, что было неэффективно.
  • Отсутствие кэширования: RFC 1945 не определял механизмов управления кэшированием, таких как заголовки Cache-Control или Expires (последний был добавлен позже, но не был обязательным). Это приводило к неоптимальному использованию кэша браузера и прокси-серверов.
  • Ограниченная поддержка контентного согласования: Механизмы определения предпочтительного формата ресурса (например, языка или сжатия) были слабо развиты.

Значение и влияние

RFC 1945 сыграл ключевую роль в стандартизации раннего веба. Он предоставил чёткую и однозначную спецификацию, которая позволила разработчикам браузеров и серверов создавать совместимые продукты. Несмотря на то, что HTTP/1.0 был быстро вытеснен более совершенным HTTP/1.1 (RFC 2068, 1997 год), его основные принципы — методы GET, POST, HEAD, коды состояния 200, 404, 500, заголовки Content-Type и Content-Length — остаются фундаментом всех современных версий HTTP (вплоть до HTTP/2 и HTTP/3). RFC 1945 является историческим документом, который зафиксировал момент перехода веба от экспериментальной сети к глобальной информационной системе.

Источники

  1. RFC 1945 — Hypertext Transfer Protocol — HTTP/1.0 (1996).
  2. RFC 2068 — Hypertext Transfer Protocol — HTTP/1.1 (1997).
  3. Berners-Lee, T., Fischetti, M. (1999). Weaving the Web: The Original Design and Ultimate Destiny of the World Wide Web by Its Inventor. HarperSanFrancisco.
  4. Fielding, R. T., et al. (1999). Hypertext Transfer Protocol — HTTP/1.1. RFC 2616.
  5. Gourley, D., Totty, B. (2002). HTTP: The Definitive Guide. O'Reilly Media.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →