СИСТЕМА И СПОСОБ ДЛЯ ОБЕСПЕЧЕНИЯ БОЛЕЕ БЫСТРОЙ И БОЛЕЕ ЭФФЕКТИВНОЙ ПЕРЕДАЧИ ДАННЫХ Российский патент 2015 года по МПК H04L12/801 

Описание патента на изобретение RU2549135C2

ПЕРЕКРЕСТНАЯ ССЫЛКА НА СВЯЗАННЫЕ ЗАЯВКИ

Настоящая заявка испрашивает приоритет по одновременно рассматриваемой предварительной патентной заявке США, озаглавленной «БОЛЕЕ БЫСТРАЯ И БОЛЕЕ ЭФФЕКТИВНАЯ СИСТЕМА ПЕРЕДАЧИ ДАННЫХ», имеющей порядковый номер 61/249,624, поданной 8 октября 2009 г., которая включена в настоящее описание посредством ссылки в полном объеме.

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ

Настоящее изобретение относится к Интернет-связи, и более конкретно к повышению скорости передачи данных и эффективности использования полосы пропускания в Интернете.

УРОВЕНЬ ТЕХНИКИ

Имеют место некоторые тенденции в использовании сети и Интернета, которые значительно увеличивают полосу пропускания, которая используется в Интернете. Одна такая тенденция заключается в том, что все больше и больше видео просматривают по запросу в Интернете. Такой просмотр включает в себя просмотр как коротких, так и длинных видеоклипов. В дополнение, в Интернете могут быть просмотрены регулярные показы и полнометражные фильмы. Другая тенденция заключается в том, что повышение трафика в Интернете происходит из-за того, что веб-сайты (например, порталы покупок, новостные порталы и социальные сети) становятся глобальными, это означает, что веб-сайты обслуживают людей во многих различных местоположениях на планете, и таким образом данные перемещаясь по длинным отрезкам Интернета, увеличивают перегруженность

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

Проблема для пользователей - существующая полоса пропускания Интернета недостаточна, и таким образом фактическая «скорость», испытываемая пользователями, является невысокой;

Проблема для владельцев содержимого - значительный объем данных, просматриваемых пользователями, требует больших денежных сумм на издержки по хостингу и полосе пропускания; и

Проблема для поставщиков услуг Интернета (ISP)- рост Интернет-трафика требует от ISP увеличения инфраструктурных издержек (линии связи, маршрутизаторы и т.п.) за счет значительных финансовых расходов.

Необходимость в новом способе передачи данных, который является быстрым для потребителя, дешевым для распространителя содержимого и не потребовал бы инфраструктурных инвестиций для ISP, стала основным вопросом, который до сих пор является неразрешенным.

Было множество попыток сделать Интернет быстрее для потребителя и дешевле для вещательной станции. Каждой такой попытке не хватает некоторого аспекта для того, чтобы стать широко распространенным практическим решением, либо частичным решением, при котором оно охватывает лишь поднабор основных проблем, ассоциированных с увеличением Интернет-трафика. Большинство более ранних решений требуют для комплексного решения миллиарды долларов капиталовложений. Большинство из этих попыток испытывают недостаток в том, что значительная часть содержимого в Интернете динамически создается на каждого пользователя и сеанс упомянутого пользователя (эта тенденция получила название «Web 2.0»). Это может быть наглядно показано, например, на веб-сайте компании Amazon и веб-сайте Salesforce, где большинство видов страницы на этих веб-сайтах подгоняется под наблюдателя и таким образом является отличным для любых двух наблюдателей. Эта динамическая информация делает невозможным для большинства решений, предложенных на данный момент, сохранение содержимого и обеспечение его для других, ищущих аналогичное содержимое.

Одно решение, которое используется, называется «прокси». На Фиг.1 приведена схематичная диаграмма, обеспечивающая пример использования прокси-сервера в сети (2). Прокси или прокси-сервер 4, 6, 8 представляет собой устройство, которое помещают между одним или несколькими клиентами, показанными на Фиг.1 как клиентские устройства 10, 12, 14, 16, 18, 20, которые запрашивают данные через Интернет 22, и веб-сервером или веб серверами 30, 32, 34, с которых они запрашивают данные. Прокси-сервер 4, 6, 8 запрашивает данные у веб-серверов 30, 32, 34 от своего имени и кэширует ответы от веб-серверов 30, 32, 34 для обеспечения на другие клиентские устройства, которые выполняют подобные запросы. Если прокси-сервер 4, 6, 8 находится географически достаточно близко к клиентским устройствам 10, 12, 14, 16, 18, 20 и если хранилище и полоса пропускания прокси-сервера 4, 6, 8 достаточно велики, то прокси-сервер 4, 6, 8 будет увеличивать скорость запросов для клиентских устройств 10, 12, 14, 16, 18, 20, которые он обслуживает.

Однако следует отметить, что для того, чтобы обеспечить комплексное решение для Интернет-серфинга, прокси-серверам по Фиг.1 было бы необходимо быть развернутыми на каждой точке земного шара, где потребляется Интернет, и хранилища прокси-серверов в каждом местоположении должны был бы иметь размер, сопоставимый со всей информацией, хранящейся где-либо в Интернете. Вышеупомянутое привело бы к огромным расходам, которые не являются практичными. В дополнение, эти решения на основе прокси-серверов недостаточно хорошо справляются с динамическими данными, которые являются преобладающими в Интернете в настоящее время.

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

Для создания крупных систем распространения без больших затрат на аппаратное обеспечение, свойственных прокси-решению, предлагались решения «однорангового совместного использования файлов», например BitTorrent. Фиг.2 представляет собой блок-схему, обеспечивающую пример одноранговой сети 50 передачи файлов. В сети 50 файлы хранят на компьютерах потребителей, которые в данном описании называются клиентскими устройствами 60. Каждый потребитель может предоставлять данные другим потребителям через Интернет 62, тем самым снимая нагрузку обслуживания с распространителей содержимого и сохраняя им ассоциированные расходы, и обеспечивая потребителю несколько точек, из которых могут быть загружены данные, которые в данном описании называются одноранговыми участниками 70, 72, 74, 76, 78, тем самым увеличивая скорость загрузки. Однако каждое такое одноранговое решение должно обладать некоторым видом индекса, посредством которого можно найти требуемые данные. В типичной одноранговой системе совместного использования файлов, поскольку индекс находится на сервере 80 или распределяется между некоторыми серверами, количество файлов, доступных в системе не является очень большим (в противном случае серверные издержки были бы очень высокими или время поиска было бы очень большим).

Одноранговое решение совместного использования файлов является приемлемым в системе совместного использования файлов, поскольку там нет такого большого количества медиафайлов, которые представляют интерес для массы (возможно в порядке величины миллионов фильмов и песен, которые представляют интерес). Хранение и поддержание индекса миллионов записей является экономически и технически практичным. Однако если эта система должна быть использована для обслуживания сотен миллиардов файлов, которые доступны в Интернете в настоящее время, расходы по хранению и поддержанию такого индекса снова исчислялись бы миллиардами долларов. В дополнение, эти типы одноранговых систем совместного использования файлов не способны иметь дело с динамическими данными HTTP.

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

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

Настоящая система и способ обеспечивает более быструю и более эффективную передачу данных в сети связи. Кратко описанный на архитектурном уровне один вариант осуществления системы из числа других может быть реализован следующим образом. Сеть обеспечивают для ускорения передачи данных, причем сеть содержит по меньшей мере одно клиентское устройство связи для создания запроса данных с сервера данных; по меньшей мере одно агентское устройство связи, которое назначено серверу данных для приема запроса данных от клиентского устройства связи, при этом агент следит за тем, какие клиентские устройства связи приняли ответы на запросы данных с назначенного сервера данных; по меньшей мере одно одноранговое устройство связи для хранения частей данных, принятых в ответ на запрос данных по меньшей мере одним клиентским устройством связи, при этом части данных могут быть переданы, по меньшей мере, на одно клиентское устройство связи по запросу клиентским устройством связи; и по меньшей мере один сервер ускорения для принятия решения относительно того, какое агентское устройство связи должно быть назначено для какого сервера данных, и обеспечения этой информации по меньшей мере одному клиентскому устройству связи.

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

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

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

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

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

Фиг.2 - схематичная диаграмма, обеспечивающая предшествующий уровень техники на примере одноранговой сети передачи файлов.

Фиг.3 - схематичная диаграмма, обеспечивающая пример сети связи в соответствии с настоящим изобретением.

Фиг.4 - схематичная диаграмма, дополнительно показывающая устройство связи из сети связи по Фиг.3.

Фиг.5 - схематичная диаграмма, дополнительно показывающая память по Фиг.4.

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

Фиг.7 - схема, дополнительно показывающая две из главных баз данных, используемых в сети связи.

Фиг.8 - блок-схема последовательности операций, иллюстрирующая операцию модуля инициализатора системы ускорения.

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

Фиг.10 - блок-схема последовательности операций, продолжающая блок-схему последовательности операций по Фиг.9 и сфокусированная на агентском ответе на HTTP-запрос.

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

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

Фиг.13 - блок-схема последовательности операций, задающая схему операции сервера ускорения.

