【 ➰DouyanzhengyanのСетевой протокол Sister Flower‍‍️➰】протокол http VS протокол веб-сокета

Сетевой протокол

http-протокол

Введение в http

  • http

http (протокол передачи гипертекста), «Протокол передачи гипертекста».

  • Гипертекст

Содержит текст, отмеченный гиперссылками и различными мультимедийными элементами. Распространенный гипертекстовый формат html (Hypertext Markup Language).

  • http-протокол

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

Как работает http

  • модель запрос/ответ

пользовательские кликиПосле www.baidu.com/index.html…

  1. Анализируйте ссылки
  2. Браузер запрашивает DNS для анализа IP-адреса www.baidu.com.
  3. dns возвращает проанализированный 112.80.248.75 в браузер
  4. Браузер устанавливает TCP-соединение с сервером
  5. Браузер запрашивает сервер: GET /index.html
  6. Сервер отвечает браузеру: содержимое index.html
  7. освободить TCP-соединение
  8. Браузер анализирует элемент html и отображает его

Короче:Построить цепочку -> Запрос -> Ответ -> Отключить

  • Способ подключения
  1. Непостоянное соединение: браузер создает новое соединение для каждого запроса, и когда ответ завершен, соединение разрывается.
  2. Постоянное соединение: в соединении можно сделать несколько запросов и ответов. После отправки ответа сервер не разрывает соединение сразу и может продолжать его использовать.
  • безгражданство

Сам протокол http не сохраняет статус связи отправленных запросов и ответов.

Когда один и тот же клиент (браузер) обращается к одному и тому же веб-серверу во второй раз, сервер не может знать, обращался ли клиент к нему раньше.

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

Обычно файлы cookie или другие параметры (токены) используются для определения источника.

путь развития

  • http/1.0

На одно TCP-соединение может быть отправлен только один запрос. После отправки данных соединение закрывается.Если вы хотите запросить другие ресурсы, необходимо создать новое соединение. Нестандартное соединение: keep-alive

  • http/1.1
  1. Постоянное соединение: TCP-соединение по умолчанию не закрыто и может использоваться без объявления Connection:keep-alive.
  2. Конвейер: в одном TCP-соединении клиент может отправлять несколько запросов одновременно. Это еще больше повышает эффективность протокола http.
  3. Поле (длина содержимого): TCP-соединение теперь может передавать несколько ответов, и должен быть механизм, позволяющий различать, к какому ответу принадлежит пакет. Это роль поля Content-Length, объявляющего длину данных этого ответа.
  4. Кодирование групповой передачи

структура сообщения http (структура сообщения запрос/ответ)

Как сообщение запроса, так и сообщение ответа состоят из следующих четырех частей:

  1. строка запроса/строка ответа
  2. заголовок запроса/заголовок ответа
  3. пустая строка
  4. .message body (тело запроса/тело ответа)

метод запроса http-сообщения

метод значение
GET запрос на чтение
POST запрос на добавление
PUT место хранения
DELETE Удалить
HEAD заголовок запроса
TRACE Для тестирования попросите сервер переработать запрос
CONNECTION для прокси-сервера
OPTION конкретные параметры запроса

код состояния http-сообщения

Код состояния в ответном сообщении: Указывает, удовлетворен ли конкретный запрос, если нет, указывается причина.

код состояния значение Пример
1xx информация об уведомлении 100: сервер обрабатывает запрос клиента.
2xx успех 200: запрос выполнен успешно
3xx перенаправить 301: перенаправление
4xx ошибка клиента 403: Запрещенная страница, 404: Не найдено
5xx Ошибка сервера внутренняя ошибка сервера 500

короткая доска протокола http

  • модель запрос/ответ

Модель запроса/ответа: связь может быть инициирована только клиентом, и сервер не может активно отправлять сообщения клиенту.

клиентсерверпроситьоткликклиентсервер
  • Технология опроса тура

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

клиентСерверConnection OpenReturn data.Connection CloseintervalConnection OpenReturn data.Connection CloseintervalConnection OpenReturn data.Connection CloseклиентСервер
  • длинный механизм опроса

