Почему клиентские компьютеры не передают информацию другим клиентам через Интернет, чтобы уменьшить пропускную способность сервера?

Возьмем, к примеру, сервис хостинга изображений. Чтобы уменьшить пропускную способность/количество раз, когда вы обслуживаете изображения, возможно ли, чтобы клиент, который только что просмотрел изображение, затем ОБСЛУЖИВАЛ этот же файл изображения (или части этого файла) другому клиенту, который хочет просмотреть ту же страницу /изображение? Существуют ли проблемы, связанные с безопасностью, которые препятствуют этому, или мое непонимание технологии мешает мне увидеть очевидные причины, по которым это не сработает.

Если бы каждый клиент обслуживал тот же объем данных, который они потребляли, веб-серверу нужно было бы обслуживать любой данный файл только один раз, а остальная часть полосы пропускания была бы использована клиентами.

Изменить: я знаю о P2P и битторрентах. Я спрашиваю, почему бы не применить эту концепцию к общему веб-серфингу?


person Community    schedule 26.09.2009    source источник
comment
BBC рассматривает возможность сделать это для своего сервиса видео по запросу. Есть возражения со стороны интернет-провайдеров, которые рассчитывают на то, что вы загружаете много данных, но предоставляете очень мало.   -  person Martin Beckett    schedule 27.09.2009
comment
Очень интересно, но могут ли интернет-провайдеры контролировать то, какое программное обеспечение создается и используется?   -  person    schedule 27.09.2009
comment
Они могут заблокировать отправку/получение данных — обычно этого достаточно!   -  person Martin Beckett    schedule 27.09.2009


Ответы (10)


Описанная вами модель — это модель P2P, и именно так работают некоторые протоколы (например, BitTorrent)., работа).

Если вы спрашиваете, почему этот тип протокола не используется для веб-сайтов или интернированных приложений общего назначения, вероятно, есть две основные причины:

  1. Возможно, технически это будет очень сложно сделать: вам нужно будет уметь перенаправлять клиентов друг к другу, вам нужно будет заставить клиентов на самом деле отправлять файлы (для чего потребуется доступ к их системе, чего у вас обычно нет), вам, вероятно, придется принимать во внимание такие вещи, как скорость каждого клиента (т. е. вы не хотите, чтобы кто-то на старом, очень медленном соединении обслуживал изображения, так как ваш сайт будет выглядеть очень медленно). Причин гораздо больше, это лишь самые насущные проблемы, которые приходят мне в голову.
  2. Это не понравилось бы людям: Даже если предположить, что вы могли каким-то образом придумать способ сделать это, такие вещи, вероятно, не понравились бы пользователям вашего сайта. . Пользователи обычно не хотят «делиться» своим компьютерным пространством/пропускной способностью/и т. д. В большинстве случаев, когда компании устанавливали «шпионское ПО» или другие подобные скрытые вещи на чьи-то компьютеры, они получали очень плохую огласку.

В общем, я не думаю, что кто-то серьезно задумается о попытке сделать что-то подобное, в основном по двум причинам, которые я изложил выше.

person Edan Maor    schedule 26.09.2009
comment
Правильно - я спрашиваю, почему это не делается для веб-сайтов. относительно № 2); Преимущества для пользователей: A) счета за пропускную способность будут снижены, сайту не нужно будет размещать столько рекламы. Б) сайт может лучше масштабироваться = меньше времени простоя. C) Хотя это косвенно, полное отсутствие центрального сервера может обеспечить некоторое утешение людям, чьи сайты заблокированы кем-то другим — например, революционный веб-сайт заблокирован тоталитарной страной D) Люди, кажется, положительно реагируют на краудсорсинг где, по их мнению, они могут что-то изменить — подумайте о SETI@home, recaptcha и т. д. - person ; 27.09.2009
comment
Даже если бы вы могли заставить это работать технически и иметь все эти преимущества, я все равно думаю, что вам было бы невероятно трудно заставить людей все это понять. SETI@home хоть и популярен, но, вероятно, известен лишь небольшой части пользователей Интернета. Просто попробуйте заставить каждого пользователя на вашем сайте установить что-нибудь, потому что очень расплывчатое заявление о том, что на веб-сайтах будет меньше рекламы. Что касается рекапчи, ее легко заставить пользователей использовать, и, кроме того, я не думаю, что большинство людей даже знают, что это нужно для благого дела, они просто знают, что им нужно ввести слова, чтобы попасть на сайт. - person Edan Maor; 27.09.2009
comment
Это правда. Мне было интересно, можно ли обойтись без того, чтобы пользователь проходил процесс установки и прерывал работу в Интернете. Веб-серверы уже считывают небольшой объем данных из вашего браузера, почему бы не отправить немного больше данных и не сделать их доступными для других клиентов небольшими зашифрованными фрагментами? - person ; 27.09.2009

Чтобы «обслуживать» такие данные, каждый клиент должен иметь сервер, установленный на его компьютере и доступный для всего мира (что не всегда просто, когда вы находитесь за NAT, прокси-сервером, корпоративной сетью или что угодно).

Есть протоколы, которые делают это (например, многие протоколы Peer-to-Peer, но я бы сказал, что они лучше работают с большими файлами, чем с маленькими изображениями), но это просто не то, как работает Интернет.

Кроме того, для пользователей не имеет значения, откуда поступают данные, главное, чтобы они поступали; и это ваша проблема, как вебмастера/админа.

Я должен добавить, что с распределенным процессом, подобным тому, о котором вы думаете, существует риск безопасности: что, если один пользователь решит отправить что-то еще, кроме того, что было действительно запрошено? Сказать какой-нибудь "нехороший" образ вместо реального? Или вирус? Или что-то подобное?

