http-протокол
Введение в http
- http
http (протокол передачи гипертекста), «Протокол передачи гипертекста».
- Гипертекст
Содержит текст, отмеченный гиперссылками и различными мультимедийными элементами. Распространенный гипертекстовый формат html (Hypertext Markup Language).
- http-протокол
Определяет, как браузер отправляет запросы на веб-сервер и как веб-сервер отвечает браузеру. Короче говоря, это правило передачи данных между клиентской и серверной сторонами.
Как работает http
- модель запрос/ответ
пользовательские кликиПосле www.baidu.com/index.html…
- Анализируйте ссылки
- Браузер запрашивает DNS для анализа IP-адреса www.baidu.com.
- dns возвращает проанализированный 112.80.248.75 в браузер
- Браузер устанавливает TCP-соединение с сервером
- Браузер запрашивает сервер: GET /index.html
- Сервер отвечает браузеру: содержимое index.html
- освободить TCP-соединение
- Браузер анализирует элемент html и отображает его
Короче:Построить цепочку -> Запрос -> Ответ -> Отключить
- Способ подключения
- Непостоянное соединение: браузер создает новое соединение для каждого запроса, и когда ответ завершен, соединение разрывается.
- Постоянное соединение: в соединении можно сделать несколько запросов и ответов. После отправки ответа сервер не разрывает соединение сразу и может продолжать его использовать.
- безгражданство
Сам протокол http не сохраняет статус связи отправленных запросов и ответов.
Когда один и тот же клиент (браузер) обращается к одному и тому же веб-серверу во второй раз, сервер не может знать, обращался ли клиент к нему раньше.
Безгражданство обеспечивает простоту протокола http, что позволяет быстро обрабатывать большое количество транзакций и повышать эффективность.
Обычно файлы cookie или другие параметры (токены) используются для определения источника.
путь развития
- http/1.0
На одно TCP-соединение может быть отправлен только один запрос. После отправки данных соединение закрывается.Если вы хотите запросить другие ресурсы, необходимо создать новое соединение. Нестандартное соединение: keep-alive
- http/1.1
- Постоянное соединение: TCP-соединение по умолчанию не закрыто и может использоваться без объявления Connection:keep-alive.
- Конвейер: в одном TCP-соединении клиент может отправлять несколько запросов одновременно. Это еще больше повышает эффективность протокола http.
- Поле (длина содержимого): TCP-соединение теперь может передавать несколько ответов, и должен быть механизм, позволяющий различать, к какому ответу принадлежит пакет. Это роль поля Content-Length, объявляющего длину данных этого ответа.
- Кодирование групповой передачи
структура сообщения http (структура сообщения запрос/ответ)
Как сообщение запроса, так и сообщение ответа состоят из следующих четырех частей:
- строка запроса/строка ответа
- заголовок запроса/заголовок ответа
- пустая строка
- .message body (тело запроса/тело ответа)
метод запроса http-сообщения
метод | значение |
---|---|
GET | запрос на чтение |
POST | запрос на добавление |
PUT | место хранения |
DELETE | Удалить |
HEAD | заголовок запроса |
TRACE | Для тестирования попросите сервер переработать запрос |
CONNECTION | для прокси-сервера |
OPTION | конкретные параметры запроса |
код состояния http-сообщения
Код состояния в ответном сообщении: Указывает, удовлетворен ли конкретный запрос, если нет, указывается причина.
код состояния | значение | Пример |
---|---|---|
1xx | информация об уведомлении | 100: сервер обрабатывает запрос клиента. |
2xx | успех | 200: запрос выполнен успешно |
3xx | перенаправить | 301: перенаправление |
4xx | ошибка клиента | 403: Запрещенная страница, 404: Не найдено |
5xx | Ошибка сервера | внутренняя ошибка сервера 500 |
короткая доска протокола http
- модель запрос/ответ
Модель запроса/ответа: связь может быть инициирована только клиентом, и сервер не может активно отправлять сообщения клиенту.
- Технология опроса тура
Клиент отправляет запросы на сервер через определенные промежутки времени и поддерживает синхронизацию между клиентом и сервером посредством частых запросов. На самом деле большое количество запросов по времени недействительны, т.к. данные сервера не обновляются, и соответственно много пропускной способности и других ресурсов тратится впустую.
- длинный механизм опроса
Механизм длинного опроса http означает, что после того, как сервер получит запрос, если есть данные, он немедленно ответит на запрос, если нет данных, он будет оставаться в течение определенного периода времени.В течение этого времени, если данные запрошены при поступлении сервера (выполнен запрос данных и т. пуст, он снова отправит тот же http-запрос на сервер.
Долгий опрос — это усовершенствование и усовершенствование синхронизированного опроса для уменьшения недействительной сетевой передачи.
Если на сервере нет обновлений данных, соединение будет сохраняться в течение определенного периода времени, пока не изменятся данные или состояние или пока не истечет период времени.Этот механизм используется для уменьшения недопустимых взаимодействий между клиентом и сервером.
Однако с этим механизмом есть проблема: когда клиент инициирует запрос к серверу с фиксированной частотой, данные сервера могут не обновляться, что приведет к множеству недействительных сетевых передач. В то же время он может быть отложен на определенный период времени.
- Потоковая технология http streaming
Когда клиент отправляет запрос на обновление данных на сервер, сервер будет держать поток данных ответа открытым для запроса и отправлять его клиенту в режиме реального времени, пока есть обновление данных.
У этого механизма есть некоторые проблемы с пользовательским интерфейсом, и для улучшения пользовательского опыта необходимо разработать разные решения для разных браузеров; кроме того, в случае высокой параллелизма этот механизм является большим испытанием для аппаратных ресурсов сервера.
- Подводя итог, вышеперечисленные решения не являются реальными в реальном времени, а используют только метод ajax для имитации эффектов в реальном времени. Каждый HTTP-запрос или ответ содержит заполненную информацию заголовка.Повторная отправка недействительных запросов требует большой пропускной способности и аппаратных ресурсов, и это решение не является идеальным.
протокол веб-сокета
процесс работы
- Клиент инициирует http-запрос
Инициируйте запрос (добавьте «upgrade: websocket» в заголовок) и дождитесь ответа сервера.
- ответ сервера http
После ответа сервера устанавливается TCP-канал.
- передача данных по tcp
Двусторонняя передача данных, и клиент, и сервер могут инициировать запросы.
- продлится до закрытия
Это соединение будет сохраняться до тех пор, пока клиентская или серверная сторона не закроет соединение.
Базовые концепты
- 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;