Причины использования параллельных соединений

У Web-клиента есть несколько причин создавать несколько соединений одновременно с одинм и тем же сервером:

•          Параллельная загрузка встроенных изображений. Браузер Обычно устанавливает параллельные соединения с сервером, чтобы одновременно загружать несколько встроенных изображений. Первые несколько байтов файла с изображением Обычно позволяют получить информацию о размерах изображения. Это позволяет браузеру иачать отображать изображение до того, как оно полностью загрузится. Формат GIF поддерживает прогрессивную или чересстрочную развертку, последняя позволяет браузеру отображать все изображение с постепенным улучшением качества в процессе загрузки с сервера. Пользователь может предпочесть увидеть сразу нескольких встроенных изображений с пизким качеством, чем одно изображение с высоким качеством, что делает параллельную загрузку встроенных изображений привлекательной альтернативой их последовательной загрузке. Параллельные соединения также используются, когда пользователь открыл несколько окон браузера одновременно.

•          Прокси-сервер, действующий от лица нескольких клиентов. Прокси-сервер может обрабатывать запросы нескольких клиентов, одновременно запрашивающих ресурсы с одного и того же Web-сервера. Прокси-сервер мог бы послать все запросы по одному TCP-соединению. Это позволило бы сэкономить на создании соединений за счет невозможности распараллелить трафик нескольких клиентов. Предположим, что пользователь А и пользователь В настроили свои браузеры так, чтобы те подсоединялись к одному и тому же прокси-серверу. Теперь предположим, что пользователь В запросил 100-байтпую HTML-страницу сразу после того, как пользователь А запросил 100-мегабайт- пый файл с того же сервера. Если прокси-сервер пошлет оба запроса по одному и тому же (долговременному) соединению, пользователю В придется ждать окончания пересылки 100-мегабайтного файла, чтобы получить свой малепький HTML-файл. Установка двух параллельных соединений с сервером позволит прокси-серверу загружать эти файлы параллельно, что приведет к пампого меньшему времени ответа клиенту В.

•          Увеличение общей пропускной способности. Клиент может добиться большей пропускной способности, устанавливая несколько ТСР-соедипепий с сервером. Предположим, что соединение клиента и сервера характеризуется большим RTT. Даже если сервер и сеть загружены слабо, высокое зпачепие RTT ограничивает пропускную способность ТСР-соединения. Пропускпая способность ограничена размером входного буфера получателя и размером скользящего окна, и сервер не может передать больше пакетов, чем может поместиться в окио, пока он не получит подтверждения от клиента. Кроме того, начальный размер скользящего окна небольшой из-за фазы медленного старта. Передача ответов по нескольким соединениям может увеличить общую пропускную способность от сервера к клиенту.

Спецификация HTTP рекомендует клиенту открывать не более двух соединений одновременно с одним и тем же сервером, эта рекомендация не открывать более двух соединений для одного клиента распространяется и на прокси-серверы, которые посылают запросы от лица разных клиентов. На практике многие реализации клиентов и прокси-серверов не выполняют эти рекомендации. Кроме того, клиент может открыть несколько параллельных соединений, чтобы получить разные части одного и того же ресурса, посылая запросы на диапазоны, как это ониса- по в главе 7 (раздел 7.4.1).

Проблемы с параллельными соединениями

Параллельные еоедииепия увеличивают общую пропускную способность для отдельного клиента, ухудшая работу остальных. Использование параллельных соединений обусловливает несколько проблем:

•          Несправедливое перераспределение трафика по отношению к другим клиентам. Клиент, который посылает запросы по нескольким соединениям одновременно, достигает большей пропускной способности, отнимая долю пропускной способности у других клиентов. Рассмотрим двух Web клиентов, которые посылают запросы по одиому и тому же пути через сеть одному и тому же серверу. Предположим, что клиент А имеет четыре параллельных соедипеиия, когда клиент В имеет всего одно. Клиент А захватит в четыре раза большую пропускпую способность, чем клиент В, это приведет к заметно большей скорости работы для клиента А. В то же время клиенту В достанется меньшая пропускная способность и большие задержки. Один из способов для клиента В противодействовать неравномерному распределению ресурсов — также установить больше соединений. Чтобы увеличить пропускную способность, каждый клиент стремится открыть больше соединений, чем другие.