person Pascal MARTIN    schedule 26.09.2009
comment
Пока он поступает, для доставки используются пакеты UDP и TCP. Игры используют UDP, потому что не имеет значения, потеряли ли вы свое движение на данной карте, в то время как порядок битов/байтов имеет значение при передаче файла данных. - person OMG Ponies; 27.09.2009

Одноранговая сеть работает только для статического контента из-за сложностей с синхронизацией данного файла.

person OMG Ponies    schedule 26.09.2009

По нескольким причинам:

  • Клиенты, как правило, находятся за NAT, что запрещает передачу данных напрямую другим клиентам.
  • Клиенты, как правило, имеют более плохую связь, чем серверы.
  • Вы не можете полагаться на то, что данный клиент имеет подходящую доступную полосу пропускания или действительно обслуживает то, что, как они утверждают, они будут. Если вам небезразлично, как ваши пользователи воспринимают ваш сайт, вы хотите убедиться, что контент доставляется быстро, а не по принципу «поймай, как поймал».
  • Вам нужен способ убедиться, что данные, которые вы получаете, не были изменены клиентом, от которого вы их получаете (или клиентом, они получили их и т. д.) — для этого потребуется цифровые подписи, что повлечет за собой все те же проблемы и проблемы, что и SSL.
  • Для поддержки этого потребуется серьезная переработка HTTP (если не полный редизайн). Поддержка клиентов будет в лучшем случае неравномерной, особенно если у клиентов будет мало стимулов для ее поддержки.
person Nick Johnson    schedule 26.09.2009

Это называется P2P. Наиболее успешным является использование bittorrent. Это очень удобно для больших файлов (дистрибутивы Linux, open office и т. д.). Не так эффективен для небольших файлов.

Патчи World of Warcraft также доставляются с помощью аналогичной системы.

person Macha    schedule 26.09.2009
comment
Одноранговая сеть для тех из нас, у кого есть проблемы с TLA. - person Robert Harvey; 27.09.2009
comment
Но почему мы не можем применить принцип, лежащий в основе торрентов, к обычному веб-серфингу? - person ; 27.09.2009
comment
Bittorrent — это протокол одноранговой сети (P2P), который не используется. - person OMG Ponies; 27.09.2009
comment
BitTorrent требует доступа к вашей файловой системе. Веб-браузерам это запрещено из соображений безопасности. - person Robert Harvey; 27.09.2009
comment
@harvey Но разве данные не будут также находиться в кеше вашего браузера? Можно ли передать части этих данных другому клиенту, который запрашивает ту же информацию, не предоставляя ему доступ к вашей файловой системе? - person ; 27.09.2009
comment
Где хранится кеш? (Ответ: На диске... в файловой системе.) - person Dave Sherohman; 27.09.2009

С точки зрения пользователя, откуда они получают данные, не имеет значения, если они поступают быстро, предсказуемо и надежно.

Модель распространения P2P, безусловно, осуществима, но выполнить эти три требования с помощью P2P сложнее, чем с клиент-сервером.

person Frank Krueger    schedule 26.09.2009

P2P довольно хорошо освещен в других ответах, но дополнительную проблему вызывает текущая инфраструктура. Для доступа в Интернет потребительского класса (кабель, DSL и т. д.) исходящая пропускная способность обычно составляет лишь часть входящей. Например, скорость загрузки по кабелю часто может составлять 5-6 Мбит/с, а скорость загрузки часто находится в диапазоне 400 КБ или меньше.

Интернет-операторы разработали систему таким образом, поскольку большинство людей загружают контент в браузеры или другие приложения и генерируют меньше контента.

person jnoss    schedule 26.09.2009
comment
А, это интересно. Но если бы клиенты могли загружать только небольшое количество информации, разве это не было бы лучше, чем ничего? Размер большинства веб-страниц и изображений намного меньше 400 КБ, если только это не изображения с высоким разрешением или видео. - person ; 27.09.2009
comment
Скорость по-прежнему намного ниже, поэтому пользователь на принимающей стороне будет получать часть пропускной способности сервера, исходящего от сервера, даже если размер объекта меньше 400 КБ. Также, если бы вместо кабеля использовался DSL, это могло бы быть только 40-60K. Это усложняет задачу создания единообразного взаимодействия с пользователем в P2P. - person jnoss; 27.09.2009

У вас должно быть что-то, работающее в фоновом режиме на чьем-то компьютере, чтобы обслуживать любой контент, который запрашивает кто-то другой. Как бы вы обошли потенциал спама, поскольку каждый клиент должен сказать: «Да, у меня это есть» или «Нет, у меня этого нет», что, возможно, будет некоторым трафиком.

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

person JB King    schedule 26.09.2009

С помощью небольшого волшебства UDP Adobe Flash Player теперь может взаимодействовать с другими клиентами в одноранговой сети P2P. Он использует довольно интересный сетевой чат, чтобы пробить дыры в настройках NAT.

http://labs.adobe.com/wiki/index.php/Stratus:FAQ

http://en.wikipedia.org/wiki/Real_Time_Media_Flow_Protocol

http://www.adobe.com/devnet/flashplayer/articles/rtmfp_stratus_app.html

http://www.flashrealtime.com/tuts/p2p-in-flash.html

person spender    schedule 26.09.2009

Для большинства интернет-приложений самая медленная часть сети — это конечный канал связи с компьютером пользователя. Таким образом, клиентский P2P имеет некоторое применение - в тех случаях, когда пропускная способность сервера / количество пользователей хуже, чем пропускная способность последней мили, - но не обязательно работает для других случаев.

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

person Pete Kirkham    schedule 27.09.2009