Система и способ использования упакованных сжатых буферов для улучшенной передачи данных между клиентом и сервером

Иллюстрации

Показать все

Изобретение относится к компьютерным системам, в частности к способам передачи данных между клиентскими и серверными приложениями, такими как приложения электронной почты. Техническим результатом является повышение рабочих характеристик указанных соединений. Способ группирования многочисленных наборов ответов на сервере и посылки ответов клиенту одной группой (т.е. «сформированной цепочкой» или «упакованной» группой). Каждый набор ответов может быть изменен и/или сжат. Если клиент принимает группу, то каждый набор обрабатывается отдельно. Клиент может быть выполнен с возможностью передачи размера несжатого набора ответов, которыми он может оперировать. Сервер может использовать эту информацию для создания наборов ответов разрешенного размера и может сжимать или не сжимать наборы ответов. Сервер может формировать цепочки наборов ответов и может продолжать формирование цепочки наборов, сжатых или не сжатых, до тех пор, пока буфер сервера не будет заполнен или не будет близок к заполнению. Сформированный цепочкой набор ответов затем может быть послан клиенту и может обрабатывать каждый набор ответов по отдельности. 7 н. и 16 з.п. ф-лы, 11 ил.

Реферат

Ссылка на родственные заявки

Настоящая заявка требует установления приоритета по дате подачи предварительной заявки на патент США с порядковым номером 60/428153, поданной 20 ноября 2002 г. и включенной здесь в качестве ссылки.

Область техники, к которой относится изобретение

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

Предшествующий уровень техники

Электронная почта стала важным способом передачи данных. Системы электронной почты обычно включают в себя серверный компонент (например, Microsoft Exchange Server) и клиентский компонент (например, Microsoft Outlook или Microsoft Outlook Express). Этими компонентами обычно являются программные приложения, которые конфигурируются для исполнения на вычислительных устройствах (например, серверах, персональных компьютерах (ПК), переносных компьютерах и персональных цифровых помощниках (ПЦП)).

Некоторые типы серверов электронной почты конфигурируются так, чтобы обеспечить доступ к электронной почте через клиентский браузер Интернет (например, Microsoft Internet Explorer), а не через выделенного клиента электронной почты. В этих системах браузер взаимодействует с сервером электронной почты, и любые функции, необходимые для выполнения на клиентской системе, выполняются браузером (например, посредством загрузки языка сценариев JavaScript) или в результате использования Active Server Pages (активных серверных страниц).

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

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

Сервер собирает свои ответы в своем буфере и обеспечивает то, что содержимое его буфера не превышает размера буфера клиента. Если сервер не может завершить никакой запрос в своем буфере (например, так как нет достаточного пространства в буфере), то сервер записывает незавершенные запросы в буфер и посылает их обратно клиенту с завершенными ответами.

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

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

Краткое изложение сущности изобретения

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

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

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

В некоторых вариантах осуществления изобретения клиент может быть сконфигурирован для использования удаленных вызовов процедуры (УВП, RPC) для выполнения запросов. В некоторых других вариантах осуществления заголовком может быть заголовок удаленного вызова процедуры с фиксированной длиной. В некоторых вариантах выполнения заголовок дополнительно может включать в себя индикатор в отношении несжатого размера набора ответов, на обработку которых сконфигурирован клиент.

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

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

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

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

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

Краткое описание чертежей

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

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

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

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

На фиг.4В изображено представление одноэтапного процесса режима быстрой пересылки в соответствии с одним аспектом настоящего изобретения.

На фиг.5 изображена блок-схема, представляющая запрос в соответствии с одним вариантом выполнения настоящего изобретения.

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

На фиг.7 изображено представление сжатия сервером электронной почты в соответствии с одним вариантом выполнения настоящего изобретения.

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

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

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

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

Подробное описание

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