•          Большая загрузка сети и сервера. В дополнение к неравенству между клиентами, параллельные соединения увеличивают пагрузку на сервер и сеть. Рассмотрим клиента, который устанавливает несколько соединений одновременно, чтобы загрузить набор встроенных в Web-страницу изображений. Это приводит к резкому увеличению трафика, который увеличивает загрузку сети и сервера. Даже если каждое соединение находится в фазе медленного старта, суммарный трафик соединений может быть довольно большим. Как крайний пример возьмем клиента, который открывает 20 соединений с сервером. Клиент пошлет 20 пакетов SYN за короткий период, за которыми вскоре последуют 20 НТТР-запросов. Web-сервер займет большую часть своих ресурсов, пытаясь получить и обработать эти пакеты SYN и HTTP-запросы. В сети суммарная пагрузка, обусловленная большим количеством пакетов SYN, может превысить допустимую пропускную способность, что, в конечном счете, приведет к утере пакетов.

•          Большие задержки для пользователей. Помимо копкуренцйи за долю трафика с другими клиентами, параллельные соединения конкурируют между собой. Предположим, что у клиента подключение к Internet имеет пропускную способность в 28,8 Кбит/с (например, телефонный модем). Если клиент установит 20 параллельных соединений, любая передача данных будет проходить со ско- ростыо, не превышающей 1,44 Кбит/с. При загрузке встроенных в Web-страницу изображений, большое число медленных соединений может быть предпочтительнее, чем одно быстрое. В других случаях, пользователь может предпочесть быструю загрузку одного ресурса. Например, пользователь может загрузить различные Web-страницы в разных окнах браузера. Наличие большого числа активных передач данных одновременно может заставить пользователя ждагь дольше, чтобы получить хотя бы одну полностью загруженную страницу.

Эти проблемы, связанные с пропускной способностью и неравенством клиентов, можно разрешить следующими способами:

•          Сознательное уменьшение преимуществ параллельных соединений для повышения производительности. Обеспечение равенства клиентов обычно требует применения алгоритмов, управляющих распределением пропускпой сно- собпости сети и системных ресурсов сервера. Например, вместо того, чтобы обрабатывать пакеты в порядке поступления, маршрутизатор может чередовать пАкеты от разных отправителей и предназначенные разным получателям. Или же маршрутизатор может подсчитывать, объем трафика получателей и отправителей и «наказывать» слишком агрессивные хосты. Наказание может заключаться в уничтожении части пакетов. Однако на практике такие технологии усложняют устройство маршрутизаторов. Аналогично реализация TCP на Web-сервере может обеспечивать равномерное распределение трафика между клиентами. Web-сервер может обеспечивать равномерное распределение процессорного времени, оперативной памяти и дисковых ресурсов между различными клиентами.

• Предоставление альтернативы параллельным соединениям. Долговременные соединения уменьшают выгоду параллельных соединений, как это показано в главе 7 (раздел 7.5). Передача нескольких ответов по одному соединению избавляет от накладных расходов по установлению нескольких соединений. Кроме того, использование долговременного соединения обычно позволяет избежать повторения фазы медленного старта. С другой стороны, долговременные соединения не позволяют загружать несколько встроенных изображений одновременно. Клиент мог бы запрашивать различные изображения по частям но одному долговременному соединению с помощью последовательности запросов на диапазоны. В качестве альтерпагивы можно было бы внести изменения во взаимодействие между TCP и HTTP, чтобы осуществить чередующуюся загрузку нескольких ресурсов по одному соединению.

Методы равномерного распределения пропускной способности активно изучались по мере эволюции Internet от экспериментальной разработки до сети, предоставляющей широкий набор сервисов [Kes97J. Недавние предложения по изменению схемы распределения трафика конечных пользователей более детально описаны в главе 15 (раздел 15.1).

Источник: 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