Фиг.14 - блок-схема последовательности операций, дополнительно иллюстрирующая ускорение TCP/IP в соответствии с альтернативным вариантом осуществления изобретения.

Фиг.15 - блок-схема последовательности операций, дополнительно иллюстрирующая ускорение TCP/IP в соответствии с альтернативным вариантом осуществления изобретения, детализирующая связь между клиентом и сервером TCP/IP (команды чтения и записи) после того, как фаза соединения была успешно завершена.

ПОДРОБНОЕ ОПИСАНИЕ

Настоящая система и способ предусматривает более быструю и более эффективную передачу данных в сети связи. Пример такой сети 100 связи обеспечен посредством схематичной диаграммы по Фиг.3. Сеть 100 по Фиг.3 содержит несколько устройств связи. В силу функциональности, обеспечиваемой аппаратным обеспечением, хранимым в каждом устройстве связи, которое может быть одним и тем же в каждом устройстве связи, каждое устройство связи может служить в качестве клиента, однорангового участника или агента в зависимости от требований сети 100, как подробно описано ниже. Следует отметить, что подробное описание устройства связи обеспечивается в отношении описания Фиг.4.

Возвращаясь к Фиг.3, примерный вариант осуществления сети 100 показывает, как одно из устройств связи функционирует в качестве клиента 102. Клиент 102 выполнен с возможностью осуществлять связь с одним или несколькими одноранговыми участниками 112, 114, 116 и одним или несколькими агентами 122. Для иллюстративных целей сеть содержит три одноранговых участника и одного агента, хотя отмечено, что клиент может осуществлять связь с любым количеством агентов и одноранговых участников.

Сеть 100 связи также содержит веб-сервер 152. Веб-сервер 152 является сервером, с которого клиент 102 запрашивает информацию и, может быть, например, типичным HTTP-сервером из числа тех, которые используются для доставки содержимого на любой из таких многочисленных серверов в Интернете. Необходимо отметить, что сервер 152 не ограничивается только HTTP-сервером. Фактически, если используется отличный протокол связи в сети связи, сервер может быть сервером, выполненным с возможностью обработки отличного протокола. Кроме того, следует отметить, что в то время как настоящее описание ссылается на использование HTTP, настоящее изобретение может относиться к любому другому протоколу связи и HTTP не предназначается для ограничения настоящего изобретения.

Сеть 100 связи дополнительно содержит сервер 162 ускорения, имеющий устройство 164 хранения сервера ускорения. Как более подробно описано в настоящем документе, устройство 164 хранения сервера ускорения содержит в себе базу данных сервера ускорения. База данных сервера ускорения хранит адреса протокола Интернет (IP) устройств связи в сети 100 связи, обладающих программным обеспечением ускорения, хранимым в них. В частности, база данных сервера ускорения содержит хранимый в ней список устройств связи, обладающих программным обеспечением ускорения, хранимым в них, которые в настоящий момент онлайн (подключены к сети) в сети 100 связи. Для каждого такого агента сервер ускорения назначает список IP-адресов.

В сети 100 связи по Фиг.3 приложение на клиенте 102 запрашивает информацию с веб-сервера 152, вот почему программное обеспечение в данном устройстве связи, назначает этому устройству связи работу в качестве клиента. В дополнение, поскольку агент 122 принимает запрос от клиента 102 как ближайшее устройство связи к веб-серверу 152, функциональность агента 122, обеспечиваемая программным обеспечением агента 122, назначает этому устройству связи работу в качестве агента. Необходимо отметить, что в соответствии с альтернативным вариантом осуществления изобретения агент не обязательно должен являться устройством связи, которое является ближайшим к веб-серверу. Вместо этого другое устройство связи может быть выбрано для того, чтобы быть агентом.

Поскольку одноранговые участники 112, 114, 116 содержат, по меньшей мере, части информации, запрошенной клиентом 102 с веб-сервера 152, функциональность одноранговых участников 112, 114, 116, обеспечиваемая программным обеспечением одноранговых участников 112, 114, 116, назначает этим устройствам связи работу в качестве одноранговых участников. Следует отметить, что процесс назначения клиентов, агентов и одноранговых участников подробно описан в данном документе. Также необходимо отметить, что количество клиентов, агентов, одноранговых участников, серверов ускорения, веб-серверов и других компонентов сети 100 связи может отличаться от количества, приведенного на Фиг.3. Фактически, количество клиентов, агентов, одноранговых участников, серверов ускорения, веб-серверов и других компонентов сети 100 связи не предназначено для ограничения данным описанием.

Перед описанием функциональности, выполняемой в сети 100 связи, нижеследующее дополнительно описывает устройство 200 связи в соответствии с первым примером варианта осуществления изобретения. На Фиг.4 приведена схематическая диаграмма, дополнительно иллюстрирующая устройство 200 связи сети 100 связи, которое содержит общие компоненты компьютера. Как было указано выше, устройство 200 связи по Фиг.4 может служить в качестве клиента, агента или однорангового участника.

В общем, с точки зрения архитектуры аппаратного обеспечения, показанной на Фиг.4, устройство 200 связи включает в себя процессор 202, память 210, по меньшей мере одно устройство 208 хранения и одно или несколько устройств 240 ввода и/или вывода (I/O)(или периферийных устройств), которые соединены с возможностью связи через локальный интерфейс 250. Локальный интерфейс 250 например, но не ограничиваясь этим, может представлять собой одну или несколько шин или других проводных или беспроводных соединений, которые известны в предшествующем уровне техники. Локальный интерфейс 250 может иметь дополнительные элементы, которые в целях простоты опущены: например, контроллеры, буферы (кэши), драйверы, повторители и приемники, чтобы сделать возможными связи. Дополнительно, локальный интерфейс 250 может включать в себя адресные, управляющие и/или информационные соединения, чтобы сделать возможными подходящие связи между упомянутыми выше компонентами.

Процессор 202 представляет собой аппаратное обеспечение для исполнения программного обеспечения, в частности, которое хранится в памяти 210. Процессор 52 может быть любым выполненным по заказу или коммерчески доступным процессором, центральным процессором (ЦП), вспомогательным процессором из числа нескольких процессоров, ассоциированных с устройством 200 связи, микропроцессором, основанным на полупроводниках (в виде микросхемы или набора схем), макропроцессором или обычным иным устройством для исполнения инструкций программного обеспечения.

Память 210, которая дополнительно проиллюстрирована и описана посредством описания к Фиг.5, может включать в себя любой один или комбинацию элементов энергозависимой памяти (например, память с произвольным доступом (RAM, например DRAM, SRAM, SDRAM, и т.д.)) и энергонезависимой памяти (например, ROM, накопитель на жестком диске, накопитель на магнитной ленте, CDROM, и т.д.). Более того, память (210) может включать в себя электронные, магнитные, оптические и/или другие типы сред хранения. Следует отметить, что память 210 может иметь распределенную архитектуру, в которой различные компоненты расположены удаленно друг от друга, но к ним может быть осуществлен доступ процессором 202.

Программное обеспечение 212, размещенное в памяти 210, может включать в себя одну или несколько отдельных программ, каждая из которых содержит упорядоченный листинг исполняемых инструкций для реализации логических функций устройства 200 связи, как описано ниже. В примере по Фиг.4 программное обеспечение 212 в памяти 210, по меньшей мере, содержит приложение 220 ускорения и интернет-браузер 214. В дополнение, память 210 может содержать операционную систему (ОС) 230. Операционная система 230, по существу, управляет исполнением компьютерных программ и обеспечивает службы планирования, управления вводом-выводом, администрирования файлов и данных, администрирования памяти, управления связью и связанные службы. Следует отметить, что в дополнение к приложению 220 ускорения, интернет-браузеру 214 и операционной системе 230 память 210 может содержать другие приложения программного обеспечения.

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

Функциональность устройства связи 200 может быть обеспечена исходной программой, исполняемой программой (объектным кодом), сценарием или другими объектами, содержащими набор инструкций, который должен быть выполнен. Если имеет место исходная программа, то упомянутая программа должна быть преобразована с помощью компилятора, ассемблера, интерпретатора или подобного, что может или может не быть включено в состав памяти 210, так чтобы она могла функционировать корректно в контексте операционной системы 230. Кроме того, функциональность устройства 200 связи может быть записана в качестве (а) объектно-ориентированного языка программирования, который имеет классы данных и способов, или (б) процедурного языка программирования, который имеет программы, подпрограммы и/или функции.

Устройства 240 ввода-вывода могут включать в себя устройства ввода, например, но не ограничиваясь этим, клавиатуру, мышь, сканер, микрофон и т.д. Более того, устройства 240 ввода-вывода могут также включать в себя устройства вывода, например, но не ограничиваясь этим, принтер, устройство отображения и т.д. Наконец, устройства 240 ввода-вывода могут дополнительно включать в себя устройства, которые осуществляют связь и через вводы и через выводы, например, но не ограничиваясь этим, модулятор/демодулятор (модем; для доступа к другому устройству, системе или сети), радиочастотный (RF) или другой приемопередатчик, телефонный интерфейс, мост, маршрутизатор и т.д.