Перед рассмотрением описания различных вариантов выполнения изобретения предусмотрено описание компьютера и сетевой среды, в которой могут быть осуществлены различные варианты выполнения изобретения. Хотя это не требуется, настоящее изобретение может быть осуществлено посредством программ, которые выполняются компьютером. Такие программы, в основном, включают в себя подпрограммы, объекты, компоненты, структуры данных и т.п., которые выполняют определенные задачи или реализуют конкретные абстрактные типы данных. Термин «программа» в том виде, в каком он здесь используется, может подразумевать один программный модуль или многочисленные программные модули, действующие совместно. Термин «компьютер» в том виде, в каком он здесь используется, включает в себя любое устройство, которое электронным образом выполняет одну или несколько программ, такое как персональные компьютеры (ПК), ручные устройства, мультипроцессорные системы, микропроцессорная программируемая бытовая электроника, сетевые ПК, миникомпьютеры, большие ЭВМ, бытовые приборы, имеющие микропроцессор или микроконтроллер, маршрутизаторы, шлюзы, концентраторы и т.д. Изобретение также может быть использовано в распределенных вычислительных средах, в которых задачи выполняются удаленными устройствами обработки, которые соединены посредством сети передачи данных. В распределенной вычислительной среде программы могут быть расположены как на локальных, так и на удаленных запоминающих устройствах.

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

На фиг.2 показан пример базовой конфигурации компьютера 10, на котором может быть осуществлено все или части описанного здесь изобретения. В своей базовой конфигурации компьютер 10 обычно включает в себя по меньшей мере один обрабатывающий блок (процессор) 14 и память 16. Обрабатывающий блок 14 исполняет команды для выполнения задач в соответствии с различными вариантами выполнения изобретения. При выполнении таких задач обрабатывающий блок 14 может передавать электронные сигналы на другие части компьютера 10 и на устройства вне компьютера 10, чтобы получить некоторый результат. В зависимости от точной конфигурации и типа компьютера 10 память 16 может быть энергозависимой (такой как оперативное запоминающее устройство (ОЗУ)), энергонезависимой (такой как постоянное запоминающее устройство (ПЗУ) или флэш-память) или некоторой комбинацией этих двух. Эта наиболее базовая конфигурация изображена на фиг.2 пунктирной линией 18.

Компьютер 10 может иметь дополнительные признаки и/или функциональные возможности. Например, компьютер 10 также может включать в себя дополнительное запоминающее устройство (съемное запоминающее устройство 20 и/или несъемное запоминающее устройство 22), включающее в себя, но не ограничиваясь ими, магнитные или оптические диски или ленту. Запоминающая среда компьютера включает в себя энергозависимую и энергонезависимую, съемную и несъемную среду, реализованную любым способом или по любой технологии для хранения информации, включая исполняемые компьютером команды, структуры данных, программные модули или другие данные. Запоминающая среда компьютера включает в себя, но не ограничивается ими, ОЗУ, ПЗУ, электрически стираемое программируемое ПЗУ (ЭСПЗУ), флэш-память, компакт-диск, цифровой универсальный диск (ЦУД) или другое оптическое запоминающее устройство, магнитные кассеты, магнитную ленту, запоминающее устройство на магнитном диске или другие магнитные запоминающие устройства, или любую другую среду, которая может быть использована для хранения требуемой информации и к которой может быть получен доступ посредством компьютера 10. Любая такая запоминающая среда компьютера может быть частью компьютера 10.

Компьютер 10, предпочтительно, также содержит соединение(я) 24 передачи данных, которое позволяет устройству осуществлять передачу данных на другие устройства. Соединение передачи данных (например, одно из соединений 24 передачи данных) является примером среды передачи данных. Среда передачи данных обычно заключает в себе считываемые компьютером команды, структуры данных, программные модули или другие данные в модулированном сигнале данных, таком как несущий сигнал или другой транспортный механизм, и включает в себя любую среду доставки информации. В качестве примера, а не ограничения, термин «среда передачи данных» включает в себя проводную среду, такую как проводная сеть или непосредственное проводное соединение, и беспроводную среду, такую как акустические, радиочастотные, инфракрасные и другие беспроводные среды. Термин «считываемая компьютером среда» в том виде, в каком он используется здесь, включает в себя как запоминающую среду компьютера, так и среду передачи данных.

Компьютер 10 также может иметь устройства 26 ввода, такие как клавиатура, мышь, перо, устройство речевого ввода, устройство сенсорного ввода и т.д. Также могут быть включены устройства 28 вывода, такие как дисплей 30, громкоговорители, принтер и т.д. Все эти устройства общеизвестны в технике, и нет необходимости здесь их подробно описывать.

