Двоичный код, вероятно, сбивает с толку термин - в конечном итоге все в двоичном виде в компьютерах!
HTTP / 2 имеет высоко структурированный формат, где сообщения HTTP форматируются в пакеты (называемые кадрами) и где каждый кадрназначенный потоку. Фреймы HTTP / 2 имеют определенный формат , включая длину, объявленную в начале каждого кадра, и различные другие поля в заголовке кадра. Во многом это похоже на пакет TCP. Чтение кадра HTTP / 2 может следовать определенному процессу (первые 24 бита - это длина этого пакета, затем 8 битов, которые определяют тип кадра ... и т. Д.). После заголовка кадра следует полезная нагрузка (например, заголовки HTTP или полезная нагрузка тела), и они также будут в определенном заранее известном формате. Сообщение HTTP / 2 может быть отправлено в одном или нескольких кадрах.
В отличие от этого HTTP / 1.1 - это неструктурированный формат, состоящий из строк текста в кодировке ASCII - так что да, в конечном итоге он передается как двоичный, но этов основном поток символов, а не специально разбитый на отдельные части / кадры (кроме строк). Сообщения HTTP / 1.1 (или, по крайней мере, HTTP-запрос и HTTP-заголовки) анализируются путем чтения символов по одному за раз, пока не будет достигнут символ новой строки. Это немного грязно, так как вы не знаете заранее, какова длина каждой строки, поэтому вы должны обрабатывать ее символ за символом. В HTTP / 1.1 длина тела HTTP обрабатывается немного по-другому, как это обычно известно заранее, поскольку HTTP-заголовок длины содержимого будет определять это. Сообщение HTTP / 1.1 должно быть отправлено полностью как один непрерывный поток данных, и соединение не может использоваться ни для чего другого, кроме передачи этого сообщения до его завершения.
Преимущество, которое приносит HTTP / 2, заключается в том, чточто, упаковывая сообщения в определенные кадры, мы можем смешивать сообщения: вот немного запроса 1, вот немного запроса 2, вот еще немного запроса 1 ... и т. д. В HTTP / 1.1 это невозможно в качестве HTTPсообщение не упаковано в пакеты / кадры, помеченные идентификатором того, к какому запросу он относится.
У меня есть диаграмма здесь и анимированная версия здесь , котораяпомогите осмыслить это лучше.