Когда устройство 200 связи в действии, процессор 202 конфигурируется для исполнения программного обеспечения 212, хранимого в памяти 210, для передачи данных на и с памяти 210 и для общего управления операциями устройства 200 связи в соответствии с программным обеспечением 212. Программное обеспечение 212 и О/С 230 в целом или частично (как правило - второе) считываются процессором 202, возможно, с буферизацией в процессоре 202, и затем исполняются.

Если функциональность устройства 200 связи реализована в программном обеспечении, как показано на Фиг.4, следует отметить, что эта функциональность может быть сохранена на считываемом компьютером носителе для использования посредством или в контексте любой связанной с компьютером системы или способа. В рамках этого документа считываемым компьютером носителем является электронное, магнитное, оптическое или другое физическое устройство или средство, которое может содержать или хранить компьютерную программу для использования посредством или в контексте связанной с компьютером системы или способа. Функциональность устройства 200 связи может быть воплощена на любом считываемом компьютером носителе для использования посредством или в контексте устройства, инструмента или системы исполнения инструкций: например, основанной на компьютере системы, содержащей процессор системе, или другой системе, которая может извлекать инструкции из устройства, инструмента или системы исполнения инструкций и исполнять их. В рамках этого документа «считываемым компьютером носителем» может быть любое средство, которое может хранить, передавать, распространять или транспортировать программу для использования посредством или в контексте устройства, инструмента или системы исполнения инструкций.

Считываемый компьютером носитель, например, может быть, не ограничиваясь этим, электронным, магнитным, оптическим, электромагнитным, инфракрасным или полупроводниковым устройством, инструментом или системой, или средой распространения. Более конкретные примеры (неисчерпывающий список) считываемого компьютером носителя будут включать в себя: электрическое соединение (электронный), имеющее один или несколько проводов, портативную компьютерную дискету (магнитный), память с произвольным доступом (RAM) (электронный), постоянную память (электронный), стираемую программируемую постоянную память (EPROM, EEPROM или флэш-память) (электронный), оптическое волокно (оптический) и портативную постоянную память на компакт-диске (CD-ROM) (оптический). Следует отметить, что считываемый компьютером носитель может быть даже бумагой или другим подходящим носителем, на котором напечатана программа, поскольку программа может быть захвачена электронным образом: например, посредством оптического сканирования бумаги или другого носителя с последующей компиляцией, интерпретацией или иной обработкой соответствующим образом, если это необходимо, и сохранением в памяти компьютера.

В альтернативном варианте осуществления, в котором функциональность устройства 200 связи реализована в аппаратном обеспечении, функциональность может быть реализована с помощью любой одной или комбинации нижеследующих технологий, каждая из которых хорошо известна в предшествующем уровне техники: дискретная логическая цепь (цепи), имеющая логические вентили для реализации логических функций по сигналам данных; специализированная интегральная микросхема (ASIC), имеющая комбинационные логические вентили; программируемая вентильная матрица (матрицы) (PGA), или программируемая пользователем вентильная матрица (FPGA) и т.д.

По меньшей мере одно устройство 208 хранения, устройство 200 связи, может быть одним из многих категорий устройства хранения. Как более подробно описано в настоящем документе, устройство 208 хранения может включать в себя базу 280 данных конфигурации и базу 282 данных кэша. В качестве альтернативы база 280 данных конфигурации и база 282 данных кэша могут быть расположены на различных устройствах хранения, которые осуществляют связь с устройством 200 связи. В последующем описании предполагается, что база 280 данных конфигурации и база 282 данных кэша расположены на одном и том же устройстве хранения, однако следует отметить, что настоящее изобретение не ограничено использованием этой конфигурации.

База 280 данных конфигурации хранит данные конфигурации, которые являются общими для всех элементов сети 100 связи и используются для обеспечения информации синхронизации и установки различным модулям приложения 220 ускорения, сохраненного в памяти 210, как описано более подробно в данном документе. База 282 данных кэша хранит ответы на HTTP-запросы, которые устройство 200 связи отправило либо для своего собственного потребления, либо для других элементов сети 100 связи. Как подробно излагается в настоящем документе, ответы на HTTP-запросы хранят в базе 282 данных кэша для последующего использования этим устройством 200 связи или для других устройств связи в сети 100 связи, которым необходимо извлечь эту информацию и которые будут использовать данное устройство связи в качестве либо однорангового участника или агента.

В дополнение к сказанному выше, как подробно раскрывается в настоящем документе, база 282 данных кэша имеет хранимый в ней список указателей URL, о которых осведомлено устройство связи (на которые были запросы). Для каждого указателя URL база 282 данных кэша имеет хранимый в ней собственно указатель URL, HTTP-заголовки, возвращенные веб-сервером для этого указателя URL, то, когда последний раз содержимое указателя URL было загружено непосредственно с веб-сервера, то, когда содержимое указателя URL было изменено на веб-сервере последний раз, а также список блоков, которые содержат содержимое этого указателя URL, и сами блоки данных. Блоки в настоящем описании определяются как порции данных определенного одинакового размера, которые вместе формируют полное содержимое указателя URL. Необходимо отметить, что, несмотря на то, что настоящее описание предусматривает блоки являющиеся порциями данных определенного одинакового размера, в соответствии с альтернативным вариантом осуществления изобретения блоки могут напротив быть различного размера.

Фиг.5 представляет собой схематичную диаграмму, дополнительно иллюстрирующую память 210 по Фиг.4. Как показано на Фиг.5, память 210 может быть разделена на два базовых уровня, а именно: уровень 260 операционной системы и прикладной 270 уровень. Уровень 260 операционной системы содержит операционную систему 230, при этом операционная система 230 дополнительно содержит по меньшей мере один драйвер 262 устройства и по меньшей мере один стек 264 связи. Драйверы 262 устройств представляют собой модули программного обеспечения, которые отвечают за базовые действующие команды для различных устройств аппаратного обеспечения устройства 200 связи, например процессора 202, устройства 208 хранения и устройств 240 ввода-вывода. В дополнение, стеки 264 связи обеспечивают приложениям устройства 200 связи средство связи в сети 100 посредством реализации различных стандартных коммуникационных протоколов.

Прикладной уровень 270 включает в себя любое приложение, которое выполняется на устройстве 200 связи. В результате прикладной уровень 270 включает в себя интернет-браузер 214, который используют для просмотра информации, которая расположена на удаленных веб-серверах, приложение 220 ускорения, которое более подробно описано ниже, а также любые иные приложения 216, хранящиеся на устройстве 200 связи.

Как объясняется более подробно ниже, приложение 220 ускорения перехватывает запросы, выполненные приложениями устройства связи (клиента), которое использует Интернет, для того, чтобы модифицировать запросы и выполнить маршрутизацию по сети связи. Для перехвата таких запросов могут быть использованы различные способы. Один такой способ состоит в создании промежуточного драйвера 272, который также находится в памяти 210, который прикрепляет себя ко всем приложениям связи, перехватывает исходящие запросы приложений связи устройства 200 связи, например интернет-браузера 214, и осуществляет маршрутизацию запросов к приложению 220 ускорения. После того, как приложение 220 ускорения модифицирует запросы, осуществляет маршрутизацию запросов к другим системным элементам по сети 100 связи и принимает ответы от других системных элементов сети 100 связи, приложение 220 ускорения возвращает ответы промежуточному драйверу 272, который обеспечивает ответы обратно в запрашивающее приложение связи.

Фиг.6 представляет собой схематичную диаграмму, дополнительно иллюстрирующую элементы приложения 220 ускорения, а также коммуникационные маршруты приложения 220 ускорения. Приложение 220 ускорения содержит модуль 222 инициализатора системного ускорения, который вызывают при запуске приложения 220 ускорения. Модуль 222 инициализатора системного ускорения способен инициализировать все элементы устройства 200 связи. Приложение 220 ускорения также содержит три отдельных модуля, которые выполняются параллельно, а именно: клиентский модуль 224, одноранговый модуль 226 и агентский модуль 228, каждый из которых вступает в действие в соответствии с конкретной ролью, в которой принимает участие устройство 200 связи в сети 100 связи в заданный момент времени. Роль каждого модуля описана дополнительно в настоящем документе.

Клиентский модуль 224 обеспечивает функциональность, требуемую, когда устройство 200 связи запрашивает информацию у веб-сервера 152, например, но без ограничения этим, веб-страницы, данные, видео или аудио. Клиентский модуль 224 побуждает устройство 200 связи, имеющее в себе клиентский модуль 224, перехватывать информационный запрос и пропускать упомянутый информационный запрос на другие элементы сети 100 связи, например серверы, агенты или одноранговые участники. Этот процесс более подробно описан в настоящем документе.

Одноранговый модуль 226 обеспечивает функциональность, требуемую устройством 200 связи при ответе другим клиентам в сети 100 связи и обеспечении другим клиентам информации, которую они запрашивают, которую это устройство 200 связи, имеющее одноранговый модуль 226, уже загрузило в отдельный момент времени. Данный процесс более подробно описан в настоящем документе.