Упаковка буфера

На фиг.3 изображен один пример сети 100 электронной почты, в которой может быть осуществлено настоящее изобретение. Сеть 100 электронной почты согласно настоящему изобретению использует обмен запросами и ответами для передачи запросов и данных между клиентскими и серверными компонентами в сети 100 электронной почты. На практике на рабочие характеристики протокола оказывает влияние лежащий в основе транспортный механизм сети передачи данных, используемый для осуществления передачи данных между клиентами и серверами в сети электронной почты, такой как сеть 100 электронной почты. Например, в сети электронной почты, которая использует удаленные вызовы процедуры (УВП, RPC) в качестве лежащего в основе транспортного механизма сети передачи данных, может быть значительно более эффективным выполнение одного удаленного вызова процедуры большего размера (например, 32 кбайта), чем выполнение нескольких удаленных вызовов процедуры меньшего размера (например, 2 кбайта). Одним известным путем улучшения рабочих характеристик такой сети электронной почты является буферизация многочисленных запросов и/или ответов для передачи в одном удаленном вызове процедуры.

В качестве примера на фиг.3 показан обмен запросом и ответом между клиентом 102 электронной почты и сервером 106 электронной почты, один или оба из которых могут быть сконфигурированы, например, в качестве компьютеров 10. В этом примере клиент 102 электронной почты назначает пересылочный буфер 104 (буфер пересылки) и заполняет его запросами, которыми могут быть один или несколько подзапросов или удаленных операций (УОП), подлежащих пересылке на сервер 106 электронной почты. Когда пересылочный буфер 104 будет заполнен (или почти заполнен), клиент 102 электронной почты посылает это содержимое серверу 106 электронной почты, который хранит его в буфере 108 запросов. Сервер 106 электронной почты считывает запросы из буфера 108 запросов и обрабатывает запросы. Обработка каждого запроса создает результат в виде ответа. Эти ответы могут включать в себя данные, запрашиваемые клиентом 102 электронной почты (например, конкретное сообщение электронной почты). Сервер 106 электронной почты хранит эти ответы в буфере 110 ответов.

В соответствии с одним вариантом выполнения настоящего изобретения, так как сервер 106 электронной почты обрабатывает каждый запрос, то он использует указатель для отслеживания, какой запрос является следующим запросом, подлежащим обработке, из буфера 108 запросов. Когда сервер 106 электронной почты определяет, что буфер 110 ответов заполнен (например, в нем осталось менее 8 кбайт из 32 кбайт), то сервер 106 электронной почты прекращает обработку запросов в буфере 108 запросов. Любые оставшиеся запросы, которые не были обработаны (т.е. незавершенные (неотвеченные) запросы), присоединяются к содержимому буфера 110 ответов. Эти незавершенные (неотвеченные) запросы и ответы на завершенные запросы посылаются приемному буферу 112 клиента 102 электронной почты.

В одном варианте выполнения настоящего изобретения клиент 102 электронной почты способен обозначать (указывать) размер любого из буферов 104, 108, 110, 112. Размер ответа обычно больше размера запроса. По этой причине размер буфера 110 ответов и приемного буфера 112 (собирательно, «буферов 110 и 112 ответов») может быть указан клиентом 102 электронной почты большим, чем размер пересылочного буфера 104 и буфера 108 запросов (собирательно, «буферов 104 и 108 запросов»).

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

Некоторые сети электронной почты, в которых используются буферы, например сеть 100 электронной почты, показанная на фиг.3, могут использовать режим быстрой пересылки между клиентом (например, клиентом 102 электронной почты) и сервером (например, сервером 106 электронной почты). Режим быстрой пересылки включает в себя запросы, такие как УОП, выполненные клиентом, которые делятся по меньшей мере на две категории: запросы, которые приводят к инициализации источника данных быстрой пересылки на сервере, и запросы, которые приводят к эффективной пересылке данных от источника данных быстрой пересылки клиенту. Источником данных быстрой пересылки может быть, например, таблица базы данных. Источник данных быстрой пересылки служит в качестве готового временного запоминающего устройства (хранилища) данных, которое позволяет производить обслуживание более поздних запросов на данные с малой задержкой, чем иначе было бы возможно. Иногда вторая категория запроса режима быстрой пересылки делает попытку достижения эффективной пересылки данных посредством точного указания размера ответа. В качестве примера, размер ответа может быть установлен равным размеру всего приемного буфера 112 минус служебные сигналы (накладные расходы) ответа.

