Files
Info/2 курс/Веб-программирование/Общие стандарты и протоколы сети Интернет.md
T
LeterZP 1d8c819656 init
2026-09-17 22:04:07 +03:00

75 lines
8.4 KiB
Markdown

## Содержание
- [Введение](#Введение)
- [Клиент-серверное взаимодействие. Протокол HTTP.](#Клиент-серверное%20взаимодействие.%20Протокол%20HTTP.)
- [HTTP](#HTTP)
- [Структура запроса HTTP](#Структура%20запроса%20HTTP)
- [Структура ответа HTTP](#Структура%20ответа%20HTTP)
- [Методы HTTP](#Методы%20HTTP)
- [Коды состояния](#Коды%20состояния)
- [Заголовки HTTP](#Заголовки%20HTTP)
- [URI, URN и URL](#URI,%20URN%20и%20URL)
- [REST](#REST)
## Введение
В основном все держится на 4 вещах:
- [Hypertext Transfer Protocol (HTTP)](#HTTP) - предназначен для передачи гипертекста между клиентом и сервером
- Hypertext Markup Language (HTML) - язык разметки гипертекста
- Cascade StyleSheets (CSS) - язык описания внешнего вида HTML-документов
- JavaScript - язык для написания динамических сценариев, выполняемых на стороне клиента
## Клиент-серверное взаимодействие. Протокол HTTP.
### HTTP
Сам по себе HTTP - протокол прикладного уровня. В его основе лежит технология "клиент-сервер". Он может использоваться в качестве "транспорта" для других протоколов прикладного уровня. Основной объект манипуляций этого протокола - ресурс, на который указывает [URI](#URI,%20URN%20и%20URL). Обмен сообщениями в этом протоколе идет по схеме "запрос-ответ". Сам по себе протокол не сохраняет состояние (stateless-протокол), поэтому для реализации сессий используется cookies.
#### Структура запроса HTTP
Первая строка запроса HTTP является стартовой, в ней содержится основное описание необходимого действия (команда). При ее составлении через пробел указывают три основные для протокола вещи: [метод](#Методы%20HTTP), [URI](#URI,%20URN%20и%20URL) и версию протокола HTTP (в формате HTTP/Версия).
За первой строкой следует следующий раздел - заголовки. Этот раздел содержит, как ни странно, [заголовки](#Заголовки%20HTTP).
Последним разделом запроса является тело сообщения. Чаще всего в запросе тело остается пустым. В теле сообщения может находится что угодно, что необходимо передать с помощью протокола на другую сторону. Вся информация о теле, необходимая другой стороне, должна быть указана в заголовках.
#### Структура ответа HTTP
Ответ мало чем отличается от [запроса](#Структура%20запроса%20HTTP). Единственным отличием является стартовая строка. Эта строка составляется тем же образом, что и стартовая строка запроса, перечисляя через пробел основную информацию запроса: версию протокола HTTP (в формате HTTP/Версия), [код состояния](#Код%20состояния) и пояснение кода состояния. По сути, в пояснении можно указать что угодно, но лучше придерживаться стандартных шаблонов сообщений.
#### Методы HTTP
Методов HTTP довольно много, поэтому перечислим только используемые чаще всего.
- OPTIONS - определение возможностей сервера
- GET - получение данных с ресурса (запрос содержимого ресурса)
- HEAD - аналог GET, но в ответе не передается (отсутствует) тело
- POST - передача данных ресурсу
- PUT - загрузка содержимого запроса на указанный [URI](#URI,%20URN%20и%20URL)
- DELETE - удаление данных с сервера
#### Коды состояния
Коды состояния в основном состоят из трёх цифр. Все коды состояния делятся на 5 классов, в соответствии с которыми ставится первая цифра кода.
- 1 - Informational - информационный
- 2 - Success - успешно
- 3 - Redirection - перенаправление
- 4 - Client error - ошибка клиента
- 5 - Server error - ошибка сервера
#### Заголовки HTTP
Заголовки используются для передачи определенных значений с помощью протокола. В некотором роде, можно думать о заголовках как о входящих переменных. Все они передаются в формате ключ:значение.
Заголовки делятся на 4 группы:
- General Headers - могут включаться в любое сообщение клиента и сервера
- Request Headers - используется только в запросах клиента
- Response Headers - используется только в запросах сервера
- Entity Headers - сопровождают любую сущность сообщения
### URI, URN и URL
> **URI (Uniform Resource Identifier)** - уникальный идентификатор ресурса - символьная строка, позволяющая идентифицировать ресурс. Строится по форме <схема>:<идентификатор>. Идентификатор определяется в зависимости от схемы.
> **URL (Uniform Resource Locator)** - URI, позволяющий определить местоположение ресурса. Может представлять из себя абсолютную ссылку (https://), относительную ссылку (../task.html) и тп.
> **URN (Uniform Resource Name)** - URI, содержащий единообразное имя ресурса (не указывает на его местонахождение). Строится по способу, подобному URI, но начинается с urn, и только после него идет уже сама схема с идентификатором.
### REST
> **REST (Representation State Transformer)** - передача состояния представления - подход к архитектуре сетевых протоколов, обеспечивающих доступ к информационным ресурсам. Он описывает взаимодействие между клиентом и сервером, а также между front-end и back-end частями.
Основные концепции REST:
- данные должны передаваться в виде небольшого числа стандартных форматов (к примеру, HTML, XML, JSON)
- сетевой протокол должен поддерживать кеширование, не должен зависеть от сетевого слоя, не должен сохранять информацию о состоянии между парами "запрос-ответ"
Существует подход, противоположный REST, который основан на вызове удаленных процедур (RPC - Remote Process Call).