Код состояния HTTP 101

HTTP


определение

HTTP 101 Switching Protocol(Переключение протокола) Представление кода состояниясерверотвечатьклиентСоглашение об обновлениизапрос на переключение протокола.


Принцип реализации переключения протоколов


  1. Connection: UpgradeДолженConnectionзаголовок установлен на"Upgrade"Требования к обновлению указаны в .Upgrade:
    protocols
    сказалUpgradeОдно или несколько имен протоколов, разделенных запятыми, указанных в заголовке.
  2. Проверьте, поддерживает ли сервер протокол, требуемый клиентом.
  3. - Сервер может отклонить обновление - в этом случае он возвращает нормальный. или принять обновление, и в этом случае он отправляет"101 Switching Protocols"Заголовок, определяющий выбранный протокол с заголовком обновления.


Давайте рассмотрим практический пример:

image.png

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

Этот механизм всегдаклиентинициируется, и сервер может принять или отклонить переключение на новый протокол. Клиент может использовать широко используемый протокол (например, HTTP/1.1) для инициирования запроса, описание запроса должно измениться наHTTP / 2или даже кВеб-сокет.


сценарий веб-сокета

Чтобы реализовать связь WebSocket, клиенту сначала необходимо инициировать обычный HTTP-запрос. То есть создание WebSocket зависит от HTTP. Сообщение запроса может выглядеть так:


GET ws://websocket.example.com/ HTTP/1.1
Host: websocket.example.com
Upgrade: websocket
Connection: Upgrade
Origin: http://example.com
Sec-WebSocket-Key:pAloKxsGSHtpIHrJdWLvzQ==
Sec-WebSocket-Version:13


где поле заголовка HTTPUpgrade: websocketа такжеConnection: UpgradeОчень важно сообщить серверу, что протокол связи будет изменен на протокол WebSocket. После подтверждения вышеуказанного запроса сервер, поддерживающий WebSocket, должен вернуть код состояния как101 Switching Protocolsответ на:


HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: nRu4KAPUPjjWYrnzxDVeqOxCvlM=

где полеSec-WebSocket-Acceptотправляется сервером предыдущему клиентуSec-WebSocket-KeyРезультат после подтверждения и шифрования эквивалентен проверке, чтобы помочь клиенту убедиться, что другая сторона является реальным и доступным сервером WebSocket.

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

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

Весь процесс происходит так:


image.png


Ссылаться на