На фиг.4А изображена операция быстрой пересылки, имеющая по меньшей мере два цикла запрос-ответ. В первом запросе 401 УОП (например, FXPrepare) инициализирует источник данных быстрой пересылки на сервере 106 электронной почты. На сервере 106 электронной почты обрабатывается только FXPrepare (т.е. инициализируется источник данных быстрой пересылки), и его результат возвращается в первом ответе 402. Во втором запросе 403 УОП (например, FXGetBuffer) запрашивает заполнение сервером 106 электронной почты буфера 110 ответов от высокоскоростного источника данных. Сервер 106 электронной почты освобождает высокоскоростной источник данных в буфер 110 ответов и возвращает результат во втором ответе 404. Если буфер 110 ответов для сервера 106 электронной почты заполнится до того, как освободится (опустошится) высокоскоростной источник данных, могут потребоваться дополнительные УОП FXGetBuffer.

На фиг.4В изображена операция быстрой пересылки, имеющая только один цикл запрос-ответ. В первом запросе 405 обрабатываются как FXPrepare, так и FXGetBuffer сервером 106 электронной почты, и результаты обеих операций возвращаются в первом ответе 406. Результат FXPrepare доступен для FXGetBuffer на сервере 106 электронной почты, так как часть каждого буфера в явной форме определяется как таблица совместно используемых данных.

Желательно уменьшить количество циклов запрос-ответ, так как такое уменьшение приводит к более эффективной пересылке данных. Операция быстрой пересылки, имеющая более чем только один цикл запрос-ответ, может иметь место тогда, когда буфер 110 ответов излишне заполнен, чтобы фиксировать результат УОП FXGetBuffer.

На фиг.5 показан один пример содержимого 120 пересылочного буфера 104 клиента. В этом примере пересылочный буфер 104 содержит заголовок 122 удаленного вызова процедуры (УВП) и несколько запросов 124.

В соответствии с одним аспектом настоящего изобретения заголовок 122 УВП может включать в себя бит 126 сжатия и бит 128 обфускации («изменения»). Бит 126 сжатия указывает, должен ли или нет сервер 106 электронной почты сжимать ответы на запросы. Другая информация может быть предусмотрена в содержимом 120 для указания того, что сервер 106 электронной почты должен сжимать ответы. Сжатие может быть не всегда желательным. Например, если клиент имеет высокоскоростное соединение с малым запаздыванием и не имеет достаточной резервной вычислительной мощности, чтобы эффективно выполнять восстановление (декомпрессию), то клиент может посылать запрос с указанием, что сжатие не требуется. Альтернативно, если клиент имеет достаточную вычислительную мощность и соединение с сервером имеет низкую пропускную способность, то клиент может указать серверу, что ему необходимо сжатие (например, установкой бита указателя сжатия в заголовке).

Бит 128 обфускации («изменения») (с целью «сбить с толку») указывает, должен ли или нет сервер 106 электронной почты «обфусцировать» запросы. «Обфускацией» (изменением) является простая операция, выполняемая для предотвращения посылки по сети данных в виде ясно читаемого текста. Одним примером «обфускации» является выполнение операции XOR (известный способ «обфускации») над запросами перед их посылкой. В некоторых вариантах выполнения вместо «обфускации» может быть использовано шифрование. Снова, другая информация может быть включена в содержимое 120, которая указывает, что запросы должны быть «обфусцированы» или зашифрованы.

Как показано на фиг.5, в некоторых вариантах выполнения клиент 102 электронной почты может быть сконфигурирован так, что включает в себя специальный запрос 130 в содержимом 120, который выдает команду серверу 106 электронной почты ответить на запрос клиента, используя формирование цепочки, описанное ниже.

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