Механизм длинного опроса http означает, что после того, как сервер получит запрос, если есть данные, он немедленно ответит на запрос, если нет данных, он будет оставаться в течение определенного периода времени.В течение этого времени, если данные запрошены при поступлении сервера (выполнен запрос данных и т. пуст, он снова отправит тот же http-запрос на сервер.

клиентСерверConnection openwaiting(event trigger)Return data.Connection close.Connection openwaiting(event trigger)Return data.Connection close.клиентСервер

Долгий опрос — это усовершенствование и усовершенствование синхронизированного опроса для уменьшения недействительной сетевой передачи.

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

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

  • Потоковая технология http streaming

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

клиентСерверConnection OpenReturn dataсобытие (триггер)Return dataсобытие (триггер)Return dataсобытие (триггер)Return data.Connectio closeсобытие закрытия (триггер) или тайм-аутConnection CloseклиентСервер

У этого механизма есть некоторые проблемы с пользовательским интерфейсом, и для улучшения пользовательского опыта необходимо разработать разные решения для разных браузеров; кроме того, в случае высокой параллелизма этот механизм является большим испытанием для аппаратных ресурсов сервера.

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

протокол веб-сокета

процесс работы

  • Клиент инициирует http-запрос

Инициируйте запрос (добавьте «upgrade: websocket» в заголовок) и дождитесь ответа сервера.

  • ответ сервера http

После ответа сервера устанавливается TCP-канал.

  • передача данных по tcp

Двусторонняя передача данных, и клиент, и сервер могут инициировать запросы.

  • продлится до закрытия

Это соединение будет сохраняться до тех пор, пока клиентская или серверная сторона не закроет соединение.

клиентСерверOpening HandshakeHandshake RequestHandshake ResponseПередача данных (может быть инициирована в обоих направлениях)Data FrameData FrameЗаключительное рукопожатие (может быть инициировано в обоих направлениях)Closing Handshake RequestClosing Handshake ResponseклиентСервер

Базовые концепты

  • websocket — это протокол полнодуплексной связи, предоставляемый HTML5 для одного TCP-соединения;
  • websocket api является стандартным для w3c
  • Протокол прикладного уровня на основе tcp
  • Протокол http используется при установлении соединения
  • В API веб-сокета клиенту и серверу требуется только действие рукопожатия, и между клиентом и сервером может быть установлен быстрый канал, и данные могут передаваться между ними (что может быть инициировано двусторонней инициативой)
Иерархия протокол
прикладной уровень HTTP,websocket,DNS,FTP,TELNET,SMTP
транспортный уровень TCP,UDP
Сетевой уровень IP,ICMP
связующий слой ARP,RARP

Функции

  • Он имеет хорошую совместимость с протоколом http. Порты по умолчанию также 80 и 443, а протокол http используется на этапе рукопожатия. Таким образом, его нелегко заблокировать во время рукопожатия, и он может проходить через различные прокси-серверы http;
  • Может отправлять текстовые или двоичные данные;
  • Нет ограничения на одно и то же происхождение, клиент может общаться с любым сервером;
  • Формат данных относительно легкий, производительность невелика, а эффективность связи высока;

интерфейс программирования

  • подключать и отключать
  • отправлять данные и получать данные
  • обрабатывать ошибки

Сценарии применения

  • чат для обмена мгновенными сообщениями
  • многопользовательская игра
  • Онлайн-совместное рисование, документация, редактирование
  • Вытягивание и отправка потоков данных в реальном времени
  • спорт, игры, акции

Сравнение различий

веб-сокет, http, tcp

  • websocket и http — это протоколы прикладного уровня, они оба передают данные по протоколу tcp;
  • websocket — полнодуплексный протокол связи, http — односторонний;
  • Для websocket он должен опираться на протокол http для завершения рукопожатия, после успешного рукопожатия данные передаются напрямую из tcp-канала, и последующий процесс не имеет никакого отношения к http;

чат для обмена мгновенными сообщениями

  • многопользовательская игра
  • Онлайн-совместное рисование, документация, редактирование
  • Вытягивание и отправка потоков данных в реальном времени
  • спорт, игры, акции

Волна ПК, сравнение различий

веб-сокет, http, tcp

  • websocket и http — это протоколы прикладного уровня, они оба передают данные по протоколу tcp;
  • websocket — полнодуплексный протокол связи, http — односторонний;
  • Для websocket он должен опираться на протокол http для завершения рукопожатия, после успешного рукопожатия данные передаются напрямую из tcp-канала, и последующий процесс не имеет никакого отношения к http;