Мультиплексирование с розетками Беркли

У меня есть реализация веб-сервера HTTP / 1.1, которую я написал на C ++ с использованием сокетов Беркли. Я смотрю на реализацию поддержки HTTP / 2.0 (или SPDY), которая позволяет мультиплексировать запросы и ответы:

Уровень двоичного кадрирования в HTTP / 2.0 обеспечивает полное мультиплексирование запросов и ответов, позволяя клиенту и серверу разбивать HTTP-сообщение на независимые кадры, чередовать их, а затем повторно собирать их на другом конце.

Мой вопрос заключается в следующем; как включить мультиплексирование запросов и ответов типа HTTP / 2.0 (или SPDY) с моей уже существующей программой HTTP / 1.1, которая пишет с использованием API-интерфейса Berkeley Socket API? Возможно, вышеупомянутое мультиплексирование кадров, которое поддерживается HTTP / 2.0 (или SPDY), уже обрабатывается существующими механизмами в стеке TCP / IP, или?

Разъяснение:

Я особенно заинтересован в части мультиплексирования, что использовать одно соединение для параллельной доставки нескольких запросов и ответов , Из спецификаций я не понимаю, как это реализовано в протоколе прикладного уровня? Есть идеи?

3

Решение

Нет, стек TCP не обрабатывает ничего из этого, потому что SPDY не является частью стека TCP / IP, он находится выше TCP, что традиционно считается протоколом приложения. Его контрольные и информационные кадры документированы в проекте спецификации. Вы реализуете мультиплексирование путем реализации протокола. Стек TCP ничего не знает о HTTP или SPDY.

Короче говоря, SPDY состоит из кадров в одном TCP-соединении, которые включают в себя довольно простые заголовки с идентификатором сеанса и длиной кадра, среди прочего. Вы должны реализовать это для мультиплексирования. Вы должны быть в состоянии реализовать все это с помощью стандартного кода сокета с поддержкой SSL / TLS.

Насколько я знаю, это спецификация —

http://www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft2

4

Другие решения