Агентский модуль 228 обеспечивает функциональность, требуемую, когда другие устройства связи сети 100 связи, выступают в качестве клиентов запрашивающих у этого устройства 200 связи, имеющего в себе этот агентский модуль 228, в качестве агента, получение списка одноранговых участников в сети 100 связи, которая содержит запрошенную информацию. Данный процесс более подробно описан в настоящем документе.

Приложение 220 ускорения взаимодействует и с базой 280 данных конфигурации и с базой 282 данных кэша устройства 208 хранения. Как упоминалось ранее, база 280 данных конфигурации хранит конфигурационные данные, которые могут быть общими для всех устройств связи сети 100 связи, и используется для обеспечения информации синхронизации и установки различным модулям 222, 224, 226, 228 приложения 220 ускорения, хранящегося в памяти 210.

База 282 данных кэша хранит ответы на информационные запросы, например HTTP-запросы, отправленные устройством 200 связи либо для своего собственного потребления, либо для других элементов сети 100 связи. Ответы на HTTP-запросы хранят в базе 282 данных кэша для последующего использования этим устройством 200 связи или другими устройствами связи в сети 100 связи, которым необходимо извлечь подобную информацию и которые будут использовать это устройство 200 связи в качестве однорангового участника или агента. Указанный процесс подробно описан в настоящем документе.

Информация, хранимая в базе 282 данных кэша, может включать в себя любую информацию, ассоциированную с запросом, отправленным клиентом. Например, такая информация может включать в себя метаданные и фактически запрошенные данные. Например, для HTTP-запроса видео, метаданные могут включать в себя версию веб-сервера, отвечающего на запрос от клиента, а данными будет само запрошенное видео. В ситуации, когда в базе данных кэша больше нет места для хранения, программное обеспечение ассоциированного устройства связи может побудить устройство связи стереть предыдущие сохраненные данные, чтобы очистить место для сохранения новых данных в базе данных кэша. Например, такие предыдущие данные могут включать в себя данные, которые, вероятней всего, не будут использованы снова. Такими данными могут быть старые данные или данные, о которых известно, что они больше не являются достоверными. Устройство связи может выбрать стирание, по меньшей мере, релевантных данных, в соответствии с любым из нескольких способов, которые известны в технике.

Фиг.7 представляет собой схему, дополнительно показывающую две основные базы данных, используемые в сети 100 связи, а именно базу 164 данных сервера ускорения и базу 282 данных кэша. Как было указано ранее, база 164 данных сервера ускорения хранит IP-адреса устройств связи, расположенных в сети 100 связи, которые имеют хранимое в них программное обеспечение ускорения. В частности, база 164 данных сервера ускорения содержит в себе список устройств связи, имеющих программное обеспечение ускорения, хранимое в них, которые в настоящий момент онлайн в сети 100 связи. Сервер ускорения назначает список IP-адресов каждому устройству связи, функционирующему в качестве агента. Каждое устройство связи будет являться агентом для любых веб-серверов, IP-адреса которых находятся в диапазоне, которым «владеет» это устройство связи. Например, когда самое первое устройство связи выходит в онлайн, а именно первое устройство связи, которое описано в данном документе, имеющее в себе приложение 220 ускорения, сервер ускорения назначает все IP-адреса в мире этому устройству связи, и это устройство связи будет являться агентом для любого веб-сервера. Когда второе устройство связи выходит в онлайн, оно будет совместно использовать список IP-адресов с первым устройством связи так, что каждое из упомянутых устройств связи будет ответственно за различную часть серверов «всемирной паутины» (WWW).

База 282 данных устройства 200 связи имеет хранимый в себе список указателей URL286, о которых осведомлено устройство 200 связи. Устройство 200 связи становится осведомлено об указателе URL каждый раз, когда устройство 200 связи принимает запрос на информацию, расположенную по конкретному указателю URL. Как показано на Фиг.7, для каждого указателя URL288 в списке указателей URL 286, база 282 данных кэша хранит: сам указатель URL 290; HTTP-заголовки 292, возвращенные веб-сервером 152 для этого указателя URL; то, когда содержимое этого указателя URL было загружено непосредственно с веб-сервера 152 последний раз 294; то, когда содержимое указателя URL 296 на веб-сервере 152 было изменено последний раз 296; и список блоков 298, которые содержат содержимое этого указателя URL, и содержимое блока. Как указывалось ранее, блоки в настоящем описании определяются как порции данных определенного одинакового размера, которые вместе формируют все содержимое указателя URL, а именно все содержимое, расположение которого описано упомянутым указателем URL. В качестве неограничивающего примера может быть использован блок размера, например, 16 КБ так, что любой HTTP-ответ будет разделен на блоки по 16 КБ. В соответствии с альтернативным вариантом осуществления изобретения, если последний блок ответа недостаточно велик для заполнения указанного размера блока, который в данном примере составляет 16 КБ, оставшаяся часть блока будет оставлена пустой.

Для каждого такого блока 300 база 282 данных кэша включает в себя контрольную сумму блока 302, данные самого блока 304 и список одноранговых участников 306, которые, вероятнее всего, имеют данные для этого блока. Как подробно описано в настоящем документе, данные для блока могут быть использованы другими клиентами в сети 100 связи, когда другие устройства связи сети 100 связи служат в качестве одноранговых участников для клиентов, с которых могут быть загружены данные блока.

Для каждого блока вычисляют контрольную сумму и сохраняют ее наряду с самим блоком. Контрольная сумма может быть вычислена различными многочисленными способами, известными специалистам в данной области техники. Назначение обладания упомянутой контрольной суммой состоит в том, чтобы позволить однозначно идентифицировать данные, при этом контрольная сумма является «ключом» к данным, где данные представляют собой блок. Например, клиент может желать загрузку содержимого указателя URL, в результате чего агент, который обслуживает этот запрос, отправляет контрольные суммы блоков клиенту, наряду с одноранговыми участниками, которые хранят эти блоки. Следует отметить, что для каждого отдельного блока может иметь место отличный одноранговый участник. Клиент затем связывается с каждым таким одноранговым участником и обеспечивает контрольную сумму блока, который необходимо передать одноранговым участником обратно клиенту. Одноранговый участник ищет контрольную сумму (ключ) в своей базе данных кэша и обеспечивает обратно блок (данных), который соответствует этой контрольной сумме (ключу). Как показано на Фиг.7, для каждого однорангового участника 308 в списке одноранговых участников 306, база 282 данных кэша включает в себя IP-адрес 310 однорангового участника, а также статус 312 соединения однорангового участника, который показывает, находится ли одноранговый участник 308 онлайн или нет.

В соответствии с одним вариантом осуществления изобретения база 282 данных кэша может быть проиндексирована по указателю URL и по контрольной сумме. Обладание базой данных кэша, проиндексированной таким образом, является предпочтительным по следующей причине. Когда агент использует базу данных кэша, агент принимает запрос от клиента на указатель URL, который ищет клиент. В таком случае агенту необходимо, чтобы база данных кэша была проиндексирована по указателю URL, чтобы содействовать в поиске списка соответствующих одноранговых участников, которые имеют блоки этого указателя URL. Когда одноранговые участники используют эту базу данных кэша, одноранговые участники получают запрос от клиента на конкретную контрольную сумму, и одноранговым участникам необходимо, чтобы база данных была проиндексирована по контрольной сумме так, чтобы они могли быстро найти корректный блок. Конечно, вместо этого база данных кэша может быть проиндексирована любым другим образом, что понятно обычному специалисту в данной области техники.

Описав компоненты сети 100 связи, далее дополнительно описывают то, как такие компоненты взаимодействуют и индивидуально функционируют. Фиг.8 представляет собой блок-схему 300 последовательности операций, иллюстрирующую операцию модуля 222 инициализатора системного ускорения (в дальнейшем для краткости именуемого инициализатором 222). Следует отметить, что любые описания процессов или блоки в блок-схемах последовательности операций следует понимать как представление модулей, сегментов, частей кода или этапов, которые включают в себя одну или несколько инструкций для реализации конкретных логических функций в процессе, и в объем настоящего изобретения включены альтернативные реализации, в которых функции могут быть исполнены в порядке, отличном от показанного или описанного, в том числе, по существу, одновременно или в обратном порядке, в зависимости от используемой функциональности, что понятно специалистам, достаточно хорошо знакомым с областью данного изобретения.

Инициализатор 222 представляет собой первый элемент устройства 200 связи для работы при запуске устройства 200 связи (блок 302). С запуском инициализатора 222, он сначала связывается с сервером 162 ускорения для регистрации в сервере 162 ускорения. Это выполняется посредством обеспечения серверу 162 ускорения имени хоста и всех IP-адресов и адресов управления доступом к среде (MAC) интерфейсов на устройстве 200 связи, обладающем инициализатором 222.

В соответствии с альтернативным вариантом осуществления изобретения, как указано блоком 304, инициализатор 222 проверяет с помощью сервера 162 ускорения, доступна ли более поздняя версия программного обеспечения приложения ускорения. Это может быть выполнено посредством любого из множества известных способов, например, но не ограничиваясь этим, посредством обеспечения номера версии программного обеспечения приложения ускорения на сервер 162 ускорения. Сообщение, принятое обратно от сервера 162 ускорения, указывает, имеется ли более новая версия программного обеспечения приложения ускорения. Если более новая версия программного обеспечения приложения ускорения существует, инициализатор 222 загружает последнюю версию программного обеспечения приложения ускорения с сервера 162 ускорения или с другого расположения и устанавливает последнюю версию на устройство 200 связи. В дополнение к вышеупомянутому инициализатор 222 может также планировать дополнительные проверки версии в установленные периоды времени впоследствии. Например, инициализатор 222 может проверять системные обновления каждые два дня.

