WebMux — экспериментальный протокол мультиплексирования

При загрузке Web-страницы браузер может устанавливать несколько параллельных соединений с Web-сервером для получения и отображения всгроенных изображений. Параллельные соединения дают возможность браузеру преодолевать ограничения, присущие взаимодействию HTTP с транспортным уровнем. В HTTP сообщения передаются последовательно через сокет, который напрямую связап с базовым TCP-соединением. Наличие нескольких одновременных передач требует от браузера иметь несколько сокетов, что, в свою очередь, требует установки нескольких TCP-соединений с сервером. Один из способов решения этой проблемы — расширить HTTP, чтобы разрешить чередование нескольких сообщений в одном и том же транспортном соединении. Однако это потребует внесения значительных изменений в протокол, а также измеиепий реализаций Web-клиентов, прокси-серверов и Web-серверов. Процесс стандартизации и большая база имеющихся программных компонентов Web делает это решение неприемлемым.

В качестве альтернативного подхода WebMux предлагает отказаться от однозначной связи между сокетами и ТСР-соединениями. , который не требует внесения изменений в HTTP и программные компоненты Web [GN98]. Вместо этого WebMux предоставляет нескольким сокетам прикладного уровня возможность отправлять и принимать данные через одно и то же базовое соединение траиспортного уровня. Данные, записанные в сокет, делятся на один или песколько фрагментов. WebMux делит данные из каждого сокета на фрагменты и передает фрагменты через ТСР-соединеиие. Каждый фрагмент имеет заголовок WebMux с идентификатором сеанса, который дает возможность принимающей стороне ТСР-соедииения направлять данные соответствующему получателю. Заголовок WebMux также содержит различные флаги для открытия и закрытия сеаиса, подобные флагам TCP. Базовое TCP-соединение трактует фрагменты WebMux как обычные данные, подлежащие доставке из одной конечной точки в другую.

Мультиплексирование нескольких сеапсов в одно ТСР-соединеиие сопровождается проблемами, связанными с совместным использованием полосы пропускания и памяти. Отправка большого количества фрагментов в интересах одного сеанса может привести к дискриминации других сеапсов. Чтобы предотвратить эту дискриминацию, отправитель WebMux чередует передачу данных сеапсов по кругу. Хотя порядок пересылки определяет отправитель, базовое TCP-соединение управляет передачей данных с помощью скользящего окна. На принимающей стороне TCP-получатель реконструирует входящие пакеты в упорядоченный поток данных. Получатель WebMux .связывает его с соответствующим сокетом на основе идентификатора сеанса. Однако получатель WebMux должен сохранять фрагмент до того, как принимающее приложение прочитает данные из соответствующего сокета. Если один сеанс занимает весь буфер, другие принимающие сокегы, связанные с тем же TCP-соединением, должны быть заблокированы, ожидая данные.

Чгобы избежать блокирования других сокегов, получатель WebMux выделяет каждому сеансу пространство в памяти. Имея отдельные области памяти, получатель WebMux может считывать и осуществлять буферизацию каждого сеанса независимо. Однако это не решает проблему полностыо. Расположенный на транспорт- пом уровне TCP-получатель гакже имеет ограниченный объем буфера, что является препятствием при передаче данных TCP-отправителем. Один сеапс может занять весь входной буфер TCP, что помешает TCP-отправителю передавать данные в интересах других сеансов. Чтобы решить эту проблему, в WebMux вводятся кредиты, связанные с каждым сеансом. Каждый кредит дает возможность отправителю WebMux передавать определенный объем данных в интересах сеанса . За счет ограничения количества ожидающих обработки кредитов получателем WebMux обеспечивается, что сеапс не будет потреблять слишком много памяти. Схема управления потоками на базе кредитов похожа на использование подтверждений и окна приема в TCP. Однако кредиты ассоциируются с сеансами, тогда как окпо приема ассоциируется с ТСР-соединением.

WebMux решает ряд проблем, связанных с ассоциированием нескольких сеансов прикладного уровня с одним транспортным соединением. Главным преимуществом предлагаемого подхода является то, что WebMux не требует внесения изменений в TCP, HTTP и программные компоненты Web. Кроме того, поддержка мультимедийных сеансов может быть полезна для других протоколов прикладного уровня. Хотя WebMux разрабатывался применительно к HTTP, предлагаемые им идеи не зависят от используемого протокола прикладного уровня. Однако при полноценной реализации WebMux требуется уделить особое внимание совместному использованию сеансами пропускной способности сети и пространства буфера. В случае принятия официального стандарта WebMux должен будет допускать встраивание в основные операционные системы и развертывание на компьютерах по всему Internet. Протокол WebMux был принят в качестве рабочего проекта в конце 1998 г. [GN98] в результате усилий организации HTTP Next Generation (HTTPng) [SJ00J. Однако дальнейшие работы были остановлены, и протокол WebMux не прошел дальнейших этапов стандартизации IETF.

Источник: Web-протоколы. Теория и практика. — M.: ЗАО «Издательство БИНОМ», 2002 г. – 592 c.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100