В соответствии с одним вариантом выполнения настоящего изобретения клиент 102 электронной почты может запросить посылку ответов сервером 106 электронной почты с формированием цепочки или без формирования цепочки. На этапе 602 сервер 106 электронной почты проверяет запросы 124 для определения, включают ли в себя запросы запрос на формирование цепочки (например, специальный запрос 130). Если нет, то тогда процесс от этапа 602 переходит на этап 604, где сервер 106 электронной почты начинает составление ответов на запросы 124. Один пример процесса составления ответа без формирования цепочки показан на фиг.8, и этапы на фиг.7 будут применимы для этого примера в этом описании.

На этапе 604 (фиг.6) сервер 106 электронной почты создает заголовок 140. На этапе 606 ответы 142 (фиг.6) на запросы 124 извлекаются и запоминаются в буфере 110 ответов. Если сервер 106 электронной почты сгенерировал достаточное количество ответов, так что ответы 142 и заголовок 140 заполняют или почти заполняют буфер 110 ответов, то сервер 106 электронной почты прекращает обработку запросов. Заполнен ли или почти заполнен буфер 110 ответов, может быть определено сервером 106 электронной почты и/или клиентом 102 электронной почты. В качестве примера, буфер 110 ответов может считаться заполненным, когда в нем осталось менее 8 Кбайт от первоначального буфера емкостью 32 Кбайта.

Если клиент 102 электронной почты указал, что он поддерживает сжатие (например, посредством надлежащей установки бита 126 сжатия), то сервер 106 электронной почты сжимает ответы в буфере 110 ответов в сжатый набор 144 ответов 142 (фиг.7) на этапе 608. Аналогично, также на этапе 608, если клиент 102 электронной почты указал, что он поддерживает «обфускацию» (например, посредством надлежащей установки бита 128 «обфускации»), то сервер 106 электронной почты может «обфусцировать» или зашифровать ответы 142, как ему указано.

Любые запросы, которые не были обработаны, присоединяются к ответам в буфере 108 запросов на этапе 610. Эти необработанные ответы могут быть помещены в неиспользуемую память после сжатия, показанную, в основном, в качестве памяти 146 на фиг.6. Сервер 106 электронной почты затем посылает ответы и незавершенные запросы клиенту 102 электронной почты на этапе 612.

Как можно видеть в примере, описанном выше и показанном на фиг.7, неиспользуемая память после сжатия (т.е. память 146) при ответе без формирования цепочки может быть значительной. В соответствии с одним аспектом настоящего изобретения количество неиспользуемой памяти может быть минимизировано, используя процесс формирования цепочки. Однако может быть полезным способ без формирования цепочки, описываемый до сих пор, например, когда клиент 102 электронной почты не требует формирования цепочки, например в УОП, которая не запрашивает режим быстрой пересылки.

Если клиент 102 электронной почты указывает, что сервер 106 электронной почты должен использовать формирование цепочки, то тогда от этапа 602 процесс переходит на этап 614, где сервер 106 электронной почты создает первый заголовок 150 (фиг.7). На фиг.8 показан пример процесса составления ответа для формирования цепочки и используется с описанием этапов 614-620.

На этапе 616 сервер 106 электронной почты извлекает и заполняет буфер 110 ответов ответами 152. Снова, буфер 110 ответов может считаться заполненным, если он достигает заранее определенного предела. Может потребоваться только один ответ для заполнения буфера 110 ответов, однако в том смысле, как он используется здесь, термин «набор ответов» означает один или несколько ответов. На этапе 618, как только буфер 110 ответов заполнен или почти заполнен, то сервер 106 электронной почты сжимает и/или «обфусцирует» ответы в буфере 110 ответов в соответствии с командами от клиента 102 электронной почты (например, согласно биту 126 сжатия и/или биту 128 «обфускации»). Создается сжатый набор 154 ответов, оставляя большой раздел 156 неиспользуемой памяти в буфере 108 запросов.

После сжатия и/или «обфускации» на этапе 620 выполняется определение, могут ли дополнительные ответы быть размещены в буфере 110 ответов. Снова, могут ли дополнительные ответы быть размещены, может быть определено клиентом 102 электронной почты или сервером 106 электронной почты. Однако после первого сжатия ожидается, что будет доступно дополнительное пространство. Если дополнительное пространство доступно, то процесс возвращается на этап 614, где сервер 106 электронной почты создает и присоединяет второй заголовок 158 (фиг.8) и снова начинает обработку запросов (этап 616).