Как показано блоком 306, инициализатор 222 затем перенаправляет исходящий сетевой трафик от устройства 200 связи, чтобы он проходил через приложение 162 ускорения. Как указывалось ранее, одним способом для перенаправления исходящего сетевого трафика является вставка промежуточного драйвера 212, который перехватывает и перенаправляет трафик. Следует отметить, что есть много других способов для реализации этого перенаправления, которые хорошо известны специалистам в данной области.

Как показано блоком 308, инициализатор 222 затем запускает клиентский модуль 224 устройства 200 связи и конфигурирует клиентский модуль 224 устройства 200 связи, чтобы перехватывать все исходящие сетевые передачи устройства 200 связи и осуществлять маршрутизацию исходящих сетевых передач к клиентскому модулю 224 от промежуточного драйвера 272 или реализуют другой способ маршрутизации. Это выполняется так, чтобы клиентский модуль 224 был способен принимать весь сетевой трафик, поступающий от сетевых приложений, модифицировать сетевой трафик в случае необходимости и повторно осуществлять маршрутизацию трафика. Специалистам в данной области известно, что для повторного осуществления маршрутизации трафика трафик необходимо модифицировать, например, чтобы изменить адрес назначения запросов.

Как показано блоком 310, инициализатор 222 затем запускает агентский модуль 228 и одноранговый модуль 226 для выполнения на устройстве 200 связи. Агентский модуль 228 и одноранговый модуль 226 прослушивают устройство 200 связи на предварительно определенных портах так, чтобы входящий сетевой трафик на этих портах маршрутизировался к агентскому модулю 228 и одноранговому модулю 226. Как подробнее объясняется ниже, описанное выше позволяет устройству 200 связи функционировать в качестве агента и в качестве однорангового участника для других устройств связи в сети 100 связи по мере необходимости.

Фиг.9 представляет собой блок-схему (350), дополнительно иллюстрирующую связь между различными элементами сети 100 связи в соответствии с настоящей системой и способом для обеспечения более быстрой и более эффективной передачи данных.

Как показано блоком 352, приложение, выполняемое на клиенте 200, инициирует запрос на ресурс в сети. Запрос может быть, например, следующим: "GET http://www.aol.com/index.html HTTP/1.1". Запрос может исходить от интернет-браузера 214, расположенного на клиенте 200, при этом интернет-браузер 214 загружает страницу из Интернета, или от приложения, которое желает загрузить информацию из Интернета, получить или отправить сообщение электронной почты или любой другой сетевой запрос связи.

С помощью промежуточного драйвера 272 или другого такого механизма, который может быть реализован, который осуществляет повторную маршрутизацию передачи к клиентскому модулю 224 клиента 200, ресурсный запрос перехватывается клиентским модулем 224, который выполняется на клиенте 200 (блок 354). Затем клиентский модуль 224 ищет IP-адрес сервера 152, который является целью ресурсного запроса (например, IP-адрес веб-сервера, который является хостом www.aol.com в приведенном выше примере), и отправляет этот IP-адрес к серверу 162 ускорения (блок 356), чтобы получить список устройств связи, которые клиент 200 может использовать в качестве агентов (в дальнейшем именуемых агентами). Следует отметить, что процесс выполнения IP-поиска сервера известен специалистам в данной области, поэтому он не описывается дополнительно в данном документе.

В ответ на прием IP-адреса сервера 152 сервер 162 ускорения готовит список агентов, которые могут быть подходящими для обработки запроса с этого IP-адреса (блок 358). Размер списка может различаться в зависимости от реализации. В иллюстративных целях ниже по тексту обеспечивается пример, где список из пяти агентов, подготовлен сервером 162 ускорения. Этот список агентов создается сервером 162 ускорения посредством поиска устройств связи в сети 100 связи, которые в настоящий момент онлайн и чьи IP-адреса численно близки к IP веб-сервера 152 назначения. Ниже приводится дополнительное подробное описание вышеупомянутого процесса.

Как показано блоком 360, клиентский модуль 224 затем отправляет исходный запрос (например, "GET http://www.aol.com/index.html HTTP/1.1") всем агентам из списка, принятого с сервера 162 ускорения, чтобы выяснить, какой из агентов в упомянутом списке лучше всего подходит для того, чтобы быть агентом, который будет содействовать этому запросу.

Следует отметить, что в соответствии с альтернативным вариантом осуществления изобретения устройство 200 связи может быть соединено с устройством, которое фактически запрашивает данные. В таком альтернативном варианте осуществления устройство связи будет являться модульным устройством, соединенным с запрашивающим устройством, где запрашивающее устройство, например персональный цифровой секретарь (PDA) или другое устройство, будет запрашивать данные, и устройство связи, соединенное с ним либо через физическое соединения, либо беспроводное или любое другое соединение, будет принимать запрос данных и функционировать так, как описано в настоящем документе. В дополнение, как указывалось ранее, следует отметить, что HTTP-запрос может быть заменен любым запросом на ресурсы в Интернете.

Фиг.10 - это блок-схема последовательности операций, продолжающая блок-схему 380 последовательности операций по Фиг.9 и ориентированная на агентский ответ на запрос. Как показано блоком 382, после приема запроса от клиента 200 каждый агент, который принял запрос от клиента, отвечает клиенту 200 с тем, имеется ли у него информация по упомянутому запросу, которая может помочь клиенту загрузить запрашиваемую информацию с одноранговых участников в сети. В частности, каждый агент отвечает с тем, имел ли место ранее запрос на этот ресурс, который был выполнен. В этом случае агент затем может обеспечивать клиенту список одноранговых участников и контрольные суммы блоков, которые имеет каждый из них.

Как показано блоком 384, клиент затем решает, какого из агентов в списке использовать в качестве своего агента для этого конкретного информационного запроса. Чтобы определить, какого агента из списка использовать в качестве своего агента для конкретного информационного запроса, клиент может рассмотреть несколько факторов, например, учитывая скорость ответа каждого агента и то, имеет ли запрошенную информацию агент или нет. Существует несколько способов реализации этого агентского выбора, одним практическим способом является запуск таймера небольшого окна времени, например 5 мс, после приема первого ответа от агентов, и после упомянутого небольшого окна выбрать из списка агентов, которые ответили, агента, который имеет информацию о запросе, или в случае, если ни один из агентов не ответил, выбрать первого агента из списка, принятого с сервера 162 ускорения.

Как показано блоком 386, после выбора агента клиент уведомляет выбранного агента, что он собирается использовать его для этого запроса, и уведомляет других агентов, что они не будут использоваться для этого запроса. Затем клиент отправляет выбранному агенту запрос на первые пять блоков данных исходного информационного запроса (блок 388). Посредством указания выбранному агенту запрошенных блоков в их порядке в полном ответе клиент принимает от выбранного агента список одноранговых участников и контрольные суммы требуемых блоков. Например, для первых пяти блоков клиент будет запрашивать у выбранного агента блоки с первого по пятый, а для четвертой партии из пяти блоков клиент будет запрашивать у агента блоки с шестнадцатого по двадцатый. Как указывалось ранее, в отдельный момент времени может быть запрошено дополнительное или меньшее число блоков.

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

Как показано блоком 392, если информация (запрошенные данные запроса) существует и по-прежнему достоверна, то агент готовит ответ клиенту, который включает в себя для каждого из блоков: (i) контрольную сумму блока; (ii) список одноранговых участников, которые, согласно базе данных выбранного агента, содержат эти блоки; и (iii) если они представляют собой первые пять блоков информации, то выбранный агент также обеспечивает конкретные заголовки протокола, которые были бы приняты с сервера, имея первоначальный запрос от клиента, выполненный непосредственно серверу.

Как показано блоком 394, список одноранговых участников для каждого блока сортируют по географической близости к запрашивающему клиенту. В соответствии с настоящим примером только пять самых близких одноранговых участников сохраняют в списке для каждого блока, а остальная часть одноранговых участников исключается из этого списка. Как показано блоком 396, подготовленный ответ, а именно список самых близких одноранговых участников, отправляют обратно клиенту. Следует отметить, что, если бы это был последний набор блоков, который должен быть обеспечен для этого запроса, то было бы предпочтительным включить информацию об этом для клиента.

Если выбранный агент обнаруживает, что он не имеет информации об этом запросе, или если выбранный агент обнаруживает, что информация, которой он обладает, больше не достоверна, выбранному агенту необходимо загружать информацию непосредственно с сервера, чтобы иметь возможность обеспечить ответ запрашивающему клиенту. Как показано блоком 400, выбранный агент затем отправляет запрос непосредственно на сервер. Затем выбранный агент сохраняет информацию, которую он принял с сервера (и заголовки запроса, а также блоки самого ответа), в своей базе данных для этого конкретного ответа клиенту, а также для будущего использования другими клиентам, которые могут запросить эти данные (блок 402). Затем выбранный агент готовит ответ (список) для клиента, при этом ответ включает в себя заголовки протокола (если это первые пять блоков) и контрольные суммы пяти блоков, и обеспечивает себя в качестве единственного однорангового участника для этих блоков (блок 404). Этот список затем отправляют обратно клиенту (блок 406).

