Постоянное соединение в HTTP | Курс "Компьютерные сети"

Постоянное соединение в HTTP | Курс "Компьютерные сети"

Протокол HTTP: Постоянное Соединение

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

Эволюция протокола HTTP

  • Протокол HTTP 1.0 работал в режиме запрос-ответ, где клиент запрашивает веб-страницу у сервера.
  • Современные веб-страницы содержат множество ресурсов (картинки, видео, скрипты), требующих загрузки с сервера.
  • Постоянное соединение позволяет использовать одно TCP соединение для загрузки всех ресурсов на странице без повторного установления связи.

Преимущества постоянного соединения

  • Постоянное соединение (HTTP Persistent Connection или Keep Alive) ускоряет загрузку страниц за счет избежания повторного установления TCP соединения.
  • Использование постоянного соединения позволяет эффективно регулировать скорость передачи данных и избежать низкой скорости при каждом новом подключении.

Заголовок Connection Keep Alive

Обзор раздела: Рассмотрим механизм использования заголовка Connection Keep Alive для поддержания постоянного соединения.

Заголовок Connection Keep Alive

  • В HTTP 1.0 использование заголовка Connection Keep не гарантирует оставление соединения открытым, так как это не является стандартной частью протокола.
  • Клиент может добавить заголовок Connection Keep Alive к запросу для запросить сервер оставить соединение открытым, что облегчает последующую загрузку ресурсов.

Оптимизация передачи данных: HTTP Pipelining

Обзор раздела: Рассмотрим технику http pipelining для оптимизации передачи данных и уменьшения нагрузки на сервер.

HTTP Pipelining

Ресурсы и HTTP соединения

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

Ресурсы и порядок передачи

  • Ресурсы должны передаваться в том же порядке, что и запросы.
  • Проблема возникает, если возникли проблемы с загрузкой одного ресурса - другие ресурсы нельзя передавать.

Увеличение скорости загрузки

  • Конвейерная обработка на практике используется редко; увеличение скорости загрузки можно достичь через использование нескольких HTTP соединений.
  • Клиент может открыть несколько соединений с сервером для параллельной загрузки различных ресурсов (стилевого файла, Ява скрипта, картинок).

Постоянные HTTP соединения

  • Постоянное соединение HTTP позволяет использовать одно TCP соединение для загрузки нескольких ресурсов, сокращая время на установку TCP соединения.
  • Стандарт HTTP 1.1 поддерживает постоянные соединения по умолчанию без использования дополнительных заголовков.

Заключение

Обзор раздела: В заключении обсуждаются основные преимущества постоянных HTTP соединений и изменения в стандарте HTTP 1.1.

Основные моменты

  • Постоянное TCP соединение позволяет экономить время на установку новых соединений при каждой загрузке ресурса.
Video description

Постоянное соединение в протоколе HTTP. Лекции по курсу "Компьютерные сети" - https://goo.gl/0aIOuf Страница курса - http://www.asozykin.ru/courses/networks_online Постоянное соединение HTTP (HTTP keep-alive, HTTP persistent connection) - использование одного TCP-соединения для загрузки нескольких ресурсов Преимущества постоянного соединения: - Сокращение накладных расходов на установку TCP-соединения. - Нет необходимости каждый раз начинать передачу данных с маленьким размером окна TCP (медленный старт). В стандарте HTTP 1.0 возможности использовать постоянное соединение нет. После публикации стандарта HTTP 1.0 был предложен заголовок "Connection: keep-alive". Пример использования заголовка "Connection: keep-alive": HTTP-запрос: GET /courses/networks HTTP/1.0 Host: www.asozykin.ru Connection: keep-alive HTTP-ответ: HTTP/1.0 200 OK Server: nginx Content-Type: text/html; charset=UTF-8 Content-Length: 5161 Connection: keep-alive В стандарте HTTP 1.1 по умолчанию все соединения постоянные. Технология конвейерной обработки HTTP (pipelining) - отправка сразу нескольких HTTP запросов через постоянное соединение не дожидаясь ответа. Сервер также передает сразу несколько запрошенных ресурсов. Для ускорения загрузки Web-страниц браузеры открывают сразу несколько соединений с Web-сервером. Каждое такое соединение может быть постоянным и использовать конвейерную обработку. Лекция "Протокол HTTP" - https://youtu.be/RlccXUx4LVw Лекция "Протокол TCP" - https://youtu.be/CKUOb4htnB4 Лекция "Протокол TCP: скользящее окно" - https://youtu.be/hd6QNXK5rPk Лекция "Протокол TCP: соединение" - https://youtu.be/7DitlqcesKI Лекция "Протокол TCP: управление перегрузкой" - https://youtu.be/lGUPQjvSMeo Практические занятия по курсу "Компьютерные сети" - https://goo.gl/YP3l83 Мой канал с краткими и понятными объяснениями сложных тем в ИТ и компьютерных науках: https://goo.gl/kW93MA