Как только буфер 110 ответов заполнен или почти заполнен ответами, то сервер 106 электронной почты сжимает и/или «обфусцирует» вновь добавляемые ответы 160 на этапе 618. На этапе 620 снова выполняется определение, остается ли пространство для других ответов. Если остается, то процесс еще раз возвращается обратно на этап 614, где присоединяется третий заголовок, и сервер 106 электронной почты еще раз заполняет буфер 110 ответов ответами и сжимает и/или «обфусцирует» ответы (этапы 616 и 618). Этот процесс повторяется до тех пор, пока не будут завершены все запросы или буфер 110 ответов не будет заполнен или почти заполнен заголовками и соответствующими сжатыми ответами. Как только буфер 110 ответов заполнен или почти заполнен сжатыми ответами и заголовками (показан в нижней части фиг.8), то на этапе 620 процесс переходит на этап 610, где сервер 106 электронной почты присоединяет любые незавершенные запросы (если они есть) и посылает содержимое буфера 110 ответов клиенту 102 электронной почты.

Клиент 102 электронной почты, который принимает содержимое буфера 110 ответов в его приемный буфер 112, затем может обрабатывать каждый набор ответов между заголовками. Если наборы ответов сжаты и/или «обфусцированы», то тогда клиент 102 электронной почты может восстановить (выполнить декомпрессию) или выполнить операцию, обратную «обфускации». В этом случае клиент 102 электронной почты все еще имеет множество наборов ответов, которые он может затем обработать.

Как можно видеть в результате различий между данными, посылаемыми в процессе без формирования цепочки на фиг.7 и в процессе с формированием цепочки на фиг.8, формирование цепочки позволяет сформировать в цепочку или упаковать вместе множество пар заголовок/ответ и послать в одной «группе», тем самым потенциально снижая количество двойных прохождений между клиентом 102 электронной почты и сервером 106 электронной почты. Этот процесс упоминается здесь как «формирование цепочки» или «упаковка» ответов. Формирование цепочки может быть значительно более эффективным для сети, особенно в среде с низкой пропускной способностью. В соответствии с одним вариантом выполнения изобретения сервер 106 электронной почты может обеспечивать формирование цепочки с запросами режима быстрой пересылки и может не обеспечивать формирование цепочки с запросом, который не является режимом быстрой пересылки.

На фиг.9 показан более подробный пример буфера 159 ответов. В этом примере каждый заголовок 1611, 1612 … 161N включает в себя указатель 1621 … 162N на следующий заголовок в буфере. Альтернативно, заголовок 161 может включать в себя сжатый размер соответствующего ответа. В любом случае, этот признак позволяет клиенту 102 электронной почты легче декодировать сжатую группу (пакет) при приеме, потому что клиент 102 электронной почты будет знать размер каждого ответа и расположение начала следующего ответа.

Каждый заголовок 161 также может включать в себя информацию 1641 … 164N, например, в виде битового файла, которая указывает, соответствует ли заголовок 161 последнему ответу в буфере. Заголовок 161 также может включать в себя другую информацию, такую как несжатый размер соответствующей ответной информации.

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

Использование буферов ответов большего объема

Как описано выше, клиент 102 электронной почты может быть сконфигурирован так, чтобы информировать сервер 106 электронной почты о том, какой размер буферов запросов и/или ответов будет использоваться. Например, в одном варианте выполнения настоящего изобретения каждый буфер 104 и 108 запросов составляет 32 кбайта, и оптимальный размер каждого буфера 110 и 112 ответов составляет 96 кбайт, отношение 3:1.

Хотя клиент 102 электронной почты может указать буферы 110 и 112 ответов большего объема, клиент 102 электронной почты может быть сконфигурирован так, чтобы работать с порциями данных, которые меньше, чем фактический размер буферов 110 и 112 ответов. Например, буферы объемом 96 кбайт могут быть указаны для буферов 110 и 112 ответов, но клиент 102 электронной почты может потребовать, чтобы все порции данных ответов составляли бы по 32 кбайта или менее. Упаковка или формирование цепочки настоящего изобретения делает такую систему действующей.

Вариант выпол