Фиг.11 представляет собой блок-схему 420 последовательности операций, продолжающую блок-схему последовательности операций по Фиг.10, которая иллюстрирует действия, предпринимаемые после получения списка одноранговых участников или листинга одного однорангового участника от агента. Как показано блоком 422, клиент принимает ответ от агента (включающий в себя список блоков и их соответствующие данные, включающий в себя одноранговых участников, и другую вышеупомянутую информацию), и для каждого из пяти блоков клиент отправляет запрос каждому из одноранговых участников, занесенных в список на блок, чтобы загрузить блок. Запрос блока, который клиент отправляет каждому из одноранговых участников, представляет собой контрольную сумму данных, которые клиент стремиться принять, которая является ключом (идентификатором) блока.

Затем, как показано блоком 424, одноранговые участники отвечают, имеют ли они все еще данные блока. Например, некоторые из одноранговых участников могут не быть в данный момент онлайн, некоторые могут быть онлайн, но могут иметь исключенной релевантную информацию, а некоторые по-прежнему могут иметь релевантную информацию, а именно блок. Как показано блоком 426, затем клиент выбирает самого быстрого однорангового участника, который отвечает с положительным ответом о запрошенной информации, клиент сообщает этому одноранговому участнику, что он выбран для обеспечения блока клиенту, и уведомляет других одноранговых участников, что они не выбраны.

Как показано блоком 428, выбранный одноранговый участник отправляет блок клиенту. Следует отметить, что, если нет ответа одноранговых участников на запрос клиента, клиент возвращается к агенту с уведомлением, что все одноранговые участники были отрицательными, и агент либо обеспечивает список из пяти других агентов, если они существуют, либо агент продолжает загружать информацию непосредственно с веб-сервера, как в случае, когда не существует одноранговых участников, как описано выше.

Затем клиент сохраняет блоки в своем кэше для использования в будущем (блок 430), когда клиенту может потребоваться обеспечить блоки запрашивающему устройству связи во время действия в качестве однорангового участника для другого клиента, который ищет ту же самую информацию. Как показано блоком 432, если некоторые из блоков не были загружены с какого-либо из одноранговых участников, клиент повторно запрашивает блоки у агента в ходе следующего цикла запросов, отмечая эти блоки как блоки, которые не были загружены из одноранговых участников в клиентском списке. В такой ситуации агент будет загружать данные непосредственно с сервера и обеспечивать их обратно клиенту.

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

Как показано блоком 438, затем клиент пропускает данные в веб-браузер или другое приложение клиента, которое выполнило исходный запрос, чтобы они использовались там, как и предполагалось первоначально. Затем клиент проверяет, все ли блоки были приняты для этого запроса (блок 440) посредством проверки флага, установленного агентом. В частности, когда агент обеспечивает список из последних 5 блоков, агент включает в себя эту информацию в качестве части своего ответа клиенту, что в настоящем документе именуется флагом. Эта информация является той, которая позволяет клиенту знать, что вся информация была принята для конкретного ресурсного запроса.

Если последние принятые блоки не были последними для этого запроса, поток обработки клиента продолжается, возвращаясь к функциональности блока 384 по Фиг.10, но при этом отправляют выбранному агенту запрос на следующие пять блоков данных исходного информационного запроса. В качестве альтернативы, если все блоки для этого запроса были приняты, запрос считается завершенным и поток запускается снова с блока 352 по Фиг.9.

Фиг.12 представляет собой блок-схему 500 последовательности операций, иллюстрирующую этапы, предпринимаемые агентом, клиентом или одноранговым участником для определения того, достоверен ли по-прежнему некоторый HTTP-запрос. В частности, ниже обеспечивают пример того, как агент, клиент или одноранговый участник могут определять, по-прежнему ли конкретные данные, которые хранятся в памяти агента, однорангового участника или клиента, отражают информацию, которая находится в настоящий момент на веб-сервере. Как показано блоком 502, HTTP-запрос ищут в базе данных кэша агента, клиента или однорангового участника, который проверяет достоверность HTTP-запроса. Например, протокол HTTP, определенный посредством RFC 2616, описывает конкретные способы того, что веб-серверы могут определить в HTTP-заголовках, указывающих достоверность некоторых данных, например, но без ограничения, посредством использования информации заголовка HTTP, такой как «max age» («максимальный срок») для указания длительности времени, в течение которого эти данные могут кэшироваться, перед тем как стать недостоверными, «no cache» («не кэшировать») для указания того, что данные никогда не могут быть кэшированы, и использованием другой информации.

Как показано блоком 504, эти стандартные способы проверки достоверности протестированы на рассматриваемой информации HTTP-запроса. Как показано блоком 506, выполняют определение того, достоверна или нет запрошенная информация, которая сохранена. Если запрошенная информация достоверна, возвращают ответ «VALID» («ДОСТОВЕРНА»)(блок 508). В качестве альтернативы, если запрашиваемая информация не является достоверной, на соответствующий веб-сервер отправляют условный HTTP-запрос для определения того, являются ли данные, сохраненные для этого запроса, по-прежнему достоверными (блок 510). Если данные, сохранные для этого запроса, по-прежнему достоверны, возвращают ответ «VALID» (блок 508). В качестве альтернативы, если данные, сохранные для этого запроса, не являются достоверными, возвращают ответ «INVALID» («НЕДОСТОВЕРНЫ») (блок 514). Следует отметить, что вышеупомянутое описание, касающееся Фиг.12, является объяснением того, как проверить, по-прежнему ли достоверна HTTP-информация. Существуют подобные способы определения достоверности для любого другого протокола, которые могут быть использованы, и которые будут поняты и высоко оценены специалистами в данной области.

Фиг.13 представляет собой блок-схему 550 последовательности операций, демонстрирующую операцию сервера ускорения, основной обязанностью которой в настоящей системе и способе является обеспечение клиентам информации о том, какие агенты обслуживают какие запросы, и поддержание своевременных обновлений программного обеспечения сетевых элементов. Как показано блоком 552, сервер ускорения отправляет сигналы «keep alive» («поддержания активности») сетевым элементам и следит по своей базе данных за тем, какие сетевые элементы онлайн. Как показано блоком 554, сервер ускорения продолжает ожидать клиентский запрос и продолжает определять, принят ли он.

После приема запроса сервер ускорения тестирует тип принятого запроса (блок 556). Если клиентский запрос направлен на регистрацию клиента в сети, событие, которое происходит каждый раз, когда клиент начинает выполняться на своей хост-машине, то этого клиента добавляют к списку агентов, сохраненному на сервере ускорения, отсортированному по IP-адресу клиента (блок 558).

Если запрос направлен на поиск агента для использования с конкретным запросом, сервер ускорения создает новый агентский список, который является пустым (блок 560). Затем сервер ускорения ищет в агентской базе данных следующие 5 активных агентов, IP-адреса которых ближе всего к IP-адресу сервера, который является намеченным в этом запросе (блок 562). В этом контексте 192.166.3.103 ближе к 192.166.3.212, чем к 192.167.3.104. Затем сервер ускорения отправляет этот агентский список клиенту (блок 564).

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

Хотя вышеупомянутый пример ориентирован на HTTP-запросы данных, как упоминалось ранее, запросы других протоколов равным образом способны обрабатываться настоящей системой и способом. Например, в отдельных вариантах осуществления описанный способ ускорения может ускорить любой протокол связи на любом уровне модели OSI (SMTP, DNS, UDP, ETHERNET и т.д.). В следующем альтернативном варианте осуществления показано, как способ ускорения может ускорить TCP/IP. Специалистам в данной области известно, что TCP/IP является относительно низкоуровневый протокол, в противоположность HTTP, который является высокоуровневым протоколом. В целях иллюстрации связи по TCP/IP ссылка может быть сделана на Фиг.3, на которой веб-сервер является сервером TCP/IP.

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

Сообщение соединения включает в себя IP-адрес устройства связи и номер порта, с которым следует соединиться. Приложение использует команду записи, чтобы инструктировать стеку TCP/IP отправку сообщения (то есть данных) устройству связи, с которым оно соединено. В дополнение, приложение использует команду чтения, чтобы запросить обеспечение стеком TCP/IP сообщения, которое было отправлено с удаленного устройства связи, с которым оно соединено. Сеанс связи обычно состоит из соединения, за которым следует чтение и запись с обеих сторон.

Фиг.14 представляет собой блок-схему 600 последовательности операций, дополнительно иллюстрирующую ускорение TCP/IP в соответствии с этим альтернативным вариантом осуществления изобретения. Как показано блоками 601 и 602, когда приложение устройства связи выполняет запрос стеку связи на соединение с сервером TCP/IP, такая передача перехватывается приложением ускорения.

Чтобы найти агент, после приема этого сообщения соединения от приложения устройства связи, которое включает в себя IP-адрес сервера TCP/IP и порт, с которым следует соединиться, приложение ускорения в клиенте выполняет запрос к серверу ускорения для выяснения того, кто является агентом для связи с сервером TCP/IP. Этот этап выполняется подобно тому, что описано в отношении основного варианта осуществления изобретения с применением HTTP (блок 604). Как показано блоком 606, сервер затем обеспечивает клиенту список агентов, например первичного агента и четыре других.

Чтобы установить соединение, как показано блоком 608, клиент обеспечивает соединение TCP/IP с первичным агентом или одним из других агентов, если первичный агент недоступен, чтобы создать соединение с агентом. Затем клиент отправляет агенту IP-адрес сервера TCP/IP и порт соединения, который был обеспечен приложением устройства связи (блок 610). Как показано блоком 612, этот агент в свою очередь обеспечивает соединение TCP/IP с сервером TCP/IP с (через) портом (порт), который он принял от клиента, чтобы создать соединение с агентом.

Фиг.15 представляет собой блок-схему 800 последовательности операций, дополнительно иллюстрирующую ускорение TCP/IP в соответствии с этим альтернативным вариантом осуществления изобретения, детализирующую связь между клиентом и сервером TCP/IP (команды чтения и записи) после того, как фаза соединения была успешно завершена.

Как показано блоком 802, если сетевому приложению в клиенте необходимо отправить сообщение серверу TCP/IP, то сетевое приложение в клиенте записывает сообщение в стек TCP/IP в операционной системе клиента. Эта команда ЗАПИСИ принимается приложением ускорения клиента и обрабатывается, как описано ниже. Если серверу TCP/IP необходимо отправить сообщение клиенту, то сервер TCP/IP записывает сообщение в стек TCP/IP операционной системы TCP/IP по соединению с агентом, поскольку этот агент представляет собой местоположение, в котором сервер принял исходное соединение. Эта команда ЗАПИСИ принимается приложением ускорения агента и обрабатывается, как описано ниже.

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

Как показано блоком 804, приложение ускорения разбивает содержимое сообщения на блоки и вычисляет соответствующие контрольные суммы так, как это описано для основного варианта осуществления изобретения в настоящем документе. Затем приложение ускорения выполняет поиск каждой контрольной суммы в своей базе данных кэша (блок 806). Как показано блоком 808, приложение ускорения проверяет, существует ли контрольная сумма в базе данных кэша. Если существует, то, как показано блоком 810, приложение ускорения готовит список одноранговых участников, которые уже приняли упомянутый блок контрольной суммы в прошлом (если такие имеются), и добавляет устройство связи другой стороны в список устройств связи, которые приняли этот блок (добавляет его в список одноранговых участников для контрольной суммы в своей базе данных), чтобы обеспечить его другим устройствам связи, которые будут запрашивать эту информацию. Как показано блоком 812, список одноранговых участников отправляется принимающему устройству связи, которое, как показано блоком 814, извлекает блоки от одноранговых участников в принятом списке, по методике, применяемой в основном варианте осуществления.

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

Как показано блоком 816, затем выполняют определение относительно того, все ли блоки приняты. Если приняты не все блоки, процесс продолжается снова с блока 806.

После приема всех данных, как показано блоком 818, приложение ускорения пропускает данные запрашивающей стороне. В частности, в клиенте приложение ускорения пропускает полные данные приложению связи, и в агенте приложение ускорения пропускает полные данные запрашивающему серверу TCP/IP.

Следует подчеркнуть, что вышеописанные варианты осуществления настоящего изобретения представляют собой лишь возможные примеры реализаций, изложенные лишь для четкого понимания принципов изобретения. Множество изменений и модификаций может быть выполнено относительно вышеописанных вариантов осуществления, по существу, без отклонения от сущности и принципов изобретения. Все такие модификации и изменения включены в состав данного документа в рамках объема этого раскрытия и настоящего изобретения и защищены нижеследующей формулой изобретения.

Похожие патенты RU2549135C2

название год авторы номер документа
РАСПРЕДЕЛЯЕМАЯ, МАСШТАБИРУЕМАЯ, ПОДКЛЮЧАЕМАЯ АРХИТЕКТУРА КОНФЕРЕНЦСВЯЗИ 2007
  • Секаран Дхига Д.
  • Пирс Шон Д.
  • Кокс Шон Д.
  • Шорофф Срикантх
  • Кертис Павел
  • Николс Дэвид
  • Мехта Бимал К.
  • Эйдельман Вадим
  • Партасарати Виджай Кишен Хампапур
  • Левин Орит
  • Кимчи Гур
RU2459371C2
СПОСОБ И УСТРОЙСТВО ДЛЯ ДОБАВЛЕНИЯ НОВОГО ЧЛЕНА К АКТИВНОМУ ГРУППОВОМУ ВЫЗОВУ В СЕТИ ГРУППОВОЙ СВЯЗИ 2003
  • Крокетт Дуглас М.
  • Роузен Эрик К.
  • Мадженти Марк.
RU2316146C2
Система двухсторонней связи в реальном времени с использованием протокола НТТР 2014
  • Карккаинен Туомас Микаел
  • Хаккарайнен Валттери
  • Калево Осси
RU2635220C2
ПЛАВНАЯ ПОТОКОВАЯ ПЕРЕДАЧА КЛИЕНТСКОГО МУЛЬТИМЕДИА БЕЗ ФИКСАЦИИ СОСТОЯНИЯ 2010
  • Соод Вишал
  • Фрилэндер Джек Э.
  • Рой Анирбан
  • Лю Линь
  • Чжан Гэцян
  • Дуггараджу Кришна
  • Сиривара Судхир
  • Бочаров Джон А.
RU2543568C2
МОНИТОРИНГ СЕТИ И ИДЕНТИФИКАЦИЯ АБОНЕНТА В РЕАЛЬНОМ МАСШТАБЕ ВРЕМЕНИ С ПОМОЩЬЮ УСТРОЙСТВА, СРАБАТЫВАЮЩЕГО ПО ТРЕБОВАНИЮ 2013
  • Свенсон Эрик Р.
  • Бандари Нитин
RU2585971C1
СИСТЕМЫ И СПОСОБЫ ДЛЯ ЗАЩИТЫ СЕТЕВЫХ УСТРОЙСТВ 2015
  • Глэйзмэйкерс Курт
  • Хэмилтон Малкольм
  • Бербероглу Гокхан
RU2675055C2
ОДНОРАНГОВАЯ СЕТЬ ДОСТАВКИ КОНТЕНТА, СПОСОБ И УПРАВЛЯЮЩЕЕ УСТРОЙСТВО 2014
  • Ликлей Грегори Х.
  • Савенок Александр
  • Савенок Павел
RU2633111C1
УНИВЕРСАЛЬНАЯ СИСТЕМА МНОГОФУНКЦИОНАЛЬНОЙ КОММУНИКАЦИИ С ИСПОЛЬЗОВАНИЕМ ИНФОРМАЦИОННЫХ ОБЪЕКТОВ И СЕРВИСНЫХ СЛУЖБ 2010
  • Разроев Элдар Али Оглы
RU2451992C2
ЭЛЕКТРОННАЯ СИСТЕМА ДЛЯ ПРЕДОСТАВЛЕНИЯ БАНКОВСКИХ УСЛУГ 2005
  • Аткинсон Стивен Пол
  • Лукис Аластэр Дэвид
RU2401455C2
СПОСОБ АДАПТИВНОЙ ПОТОКОВОЙ ПЕРЕДАЧИ ДАННЫХ С УПРАВЛЕНИЕМ СООБЩЕНИЯМИ АКТИВНОЙ ДОСТАВКИ 2017
  • Фабле Юэнн
  • Белльссор Ромен
  • Маз Фредерик
  • Уэдраого Наэль
  • Денуаль Франк
  • Рюэллан Эрве
RU2659041C1

Иллюстрации к изобретению RU 2 549 135 C2

Реферат патента 2015 года СИСТЕМА И СПОСОБ ДЛЯ ОБЕСПЕЧЕНИЯ БОЛЕЕ БЫСТРОЙ И БОЛЕЕ ЭФФЕКТИВНОЙ ПЕРЕДАЧИ ДАННЫХ

Изобретение относится к области интернет связи. Техническим результатом является снижение перегрузки сети для владельцев содержимого и поставщиков услуг интернета. Система использует сетевые элементы, включающие в себя сервер ускорения, клиентов, агентов и одноранговых участников, где запросы связи, генерируемые приложениями, перехватывают клиентом на том же самом компьютере. Ip-адрес сервера передают серверу ускорения, который обеспечивает список агентов для использования для этого ip-адреса. Один или несколько агентов отвечают со списком одноранговых участников, которые ранее обладали некоторым или всем содержимым, которое является ответом на этот запрос. Затем клиент загружает данные с этих одноранговых участников параллельно и по частям. 3 н. и 13 з.п. ф-лы, 15 ил.

Формула изобретения RU 2 549 135 C2

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

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

3. Сеть по п. 1, в которой сервер ускорения назначает список адресов протокола Интернет каждому агентскому устройству связи.

4. Сеть по п. 1, в которой сервер ускорения хранит в себе список устройств связи онлайн, включающий в себя клиентские устройства связи, агентские устройства связи и одноранговые устройства связи.

5. Сеть по п. 1, в которой каждое клиентское устройство связи, агентское устройство связи и одноранговое устройство связи поддерживают список запросов данных и ответов с данными, о которых соответственно осведомлены устройство связи, агентское устройство связи и одноранговое устройство связи, а также о том, в каком устройстве связи хранятся ассоциированные данные.

6. Сеть по п. 1, в которой запрос данных от клиентского устройства связи является запросом HTTP, и при этом сервер является веб-сервером, при этом каждое клиентское устройство связи содержит в себе устройство хранения, которое хранит список унифицированных указателей ресурсов (URL), о которых осведомлено клиентское устройство связи, каждое агентское устройство связи содержит в себе устройство хранения, которое хранит список URL, о которых осведомлено агентское устройство связи, при этом каждое одноранговое устройство связи содержит в себе устройство хранения, которое хранит список URL, о которых осведомлено одноранговое устройство связи, и при этом в устройстве хранения, хранящем URL, с каждым URL устройство хранения также хранит в себе ноль или более из группы, состоящей из заголовков HTTP, возвращаемых сервером данных для этого URL, списка блоков, которые содержат содержимое URL, при этом блоки представляют собой порции данных, которые вместе формируют все содержимое URL и содержимого блока.

7. Сеть по п. 1, в которой каждое клиентское устройство связи содержит устройство хранения, при этом устройство хранения хранит в себе по меньшей мере одно из группы, состоящей из списка блоков, которые содержат содержимое, ассоциированное с запросом данных, при этом блоки представляют собой порции данных, которые вместе формируют все содержимое, ассоциированное с запросом данных, и содержимого блока, при этом блоки имеют одинаковый размер.

8. Сеть по п. 6, в которой в устройстве хранения, хранящем URL, с каждым URL устройство хранения также хранит в себе список блоков, которые содержат содержимое URL, при этом блоки представляют собой порции данных, которые вместе формируют все содержимое URL, и с каждым блоком данные самого блока, контрольную сумму блока и список одноранговых участников, которые, вероятнее всего, имеют данные для этого блока.

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

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

11. Способ для использования в системе для отправки сообщений между запрашивающим клиентским устройством связи, имеющим клиентское кэш-хранилище, и сервером данных, через агентское устройство связи, имеющее агентское кэш-хранилище и использующее сервер ускорения, который поддерживает список клиентских устройств связи в системе, причем способ содержит этапы, на которых
запрашивающее клиентское устройство связи отправляет идентификатор сервера данных на сервер ускорения;
сервер ускорения ассоциирует одно или более клиентских устройств связи с сервером данных и обеспечивает список из одного или более клиентских устройств связи запрашивающему клиентскому устройству связи;
запрашивающее клиентское устройство связи выбирает одно из обеспеченных клиентских устройств связи, которое должно быть использовано в качестве агентского устройства связи для связи с сервером данных и отправляет агентскому устройству связи сообщение, предназначенное для сервера данных;
агентское устройство связи определяет, приняло ли ранее одно или более клиентских устройств связи ответ на принятое сообщение с сервера данных; и
если имеется одно или более клиентских устройств связи, которые ранее приняли ответ на принятое сообщение с сервера данных, выполняют этапы, на которых
агентское устройство связи отправляет запрашивающему клиентскому устройству связи список из одного или более клиентских устройств связи, которые ранее приняли ответ, при этом одно или более клиентских устройств связи, которые ранее приняли ответ, называются одноранговыми устройствами связи;
запрашивающее клиентское устройство связи извлекает запрошенный ответ в одной или более частях из одного или более одноранговых устройств связи в списке;
запрашивающее клиентское устройство связи сохраняет запрос и ответ в клиентском кэш-хранилище; и
агентское устройство связи сохраняет идентификатор запрашивающего клиентского устройства связи вместе с запросом и ответом в агентском кэш-хранилище.

12. Способ по п. 11, в котором после приема сообщения, предназначенного для сервера данных от запрашивающего клиентского устройства связи, агентское устройство связи проверяет, имеется ли в агентском кэш-хранилище ответ, принятый на идентичное сообщение, отправленное клиентским устройством связи на сервер данных в прошлом, и если агентскому устройству связи не известно о каких-либо клиентских устройствах связи, которые приняли ответ на это сообщение в прошлом, выполняют следующие этапы, на которых
агентское устройство связи отравляет сообщение запрашивающего клиентского устройства связи на сервер данных;
сервер данных отправляет ответное сообщение обратно в агентское устройство связи;
агентское устройство связи сохраняет сообщение запрашивающего клиентского устройства связи и ответное сообщение сервера данных в агентском кэш-хранилище;
агентское устройство связи отправляет ответ сервера данных обратно в запрашивающее клиентское устройство связи; и
запрашивающее клиентское устройство связи сохраняет запрос и ответ в клиентском кэш-хранилище.

13. Способ по п. 11, в котором список из одного или более одноранговых устройств связи включает в себя только одноранговые устройства связи, которые являются наиболее выгодными для запрашивающего клиентского устройства связи с точки зрения скорости приема информации от одноранговых устройств связи.

14. Способ по п. 13, в котором клиентские устройства связи, которые определены агентским устройством связи как наиболее выгодные, являются клиентскими устройствами связи, которые являются ближайшими к запрашивающему клиентскому устройству связи.

15. Способ по п. 11, в котором запросы выбирают из группы, состоящей из HTTP, UDP, DNS, TCP, FTP, POP3, SMTP и SQL.

16. Способ для использования в системе для отправки сообщений между запрашивающим клиентским устройством связи, имеющим клиентское кэш-хранилище, и сервером данных, через агентское устройство связи, имеющее агентское кэш-хранилище и использующее сервер ускорения, который поддерживает список клиентских устройств связи в системе, причем способ содержит этапы, на которых
запрашивающее клиентское устройство связи отправляет идентификатор сервера данных на сервер ускорения;
сервер ускорения ассоциирует одно или более клиентских устройств связи с сервером данных и обеспечивает список из одного или более клиентских устройств связи запрашивающему клиентскому устройству связи;
запрашивающее клиентское устройство связи выбирает одно из обеспеченных клиентских устройств связи, которое должно быть использовано в качестве агентского устройства связи для связи с сервером данных и отправляет агентскому устройству связи сообщение, предназначенное для сервера данных;
агентское устройство связи определяет, приняло ли ранее одно или более клиентских устройств связи ответ на принятое сообщение от сервера данных;
при этом агентское устройство связи разделяет ответ, который оно принимает от сервера данных, на один или более меньших блоков данных и сохраняет эти блоки в агентском кэш-хранилище, в котором данные хранятся в виде списка блоков, из которых они состоят, и для каждого блока хранится контрольная сумма этого блока вместе с блоком, а также список сетевых элементов, о которых известно, что они приняли эту часть данных в прошлом; и
если имеется одно или более клиентских устройств связи, которые ранее приняли ответ на принятое сообщение с сервера данных, выполняют этапы, на которых
агентское устройство связи отправляет запрашивающему клиентскому устройству связи список контрольных сумм блоков, которые содержат ответ сервера данных, где для каждой такой контрольной суммы агентское устройство связи отправляет идентификаторы клиентских устройств связи, которые приняли такие контрольные суммы от агентского устройства связи в прошлом, при этом эти клиентские устройства связи, которые приняли такие контрольные суммы от агентского устройства связи в прошлом, называются одноранговыми участниками;
запрашивающее клиентское устройство связи извлекает ответ или его части, запрашивая блоки в списке от одного или более одноранговых участников в списке, принятом от агентского устройства связи;
запрашивающее клиентское устройство связи сохраняет запрос и ответ в клиентском кэш-хранилище; и
агентское устройство связи сохраняет идентификатор запрашивающего клиентского устройства связи вместе с блоками, которые приняло запрашивающее клиентское устройство связи.

Документы, цитированные в отчете о поиске Патент 2015 года RU2549135C2

Способ и приспособление для нагревания хлебопекарных камер 1923
  • Иссерлис И.Л.
SU2003A1
Станок для изготовления деревянных ниточных катушек из цилиндрических, снабженных осевым отверстием, заготовок 1923
  • Григорьев П.Н.
SU2008A1
Топчак-трактор для канатной вспашки 1923
  • Берман С.Л.
SU2002A1
Способ приготовления мыла 1923
  • Петров Г.С.
  • Таланцев З.М.
SU2004A1
МЕХАНИЗМ ОДНОРАНГОВОЙ ШИРОКОВЕЩАТЕЛЬНОЙ ПЕРЕДАЧИ ИНФОРМАЦИОННОГО СОДЕРЖАНИЯ 2003
  • Верт Джон
  • Месгар Юджин
  • Зараховский Юджин
  • Саретто Чезаре Джон
RU2343536C2

RU 2 549 135 C2

Авторы

Виленски Офер

Шрибман Дерри Б.

Даты

2015-04-20Публикация

2010-10-08Подача