KR20040044356A - 개선된 클라이언트 서버 통신을 위한 패킹된 압축 버퍼를이용하는 시스템 및 방법 - Google Patents

개선된 클라이언트 서버 통신을 위한 패킹된 압축 버퍼를이용하는 시스템 및 방법 Download PDF

Info

Publication number
KR20040044356A
KR20040044356A KR1020030081552A KR20030081552A KR20040044356A KR 20040044356 A KR20040044356 A KR 20040044356A KR 1020030081552 A KR1020030081552 A KR 1020030081552A KR 20030081552 A KR20030081552 A KR 20030081552A KR 20040044356 A KR20040044356 A KR 20040044356A
Authority
KR
South Korea
Prior art keywords
response
request
client
buffer
responses
Prior art date
Application number
KR1020030081552A
Other languages
English (en)
Other versions
KR100984457B1 (ko
Inventor
워렌조셉알.
프로엘리치칼
보닐라니콜에이.
레마첸드레미에이.
그레이로날드이.
던알렉
하트웰아아론
고다드스티븐에프.
커티스브렌트
파워브렌단
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=32302756&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR20040044356(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20040044356A publication Critical patent/KR20040044356A/ko
Application granted granted Critical
Publication of KR100984457B1 publication Critical patent/KR100984457B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Systems (AREA)

Abstract

서버 측에서 다중의 응답 세트를 단일의 묶음(즉, "체이닝 처리된" 또는 "패킹된" 묶음)("chained" or "packed" batch)으로 전송하는 방법이 개시된다. 상기한 각각의 응답 세트는 모호화(obfuscate) 및/또는 압축 처리될 수 있다. 상기한 묶음이 클라이언트측에 수신되면, 각 응답 세트는 개별적으로 처리된다. 클라이언트는 자신이 처리할 수 있는 응답 세트의 비압축 사이즈를 통신하도록 구성된다. 서버는 상기한 정보를 이용하여 올바른 사이즈의 응답 세트를 생성하여, 이를 압축 또는 비압축 처리한다. 서버는 상기한 응답 세트를 체이닝 처리하며, 이러한 처리를 자신의 버퍼가 충만 또는 거의 충만된 상태로 될 때까지, 상기한 체이닝을 계속하거나 또는 압축 또는 비압축 처리한다. 체이닝 처리된 응답 세트는 클라이언트측에 전송되어 각각의 응답 세트에 대해 개별적으로 처리된다.

Description

개선된 클라이언트 서버 통신을 위한 패킹된 압축 버퍼를 이용하는 시스템 및 방법{SYSTEM AND METHOD FOR USING PACKED COMPRESSED BUFFERS FOR IMPROVED CLIENT SERVER COMMUNICATIONS}
본 출원은 2002년 11월 20일자로 출원된 미국 가출원 제60/428,153호에 대해 우선권을 주장한다.
본 발명은 컴퓨터 네트워크에 관한 것으로, 보다 구체적으로는 이메일 애플리케이션 등의 클라이언트와 서버 사이의 통신 방법에 관한 것이다.
이메일은 중요한 통신 도구가 되었다. 전형적으로, 이메일 시스템은 서버 컴포턴트(예컨대, 마이크로소프트 익스체인지 서버)와 클라이언트 컴포넌트(예컨대, 마이크로소프트 아웃룩 또는 마이크로소프트 아웃룩 익스프레스)를 포함한다. 이들 컴포넌트는 전형적으로 컴퓨팅 디바이스(예컨대, 서버, PC, 랩탑 및 PDA) 상에서 실행되도록 구성된 소프트웨어 애플리케이션이다.
이메일 서버의 유형으로는 전용의 이메일 클라이언트 대신에 인터넷 브라우저 클라이언트(예컨대, 마이크로소프트 인터넷 익스프로러)를 통하여 이메일에 액세스할 수 있도록 구성된 것들도 있다. 이들 시스템에서는, 상기한 브라우저가 상기한 이메일 서버와 상호작용(interact)하여, 클라이언트 시스템 상에서 수행될 필요가 있는 기능을 상기한 브라우저를 통하여 [예컨대, 자바스크립트(Javascript)를 다운로드함으로써] 또는 액티브 서버 페이지(Active Server Page)를 이용하여 수행한다.
클라이언트와 서버는 대역폭이 낮고 레이턴시가 높은 네트워크(예컨대, 저속의 다이얼업 접속)에 접속되는 경우가 있으므로, 다수의 이메일 클라이언트 및 서버는 개류중의 명령을 저장한 다음 수개의 명령을 함께 전송하도록 구성된다. 예를 들어, 폴더 열기 커맨드 및 캘린더 열기 커맨드를 전송하는 대신에, 클라이언트는 첫번째의 명령을 저장하고 이를 두번째의 명령과 결합한 다음, 상기한 2개의 명령을 함께 전송한다. 상기한 저장, 결합 및 전송의 방식에서는, 각각의 전송과 관련한 오버헤드가 존재하므로, 네트워크 및 서버의 리소스를 효과적으로 사용할 수 있게 되는 경향이 있다.
일부 종래의 시스템에서는 클라이언트 및 서버 각각에 할당되어 있는 단일의 버퍼에 의존하여, 함께 전송되기 위해 대기하고 있는 명령 및/또는 데이터를 위한 데이터 저장 영역으로 기능하도록 하였다. 이러한 시스템의 일례에 따르면, 클라이언트는 버퍼를 이용하여 서버에 전송될 명령 및 데이터를 저장한다. 상기한 버퍼가 완전히 충만되거나 거의 충만된 상태로 되면, 클라이언트는 상기한 버퍼의 컨텐츠를 서버에 전송한다. 서버는 수신한 컨텐츠를 버퍼에 저장하고 상기한 명령을 파싱하여 실행한다. 여기서, 서비스될 다음의 요청(request)을 지정하기 위해 포인터를 사용할 수도 있다.
서버는 자신의 버퍼 내에 응답(response)을 어셈블하여, 자신의 버퍼의 컨텐츠가 클라이언트 버퍼의 사이즈를 초과하지 않도록 한다. 또한, [버퍼 내의 충분한 공간이 없기 때문에] 서버에서 자신의 버퍼 내의 임의의 요청을 완수할 수 없는 경우에는, 서버는 미완수 요청(uncompleted request)을 버퍼에 기록하고, 이를 미완수 응답과 함께 상기한 클라이언트에 리턴한다.
시스템에 따라서는, 클라이언트가 자신의 버퍼에 할당하고자 하는 메모리의양을 지정할 수 있도록 구성될 수 있다. 예를 들어, 클라이언트가 서버에 대하여 자신의 버퍼에 32KB만을 할당할 것임을 표시할 수도 있다. 그러면, 서버에서는 그 응답으로서 상기한 클라이언트에 대하여 1회에 32KB 이상을 전송하지 않을 것임을 보장할 것이다.
다수의 이메일 클라이언트와 서버 사이에서 사용되는 낮은 대역폭과 높은 레이턴시의 접속을 고려하면, 성능 개선을 위한 시스템 및 방법이 필요하다.
도 1은 본 발명이 채용될 수 있는 컴퓨터 네트워크를 나타낸 블록도.
도 2는 본 발명이 채용될 수 있는 컴퓨터의 구조를 나타낸 블록도.
도 3은 본 발명에 따른 이메일 클라이언트 및 이메일 서버 사이의 요청(request) 및 응답(response)의 교환을 나타낸 블록도.
도 4의 (a)는 본 발명의 일면에 따른 2단계 고속 전송 모드 프로세스를 나타낸 도면.
도 4의 (b)는 본 발명의 일면에 따른 1단계 고속 전송 모드 프로세스를 나타낸 도면.
도 5는 본 발명의 일 실시예에 따른 요청을 나타낸 블록도.
도 6은 본 발명의 일 실시예에 따른 이메일 서버에서의 요청 처리의 프로세싱을 나타낸 순서도.
도 7은 본 발명의 일 실시예에 따른 이메일 서버에서의 압축을 나타낸 도면.
도 8은 본 발명의 일 실시예에 따른 이메일 서버에서의 응답 압축 및 체이닝을 나타낸 도면.
도 9는 본 발명의 일 실시예에 따른 이메일 서버에서의 응답 버퍼의 콘텐츠를 나타낸 도면.
도 10은 본 발명의 일 실시예에 따른 이메일 서버에서 수행되는 처리 단계를 개략적으로 나타낸 순서도로서, 이메일 클라이언트에 대한 응답 프레임을 이보다 큰 버퍼 내에 제공하고 있다.
도 11은 본 발명의 일 실시예에 따른 이메일 서버에서 수행되는 처리 단계를 개략적으로 나타낸 순서도로서, 서버에 대해 기교(trick)를 부려 응답 버퍼에 추가의 응답을 추가시키도록 하고 있다.
<도면의 주요 부분에 대한 부호의 설명>
102 : 이메일 클라이언트
106 : 이메일 서버
104 : 전송 버퍼
112 : 수신 버퍼
108 : 요청 버퍼
110 : 응답 버퍼
126 : 압축 비트
128 : 모호화 비트
124 : 요청
130 : 체이닝 요청
이하, 본 발명의 이해를 도모하기 위한 본 발명의 개요에 대해 설명한다. 그러나, 이 개요는 본 발명의 넓은 의미의 개요를 의미하는 것은 아니다. 또한, 본 발명의 필수(key/critical) 요소를 의미하거나 본 발명의 범주를 설명하고자 하는 것도 아니다. 단지, 그 목적은 후술하는 실시예에 대한 설명의 서두로서, 본 발명의 개념을 간단히 기술하기 위한 것이다.
먼저, 응답을 요청하는 방법에 대해 설명한다. 일 실시예에서, 상기한 방법은 이메일 클라이언트와 이메일 서버 사이에서의 이용에 대해 최적화된다. 상기한 방법은 클라이언트 상의 제1 버퍼를 할당한 다음, 이 버퍼를 사용하여 서버에 대하여 하나 또는 그 이상의 요청을 어셈블하는 것을 포함한다. 상기한 클라이언트는 제1 버퍼의 컨텐츠에 헤더를 부가하고, 상기한 헤더에는 상기한 서버의 요청에 대한 응답이 클라이언트에 리턴되기 전에 압축될 지의 여부에 대한 표시자를 포함하도록 구성될 수 있다.
상기한 서버에서는 클라이언트에 요청을 전송하기 전에 상기한 요청을 모호화(obfuscate) 또는 암호화(encrypt)할 수도 있다. 이러한 기능을 위한 대응하는 표시자 비트가 상기한 헤더에 포함될 수도 있다.
구현예에 따라서는, 클라이언트에서 RPC(Remote Procedure Calls: 원격 프로시저 호출)를 이용하여 상기한 요청을 구현하도록 구성될 수도 있다. 이들 구현예에서는, 상기한 헤더가 고정된 길이(fixed length)의 원격 프로시저 호출(RPC) 헤더일 수도 있다. 일부 실시예에서는, 상기한 헤더에 추가의 표시자를 포함시켜, 클라이언트에서 처리하도록 구성된 응답 세트의 비압축 사이즈를 표시하도록 할 수도 있다.
다음으로, 서버로부터 클라이언트에 대하여 데이터를 전송하는 방법을 설명한다. 상기한 방법은 클라이언트로부터 일단의(batch) 요청을 수신하는 단계를 포함하며, 상기한 요청에는 서버가 체이닝(chaining) 처리를 이용하여 상기한 요청에 대한 응답을 전송하는 요청이 포함된다. 그러면, 서버는 그 응답으로서, 클라이언트에 대하여 제1 세트의 응답을 어셈블하고, 상기한 조의 응답을 압축한 다음, 헤더를 부가하여 상기한 제1 세트의 응답에 대한 정보(예컨대, 그 사이즈)를 제공한다. 서버는 이 프로세스를 수개의 응답 세트에 대하여 반복 수행한 다음, 상기한 헤더 및 응답을 클라이언트에 대하여 한 묶음으로 전송한다. 각각의 헤더에는 상기한 묶음 내에 다음 헤더에 대한 포인터를 포함시켜, 클라이언트로 하여금 상기한 응답을 올바르게 복호화하도록 할 수도 있다. 상기한 묶음 내의 최종 헤더는 특수 태그로써 구성하여, 그것이 최종의 응답에 대응하는 것임을 표시할 수도 있다.
구현예에 따라서는, 클라이언트가 자신의 버퍼 사이즈를 서버에 대해 통신하도록 구성될 수도 있다. 그러면, 서버에서는 이 정보를 이용하여 그 자신의 버퍼 사이즈를 설정하도록 함으로써, 클라이언트가 응답을 수신하는 때에 그 응답으로 인해 클라이언트 버퍼가 오버플로우되지 않도록 할 수 있다. 또한, 클라이언트는 자신이 처리하도록 구성된 응답 세트의 비압축 사이즈를 통신하도록 구성될 수도 있다. 그러면, 서버에서는 이 정보를 이용하여 정확한 사이즈의 응답 세트를 생성하고, 이들 응답 세트를 압축하거나 압축하지 않거나 할 수 있다. 또한, 서버는 상기한 응답 세트를 체이닝 처리하여, 상기한 서버의 버퍼가 완전히 충만되거나 거의 충만된 상태로 될 때까지, 상기한 체이닝, 압축 또는 비압축 처리를 반복 수행한다. 그 다음, 상기한 체이닝 처리된 응답 세트는 클라이언트에 전송되어, [가능한 경우] 상기한 세트를 압축 해제하고, 각각의 응답 세트를 개별적으로 처리한다.
상기한 서버 측에서 다중의 응답 세트를 압축하여 이들을 단일의 묶음(즉, "체이닝 처리된" 또는 "패킹된" 묶음)("chained" or "packed" batch)으로 전송함으로써, 클라이언트와 서버 사이의 통신 성능이 향상될 가능성이 있다. 종래의 시스템에서도 클라이언트와 서버 사이에 전송되는 총 바이트의 수를 감소시키기 위해 압축을 이용하고 있지만, 버퍼를 전송하기 전에 패킹함으로써, 각 세션 마다 버퍼에 보다 많은 데이터가 추가되어 전송되게 되므로, 높은 레이턴시의 네트워크에서의 총 라운드트립(roundtrip)의 수를 감소시킨다.
본 기술은 그 적용 범위가 넓지만, 특히 이메일 클라이언트 및 이메일 서버 사이의 동작에 적합하다. 예를 들어, 상기한 방법은 마이크로소프트 아웃룩에서카피메시지(CopyMessages) 등의 고속 전송 동작에 사용될 수 있다. 상기한 기능은 메시지의 헤더를 서버로부터 클라이언트에 복사하는 것이다.
본 발명의 기타 특징 및 장점을 아래에서 설명하겠으며, 이 설명으로부터 특징 및 장점의 일부는 명백하게 드러나겠지만, 본 발명을 실시함으로써 알게 될 수도 있다. 또한, 본 발명의 특징 및 장점은 첨부된 청구항에 제시된 수단 및 그 조합에 의해 실현될 것이다. 본 발명의 전술한 특징 및 그 외의 특징들은 하기의 설명 및 청구항으로부터 충분히 이해될 것이며, 후술하는 본 발명의 실시예를 통해 알게 될 것이다. 하기의 실시예 부분에서의 표제는 명세서의 양식을 위한 것일뿐이며, 본 발명 또는 청구항의 범위를 제한 또는 변형하기 위한 것은 아니다.
기타의 장점들은 도면을 참조하여 기술하고 있는 하기의 설명으로부터 보다 명확하게 될 것이다.
<실시예>
이하, 본 발명의 여러가지 일면에 대해 기술한다. 본 발명의 충분한 이해를 도모하기 위하여, 설명의 편의상 특정 구성 및 상세에 대해 설명하기로 한다. 그러나, 본 기술분야의 숙련된 자들은 상기한 특정 상세가 없이도 본 발명을 실시할 수 있을 것이다. 또한, 본 발명의 이해를 방해하지 않기 위하여, 공지의 특징에 대해서는 설명을 생략하거나 간략히 하기로 한다.
본 발명의 실시예를 설명하기에 앞서, 본 발명의 각종 실시예가 채용될 수 있는 컴퓨터 및 네트워킹 환경에 대해 설명하기로 한다. 반드시 필요한 것은 아니지만, 본 발명은 컴퓨터에 의해 실행되는 프로그램에 의해 구현될 수도 있다. 일반적으로, 이러한 프로그램은 특정 태스크를 수행하거나 특정 추상 데이터 타입을 구현하는 루틴, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 여기서, 용어 "프로그램"이라 함은, 단일의 프로그램 또는 함께 동작하는 다중의 프로그램 모듈을 의미한다. 또한, 상기한 용어 "컴퓨터"라 함은, PC, 핸드핼드(hand-held) 디바이스, 멀티프로세서 시스템, 마이크로프로세서-베이스 프로그래머블 정보 가전(consumer electronics), 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 마이크로프로세서 또는 마이크로컨트롤러를 구비한 가전 제품(consumer appliances), 라우터, 게이트웨이, 허브 등, 하나 또는 그 이상의 프로그램을 전자적으로 실행하는 임의의 장치를 포함한다. 본 발명은 통신 네트워크를 통해 연결되어 있는 원격 처리 장치에 의해 태스크가 수행되는 분산형 컴퓨팅 환경에 채용될 수도 있다. 분산형 컴퓨팅 환경에서는, 프로그램이 로컬 및 원격 메모리 스토리지 디바이스에 위치할 수 있다.
이하, 도 1을 참조하여, 본 발명이 채용될 수 있는 네트워크 환경의 일례를 설명하기로 한다. 예시된 네트워크는 구름으로 표시한 네트워크(11)를 통하여 서로 통신하는 수개의 컴퓨터(10)를 포함한다. 상기한 네트워크(11)는 라우터, 게이트웨이, 허브 등 다수의 공지의 컴포넌트를 포함하여, 유선 및/또는 무선 매체를 통한 컴퓨터(10)의 통신을 가능하게 한다. 네트워크(11)를 통하여 서로 상호작용하는 과정에서, 하나 또는 그 이상의 컴퓨터(10)는 다른 컴퓨터(10)에 대하여 클라이언트, 서버 또는 피어(peer)로서 작용할 수 있다. 따라서, 비록 본 명세서에서는 전술한 모든 유형의 컴퓨터에 대해 기술하고 있지는 않지만, 본 발명의 각종 실시예들은 클라이언트, 서버, 피어 또는 그 조합에 대해서도 실시될 수 있다.
도 2를 참조하면, 본 명세서에서 기술하고 있는 본 발명의 전부 또는 일부가 구현될 수 있는 컴퓨터(10)의 기본 구성예가 도시되어 있다. 가장 기본적인 구성으로서, 컴퓨터(10)는 전형적으로 적어도 하나의 프로세싱 유닛(14)과 메모리(16)를 포함한다. 프로세싱 유닛(14)은 본 발명의 각종 실시예에 따라서 명령을 실행하여 태스크를 수행한다. 프로세싱 유닛(14)은 태스크를 수행함에 있어서 컴퓨터(10)의 기타 부분 및 컴퓨터(10) 외부의 디바이스에 대하여 전자 신호를 전송하여 소정의 결과를 야기한다. 컴퓨터(10)의 정확한 구성 및 유형에 따라, 메모리(16)는 활성(RAM 등), 불활성(ROM 또는 플래시 메모리 등) 또는 이들의 조합일 수 있다. 가장 기본적인 구성을 도 2에서 점선(18)으로 표시하였다.
컴퓨터(10)는 추가의 특징 및/또는 기능을 구비할 수도 있다. 예를 들어, 컴퓨터(10)는, 이것에 국한되지는 않지만, 자기식 또는 광학식 디스크 또는 테이프를 포함하여, 추가의 스토리지(착탈식 스토리지(20) 및/또는 비착탈식 스토리지(22))를 포함할 수도 있다. 컴퓨터 스토리지 매체는 컴퓨터-실행가능 명령, 데이터 구조, 프로그램 모듈 또는 기타의 데이터를 포함하는 정보의 스토리지를 위한 임의의 방법 또는 기술에 의해 구현된 활성 및 불활성, 착탈식 및 비착탈식 매체를 포함한다. 컴퓨터 스토리지 매체로는, 이것에 국한되지는 않지만, RAM, ROM, EEPROM, 플래시 메모리, CD-ROM, DVD(Digital Versatile Disk) 또는 기타 광학식 스토리지, 자기식 카세트, 자기식 테이프, 자기식 디스크 스토리지 또는 기타의 자기식 스토리지 디바이스, 또는 원하는 정보를 저장하는데 사용할 수 있으며컴퓨터(10)에 의해 액세스가 가능한 임의의 기타 매체를 포함한다. 상기한 임이의 컴퓨터 스토리지 매체는 컴퓨터(10)의 일부분을 구성할 수도 있다.
또한, 상기한 컴퓨터(10)에는 상기한 디바이스들의 상호 통신을 가능하게 하는 통신 접속부(24)가 포함되는 것이 바람직하다. 통신 접속부(예컨대, 상기한 통신 접속부(24) 중의 하나)는 통신 매체의 일례이다. 통신 매체는 전형적으로 컴퓨터-판독가능 명령, 데이터 구조, 프로그램 모듈 또는 기타 데이터를 반송파 또는 기타 트랜스포트 메커니즘 등의 변조 데이터 신호의 형태로 구체화하고 있으며, 임의의 정보 전달 매체를 포함한다. 예를 들어, 상기한 용어 "통신 매체"라 함은, 이것에 국한되지는 않지만, 유선 네트워크 또는 고정(direct-wired) 접속 등의 유선 매체와, 어쿠스틱(acoustic), RF, 적외선 및 기타 무선 접속 등의 무선 매체를 포함한다. 또한, 본 명세서에서 사용된 용어 "컴퓨터-판독가능 매체"라 함은, 컴퓨터 스토리지 매체 및 통신 매체 양자를 포함한다.
상기한 컴퓨터(10)는 키보드, 마우스, 펜, 음성 입력 장치, 터치식 입력 장치 등의 입력 디바이스(26)를 구비할 수도 있다. 또한, 디스플레이(30), 스피커, 프린터 등의 출력 디바이스(28)를 포함할 수도 있다. 이들 디바이스들에 대해서는 본 기술분야에 공지된 것들이므로, 더 이상의 설명은 생략하기로 한다.
(버퍼 패킹)
도 3을 참조하면, 본 발명이 구현될 수 있는 이메일 네트워크(100)의 일례가 도시되어 있다. 본 발명의 이메일 네트워크(100)는 요청 및 응답의 교환을 통하여 이메일 네트워크(100) 내의 클라이언트와 서버 컴포넌트 사이에서 질의(query)와데이터를 전달한다. 실제로, 프로토콜의 성능은 예컨대 이메일 네트워크(100) 등의 이메일 네트워크 내의 클라이언트와 서버 사이에서의 통신을 구현하는데 사용되는 하층(underlying)의 통신 네트워크 트랜스포트 메커니즘에 의해 영향을 받을 수 있다. 예를 들어, 상기한 하층 통신 네트워크 트랜스포트 메커니즘으로서 원격 프로시저 호출(RPC) 방식을 이용하는 이메일 네트워크에서는, 작은 사이즈(예컨대, 2KB)의 수개의 원격 프로시저 호출을 생성하기 보다는, 보다 큰 사이즈(예컨대, 32KB)의 단일의 원격 프로시저 호출을 생성하는 것이 보다 효과적일 것이다. 이러한 이메일 네트워크에서의 성능 개선책으로는, 다중의 전송 요청 및/또는 응답을 단일의 원격 프로시저 호출로 버퍼링 처리하는 방법이 공지되어 있다.
일례로서, 도 3은 이메일 클라이언트(102)와 이메일 서버(106) 사이의 요청 및 응답의 교환을 나타낸 것으로서, 이들 양자 또는 그 중 하나는 컴퓨터(10)로서 구성될 수 있다. 상기한 예에서, 이메일 클라이언트(102)는 전송 버퍼(104)를 할당하여, 상기한 이메일 서버(106)에 대해 전송될 요청- 이 요청은 하나 또는 그 이상의 하위 요청(sub-request) 또는 원격 동작(ROPs: remote operations)일 수 있음 -을 상기한 버퍼에 채운다. 전송 버퍼(104)가 충만된 경우(또는 거의 충만된 경우), 이메일 클라이언트(102)는 그 컨텐츠를 이메일 서버(106)에 대해 전송하고, 이메일 서버(106)는 이것을 요청 버퍼(108) 내에 저장한다. 그러면, 이메일 서버(106)는 요청 버퍼(108) 내의 요청을 판독하여 그 요청을 처리한다. 각각의 요청은 처리되어 그 결과가 응답의 형태로 산출된다. 이들 응답에는 이메일 클라이언트(102)에 의해 요청된 데이터(예컨대, 이메일 메시지)가 포함될 수도 있다.상기한 이메일 서버(106)는 이들 응답을 응답 버퍼(110)에 저장한다.
본 발명의 일 실시예에 따르면, 이메일 서버(106)에서 각각의 요청을 처리할 때, 포인터를 이용하여 상기한 요청 버퍼(108)로부터 다음에 처리될 요청이 무엇인지를 추종하도록 한다. 이메일 서버(106)에서 상기한 응답 버퍼(110)가 충만한 것으로 판정한 경우(예컨대, 전체 32KB 중 8KB 미만이 남은 경우), 이메일 서버(106)는 요청 버퍼(108) 내의 요청 처리를 중지한다. 아직 처리되지 않은 나머지 요청들(미완수 요청)은 응답 버퍼(110)의 컨텐츠에 부가된다. 이들 미완수 요청 및 그에 대한 응답은 이메일 클라이언트(102) 측의 수신 버퍼(112)에 전송된다.
본 발명의 일 실시예에서는, 이메일 클라이언트(102)에서 버퍼들(104, 108, 110, 112)의 사이즈를 임의로 지정할 수 있도록 하고 있다. 응답의 사이즈는 요청의 사이즈보다 큰 것이 일반적이다. 이 때문에, 응답 버퍼(110) 및 수신 버퍼(112)(이들을 총괄하여 "응답 버퍼(110 및 112)")의 사이즈는, 전송 버퍼(104) 및 요청 버퍼(108)(이들을 총괄하여 "요청 버퍼(104 및 108)")의 사이즈보다 크도록 이메일 클라이언트(102)에 의해 지정될 수도 있다.
본 발명자가 인식하고 있는 종래의 이메일 네트워크 시스템에서는, 이메일 클라이언트와 이메일 서버측에서 단일의 버퍼만을 사용하고 있었기 때문에, 이러한 기능을 수행할 수 없었다. 본 출원의 우선권 주장의 기초가 되는 가출원 명세서의 배경 기술 설명란에는, 이메일 클라이언트와 이메일 서버가 각각 2개의 버퍼를 갖는 이메일 네트워크를 기술하고 있지만, 본 발명 이전에 클라이언트와 서버측에서 하나 이상의 버퍼를 사용한 이메일 네트워크는 존재하지 않았다.
버퍼를 이용하고 있는 이메일 네트워크로서, 예를 들어 도 3에 도시된 이메일 네트워크(100)에서는, 클라이언트(예컨대, 이메일 클라이언트(102))와 서버(예컨대, 이메일 서버(106)) 사이에 고속 전송 모드(Fast Transfer Mode)를 채용할 수 있다. 고속 전송 모드는 클라이언트에 의한 ROP 등의 요청- 이 요청은 적어도 2개의 카테고리, 즉 서버측에서 고속 전송 데이터 소스의 초기화를 초래하는 요청과, 고속 전송 데이터 소스로부터 클라이언트로의 효과적인 데이터 전송을 초래하는 요청으로 구분됨-을 포함한다. 고속 전송 데이터 소스는 예를 들어 데이터베이스 테이블일 수 있다. 상기한 고속 전송 데이터 소스는 데이터를 신속하게 일시 저장하는 기능을 함으로써, 그렇지 않은 경우에 비해 보다 짧은 지연 시간을 갖고 상기한 데이터에 대한 추후의 요청이 서비스되도록 한다. 경우에 따라서는, 상기한 제2 카테고리의 고속 전송 모드 요청에 있어서, 응답의 사이즈를 명시적으로 지정함으로써 효과적인 데이터의 전송을 실현할 수도 있다. 예를 들어, 응답의 사이즈는 수신 버퍼(112)의 총 사이즈에서 응답 오버헤드를 감산한 사이즈로 설정할 수도 있다.
도 4의 (a)는 적어도 2개의 요청-응답 사이클을 갖는 고속 전송 동작을 나타낸 것이다. 제1 요청(401)에서, ROP(예컨대, FXPrepare)는 이메일 서버(106) 측의 고속 전송 데이터 소스를 초기화한다. 이메일 서버(106)에서는, FXPrepare만이 처리되며(즉, 고속 전송 데이터 소스가 초기화되며), 그 결과는 제1 응답(402)으로 리턴된다. 제2 요청(403)에서, ROP(예컨대, FXGetBuffer)는 이메일 서버(106)에 대하여 상기한 고속 데이터 소스로부터 응답 버퍼(110)를 채울 것을 요청한다. 이메일 서버(106)는 상기한 응답 버퍼(110) 내의 고속 데이터 소스를 비운 다음, 그 결과를 제2 응답(404)으로 리턴한다. 고속 데이터 소스가 비워지기 전에 이메일 서버(106)에 대한 응답 버퍼(110)가 채워지면, 추가의 FXGetBuffer ROP가 필요할 수도 있다.
도 4의 (b)는 단일의 요청-응답 사이클을 갖는 고속 전송 동작을 나타낸 것이다. 제1 요청(405)에서, FXPrepare 및 FXGetBuffer 양자가 이메일 서버(106)에 의해 처리되며, 이들 동작의 결과는 제1 응답(406)으로 리턴된다. 각 버퍼의 일부분이 공유 데이터 테이블로서 명시적으로 규정되어 있으므로, FXPrepare의 결과는 이메일 서버(106) 측의 FXGetBuffer에 이용될 수 있다.
요청-응답 사이클의 수를 줄일수록 보다 효과적인 데이터 전송을 실현할 수 있으므로 바람직하다. 응답 버퍼(110)가 충만하여 FXGetBuffer ROP의 결과를 보유할 수 없는 경우에는, 하나 이상의 요청-응답 사이클을 갖는 고속 전송 동작이 일어날 수 있다.
도 5를 참조하면, 클라이언트 전송 버퍼(104)의 컨텐츠(120)의 일례가 도시되어 있다. 본 예에서, 전송 버퍼(104)는 원격 프로시저 호출(RPC) 헤더(122)와 다수의 요청(124)을 포함하고 있다.
본 발명의 일면에 따르면, RPC 헤더(122)는 압축 비트(126) 및 모호화 비트(128)를 포함할 수 있다. 압축 비트(126)는 이메일 서버(106)가 요청에 대한 응답을 압축할 지의 여부를 나타낸다. 상기한 컨텐츠(120) 내에 기타의 정보를 제공하여, 이메일 서버(106)가 상기한 응답을 압축할지의 여부를 나타내도록 할 수도있다. 그러나, 상기한 압축이 항상 바람직한 것은 아니다. 예를 들어, 클라이언트가 레이턴시가 낮은 고속 접속을 가지며, 압축 해제를 효과적으로 수행할 정도의 충분한 예비 처리 능력을 갖고 있지 않다면, 클라이언트 측에서 압축을 원하지 않는다는 표시를 요청과 함께 전송할 수도 있다. 다른 방법으로서, 클라이언트가 충분한 처리 능력을 가지며 서버와의 접속 대역폭이 낮다면, 클라이언트 측에서는 서버에 대하여 압축을 원한다고 표시(예컨대, 헤더 내의 압축 표시자 비트의 설정)할 수도 있다.
모호화 비트(128)는 이메일 서버(106)가 요청을 모화화 처리할 지의 여부를 나타낸다. 모호화 처리는 네트워크를 통하여 데이터를 명확하게 판독할 수 있는 텍스트로서 전송되지 않도록 하는 간단한 동작이다. 모호화 처리의 일례로는 요청을 전송하기 전에 XOR 처리(공지의 모호화 방법)하는 방법이 있다. 실시예에 따라서는, 모호화 처리에 대신하여 암호화 처리를 이용할 수도 있다. 또한, 컨텐츠(120) 내에 기타의 정보를 포함시켜, 상기한 요청을 모호화 또는 암호화 처리할 지의 여부를 표시할 수도 있다.
도 5에 도시한 바와 같이, 실시예에 따라서는 컨텐츠(120) 내에 특수 요청(130)이 포함되도록 이메일 클라이언트(102)를 구성하여, 이메일 서버(106)로 하여금 후술하는 체이닝 처리를 이용하여 클라이언트의 요청에 응답하도록 지시할 수도 있다.
도 6을 참조하면, 본 발명의 일 실시예에 따른 클라이언트와 서버 사이에서의 데이터 전송 방법을 나타낸 순서도가 도시되어 있다. 먼저, 단계 600에서, 이메일 서버(106)는 클라이언트로부터 복수의 요청(예컨대, 요청(124))을 수신한다.
본 발명의 일 실시예에 따르면, 이메일 클라이언트(102)는 이메일 서버(106)에 대하여 응답의 전송시 체이닝 처리를 실시하거나 또는 실시하지 않을 것을 요청할 수 있다. 단계 602에서, 이메일 서버(106)는 상기한 요청(124)을 조사하여 체이닝 처리의 요청(예컨대, 특수 요청(130))이 포함되었는지의 여부를 판정한다. 포함하고 있지 않다면, 단계 602 후에 단계 604로 진행하여, 이메일 서버(106)는 상기한 요청(124)에 대한 응답을 구축하기 시작한다. 체이닝 처리를 실시하지 않고 응답을 구축하는 처리의 일례가 도 8에 도시되어 있으며, 도 7에서의 단계들은 상기한 예에 적용된다.
단계 604(도 6)에서, 이메일 서버(106)는 헤더(140)를 생성한다. 단계 606에서, 요청(124)에 대한 응답(142)(도 6)을 검색(retrieve)하여 응답 버퍼(110)에 저장한다. 이메일 서버(106)에서 응답(142) 및 헤더(140)가 응답 버퍼(1100)를 완전히 충만시키거나 거의 충만시킬 정도로 충분한 응답을 생성하게 되면, 이메일 서버(106)는 요청에 대한 처리를 중지한다. 응답 버퍼(110)가 완전 충만 또는 거의 충만되었는지는 이메일 서버(106) 및/또는 이메일 클라이언트(102)에 의해 규정될 수 있다. 예를 들어, 응답 버퍼(110)가 최초의 32KB 버퍼에서 8KB 만큼 잔존한 경우에 충만되었다고 판정할 수 있다.
이메일 클라이언트(102)가 [예컨대, 압축 비트(126)의 적절한 설정에 의해] 압축을 지원하는 것으로 표시하는 경우, 단계 608에서 이메일 서버(106)는 응답 버퍼(110) 내의 응답을, 응답(142)의 압축된 세트(144)로 압축한다. 마찬가지로, 단계 608에서, 이메일 클라이언트(102)가 [예컨대, 모호화 비트(128)의 적절한 설정에 의해] 모호화 처리를 지원하는 것으로 표시하는 경우, 이메일 서버(106)는 지시에 따라 상기한 응답(142)을 모호화 또는 암호화 처리하게 된다.
단계 610에서, 처리되지 않은 요청에 대해서는 응답 버퍼(108) 내의 응답에 부가한다. 이들 미처리 응답은 도 6의 메모리(146)에 도시한 바와 같이 압축 후 미사용 메모리 내에 위치시킬 수도 있다. 그러면, 단계 612에서 이메일 서버(106)는 응답과 상기한 미완수 요청을 이메일 클라이언트(102)에 전송한다.
전술한 예 및 도 7로부터 알 수 있는 바와 같이, 체이닝 처리되지 않고 압축된 후의 미사용 메모리(즉, 메모리(146))는 상당한 양일 수 있다. 본 발명의 일면에 따르면, 미사용 메모리의 양은 체이닝 처리를 통해 최소화할 수 있다. 그러나, 예컨대 고속 전송 모드를 요청하지 않은 ROP의 경우와 같이, 이메일 클라이언트(102)에서 체이닝 처리를 원하지 않는 경우에는, 전술한 비체이닝 방법이 효과적일 수도 있다.
이메일 클라이언트(102)가 이메일 서버(106) 측에서 체이닝 처리를 사용할 것을 표시한 경우에는, 단계 602 후에 단계 614로 진행하여, 이메일 서버(106)에서 제1 헤더(150)(도 7)를 생성한다. 도 8은 체이닝 처리에 대한 응답 구축 처리의 일례를 나타낸 것으로서, 이와 관련하여 단계 614 내지 620에 설명되어 있다.
단계 616에서, 이메일 서버(106)는 응답 버퍼(110)에 응답(152)을 검색하여 채워 넣는다. 또한, 응답 버퍼(110)는 미리 정해진 한도에 도달하게 되면 충만된 것으로 판정된다. 응답 버퍼(110)를 채우는 것은 단지 하나의 응답이 소요될 수도있지만, 본 예에서 "응답 세트"라 함은 하나 또는 그 이상의 응답을 의미한다. 단계 618에서, 응답 버퍼(110)가 완전히 충만되거나 또는 거의 충만된 상태로 되면, 이메일 서버(106)는 이메일 클라이언트(102)로부터의 지시(예컨대, 압축 비트(126) 및/또는 모호화 비트(128))에 따라서 응답 버퍼(110) 내의 응답을 압축 및/또는 모호화 처리한다. 압축된 응답 세트(154)를 생성하고, 요청 버퍼(108) 내의 미사용 메모리의 대부분(156)은 잔존시킨다.
압축 및/또는 모호화 처리 후, 단계 620에서 응답 버퍼(110) 내에 추가의 응답을 채워 넣을 수 있는지를 판정한다. 또한, 추가의 응답을 채워 넣을 수 있는지에 대한 판정은 이메일 클라이언트(102) 또는 이메일 서버(106)에 의해 규정될 수 있다. 그러나, 제1 압축 후에는 추가의 공간이 있을 것으로 예상된다. 추가의 공간이 있다면, 처리 단계는 단계 614로 복귀하여, 이메일 서버(106)가 제2 헤더(158)(도 8)를 생성 및 부가하고, 요청에 대한 처리를 재시작한다(단계 616).
응답 버퍼(110)가 응답으로 충만되거나 또는 거의 충만된 상태로 되면, 단계 618에서 이메일 서버(106)는 새로 추가된 응답(160)을 압축 및/또는 모호화 처리한다. 단계 620에서, 추가의 응답을 위한 공간이 남아 있는지에 대한 판정을 재차 수행한다. 공간이 남아 있다면, 처리 단계는 다시 단계 614로 복귀하여, 이메일 서버(106)는 제3 헤더를 부가하여 응답 버퍼(110)에 응답을 채워 넣고, 그 응답에 대한 압축 및/또는 모호화 처리를 실시한다(단계 616 및 618). 이 처리는 모든 요청에 대한 처리가 완료되거나 또는 응답 버퍼(110)가 헤더 및 대응하는 압축 응답으로 충만 또는 거의 충만된 상태로 될 때까지 반복하여 수행된다. 응답버퍼(110)가 [도 8의 하단에 도시된 바와 같이] 압축 응답 및 헤더로 충만 또는 거의 충만된 상태로 되면, 단계 620 후에 단계 610으로 진행하여, 이메일 서버(106)는 임의의 미완수 요청이 존재한다면 이를 부가하여, 이메일 클라이언트(102)에 대해 응답 버퍼(110)의 컨텐츠를 전송한다.
이메일 클라이언트(102)는 자신의 수신 버퍼(112)에 응답 버퍼(110)의 컨텐츠를 수신하게 되면, 헤더들 사이의 각각의 응답 세트를 처리한다. 상기한 응답 세트가 압축 및/또는 모호화 처리되어 있다면, 이메일 클라이언트(102)는 압축 해제하거나 또는 상기한 모호화 부분을 해제(reverse)할 수 있다. 이 경우, 이메일 클라이언트(102)는 처리할 복수의 응답 세트를 여전히 갖고 있다.
도 7에서 비체이닝 처리로 전송된 데이터와 도 8의 체이닝 처리로 전송된 데이터 사이의 차이로부터 알 수 있는 바와 같이, 상기한 체이닝 처리는 다중의 헤더/응답의 쌍을 함께 체이닝 또는 패킹하여 하나의 "묶음"(batch)으로 전송할 수 있도록 함으로써, 이메일 클라이언트(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)의 사이즈는 각각 32KB이며, 응답 버퍼(110 및 112)의 최적의 사이즈는 96KB로서, 그 비를 1대 3으로 하고 있다.
이메일 클라이언트(102)가 보다 큰 사이즈의 응답 버퍼(110 및 112)를 규정할 수도 있지만, 이메일 클라이언트(102)는 응답 버퍼(110 및 112)의 실제 사이즈보다 작은 응답 데이터분(data chunk)에 대해 동작하도록 구성될 수도 있다. 예를 들어, 응답 버퍼(110 및 112)를 96KB의 버퍼로 할 수도 있지만, 이메일 클라이언트(102)는 총 응답 데이터분이 32KB 미만인 것을 선호한다. 본 발명의 패킹 또는 체이닝 처리는 이러한 시스템에서도 잘 동작될 수 있도록 한다.
도 10은 이러한 기능을 실현하기 위한 방법의 실시예를 도시하고 있다. 단계 1000에서, 이메일 클라이언트(102)는 이메일 서버(106)에 대하여, 응답 버퍼의 사이즈(예컨대, 96KB)를 규정한 정보와 클라이언트의 처리 데이터분의 사이즈에 대한 정보와 함께, 한 세트의 요청을 전송한다. 단계 1002에서, 이메일 서버(106)는 클라이언트에 의해 규정된 데이터분의 사이즈와 동일한 사이즈의 응답 버퍼(110) 내에 프레임을 생성한다. 그러면, 단계 1004에서 이메일 서버(106)은 응답 버퍼(110) 내의 프레임에 헤더를 기록한다. 단계 1006에서, 이메일 서버(106)는 응답의 처리를 시작하며, 이 처리는 프레임이 완전 또는 거의 충만될 때까지 계속된다. 상기한 응답 세트는 단계 1008에서 압축 또는 모호화 처리를 거칠 수도 있고 그렇지 않을 수도 있다.
단계 1010에서, 응답 버퍼(110)가 완전히 충만되었는지의 여부를 판정한다. 통상적으로, 1회의 응답 처리로는 응답 버퍼(110)가 충만되지 않는다. 응답 버퍼(110)가 충만되지 않았다면, 처리는 단계 1002로 복귀하여, 이메일 서버(106)는 바로 전에 처리된 응답 세트의 끝에서 시작하는 새로운 프레임을 생성한다. 여기서, 포인터를 사용하여 이메일 서버(106)가 상기한 새로운 프레임의 시작을 알 수 있도록 할 수도 있다. 또한, 응답 버퍼(110) 내에 충분한 여유가 있다면, 상기한 새로운 프레임의 사이즈는 이메일 클라이언트(102)가 처리할 수 있는 데이터분이 된다. 단계 1004에서, 이메일 서버(106)는 상기한 새로운 프레임에 다음의 헤더를 기록한다. 그 후, 처리는 단계 1010으로 진행한다.
응답 버퍼(110)가 일단 충만되면, (또는 모든 요청이 처리되었다면)(이들 양자의 순서는 무관함) 처리는 단계 1012로 진행하여, 이메일 서버(106)는 나머지 미처리 요청을 응답 버퍼(110)에 복사한다. 단계 1014에서, 이메일 서버(106)는 응답 버퍼(110)의 컨텐츠를 이메일 클라이언트(102)에 전송한다.
이메일 클라이언트(102)는 자신의 수신 버퍼(112) 내에 응답 버퍼(110)의 컨텐츠를 수신한 다음, 헤더 사이의 각각의 데이터분(응답 세트)을 처리한다. 이 때, 응답이 압축 또는 모호화 처리되지 않았다면, 이메일 클라이언트(102)는 헤더 사이의 각각의 응답 세트를 그대로 처리할 수도 있다. 상기한 응답 세트는 이메일 클라이언트(102)에 의해 규정된 데이터분과 동일하거나 또는 그 보다 작을 것이므로, 이메일 클라이언트(102)는 상기한 데이터 세트를 적절하게 처리할 수 있게 된다. 한편, 상기한 응답 세트가 압축 및/또는 모호화 처리되었다면, 이메일 클라이언트(102)는 압축을 해제하거나 또는 모호화 부분을 해제할 수도 있다. 이 경우, 이메일 클라이언트(102)는 자신이 처리할 수 있는 데이터분의 사이즈와 동일하거나 또는 그보다 작은 사이즈를 갖는 복수의 응답 세트를 여전히 갖고 있다.
(서버가 보다 많은 요청을 처리하도록 하는 기교)
이메일 서버(106)가 한 세트의 요청에 대한 처리를 완료한 경우, 이메일 서버(106)가 추가의 요청에 대한 처리를 계속하도록 "착각"(tricked)시켜야 해야 한다. 예를 들어, 현재의 이메일 서버는 통상적으로 요청을 처리하여, 이메일 클라이언트(102)에 의해 규정된 소정 사이즈(예컨대, 32KB)의 응답을 제공하도록 구성되어 있다. 이러한 처리를 한 다음, 현재의 이메일 서버는 응답의 준비 완료를 나타내는 응답을 전송하거나(예컨대, FXPrepare 응답), 또는 자동적으로 상기한 응답을 전송하도록(예컨대, FXGetBuffer 응답) 구성되어 있다. 그러나, 상기한 압축 처리를 이용하는 경우, 이메일 서버(106)는 보다 많은 요청을 FXGetBuffer 응답으로 처리하여, 응답 버퍼(110) 내에 추가의 공간을 채우려고 할 것이다. 상기한 추가의 공간은 압축 처리에 의해 생성된다. 또한, 전술한 보다 큰 사이즈의 버퍼를 이용한 실시예의 경우에는 그 프레임 중의 하나를 처리한 후에 추가의 공간을 갖게 된다.
도 11은 이러한 상황에 대처하기 위한 방법의 실시예를 도시하고 있다. 단계 1100에서, 추가의 응답을 위한 여분의 공간이 있는지에 대한 판정 및 처리할 추가의 요청이 존재하는지에 대한 판정을 행한다. 그렇지 않다면, 단계 1100 후에 단계 1102로 진행하여, 이메일 서버(106)는 이메일 클라이언트(102)에 대해 응답을 전송한다. 이메일 서버(106)가 한 세트의 응답을 전송한 후, 더 처리할 것이 있고 이들을 처리할 여유 공간이 있다고 나타내는 경우에는, 단계 1100 후에 단계 1104로 진행하여, 이메일 서버(106)는 "모조의"(fake) 인바운드 요청(예컨대, 모조의 FXGetBuffer 요청)을 생성한다. 이 의사(pseude) RPC(원격 프로시저 호출) 인바운드 요청은 이메일 서버(106)에 의해, 그것이 이메일 클라이언트(102)로부터 수신된 것과 같이 처리된다. 상기한 RPC는 원격 컴퓨터로부터 실제로 전송된 것이 아니라 서버 내부에서 전송된 것이다는 점에서 "의사적인" 것이다. 상기한 의사 RPC에 대한 아웃바운드 버퍼는 원래의 아웃바운드 버퍼의 압축 후의 나머지 부분으로 설정된다(이것은 위에서 규정된 프레임에 의해 제한될 수도 있음). 그러면, 이메일 서버(106)는 전술한 바와 마찬가지로 단계 1106에서 새로운 응답을 처리한다.
이메일 서버(106)는 상기한 처리를 반복하여 수행하며, 이러한 처리는 다음의 기준, 즉 처리할 인바운드 요청이 남아 있지 않은 경우, 나머지 아웃바운드 버퍼의 사이즈가 소정의 임계값(예컨대, 8KB) 미만인 경우, 최대수의 버퍼가 체이닝 처리된 경우(예컨대, 64), 또는 하드 에러(hard error)가 존재하는 경우 중의 하나에 해당될 때까지 수행된다.
각각의 패킹 처리된 응답 세트는 그 자신의 헤더와 플래그를 갖는다. 한 패킷에 대해서는 압축 처리를 행하고 다음의 것에 대해서는 모호화 처리를 행하고, 또는 모든 패킷에 대해 압축 및 모호화 처리를 수행하지 않을 수도 있다. 체이닝 처리된 응답에 있어서 각각의 새로운 버퍼에 대해서는, 플래그가 부여된다(honor).
(버퍼 콘텐츠의 예)
다음은 아웃바운드 응답 버퍼 내에 2개의 체이닝 처리된 버퍼를 갖는 경우의 상세를 나타낸 것이다.
도시된 바와 같이, 각각의 패킹 처리된 응답 버퍼는 그 자신의 HSOT(Handle to Store Operation Table) 테이블을 갖고 있다. HSOT는 각각의 네트워크 요청 내의 식별자로서 이메일 서버(106) 상의 어떤 오브젝트에 대해 처리를 수행하고 있는가를 나타낸다. 이것은 HSOT의 테이블로서, 그 엔트리들은 내부 저장 오브젝트에 대응한다. 요청 버퍼(108) 내의 각각의 동작은 그 동작과 관련된 저장 오브젝트를 식별하는 상기한 테이블에서의 인덱스를 포함하고 있다. 상기한 이메일 서버(106)도 동작 중에 새로운 내부 저장 오브젝트가 생성된 경우 상기한 테이블에 엔트리를 추가시킬 수 있다. 상기한 HSOT 테이블의 값은 리스트 내의 첫번째 것과 차이가 없지만, 전술한 FXGetBuffer ROP에서 사용된 것까지만을 포함하는 모든 HSOT에 대한 HSOT 엔트리를 포함한다. 이것은 이메일 서버(106)의 복잡성을 완화시킬 것이므로 구현시에 중요한 결정사항이다. HSOT 테이블은 일반적으로 수개의 DWORD로 되어 있으므로, 이로 인한 대역폭의 삭감은 크지 않다.
상기한 내용은 단지 예시에 지나지 않으며, 구현예에 따라서는 그 상세에 있어서 변화가 있을 수도 있다. 예를 들어, 이메일 클라이언트(102) 및/또는 이메일 서버(106)가 지원하는 기능에 따라서 일부 플래그의 해석이 상이할 수도 있다. 예를 들어, 이메일 클라이언트(102)가 패킹 및/또는 압축 처리된 버퍼를 지원하고 있지만, 이메일 서버(106)에서 이들 중 어느 것도 지원하지 않는 경우에는, 이메일 서버(106)에서 그 대응하는 플래그를 무시할 것이다.
전술한 바와 같이, 이메일 클라이언트(102)에 2개의 새로운 레지스트리 키(Registery Key)가 추가되어, 이메일 클라이언트(102)가 체이닝 응답을 사용할지의 여부 및 아웃바운드 버퍼 사이즈를 32KB 이상으로 할지의 여부를 토글링(toggle)하도록 할 수도 있다. 또한, 압축의 요청에 대해 이러한 처리를 사용할 수도 있다. 이러한 기능은 구현예에 따라서 그 수행의 여부를 디폴트로 가능 또는 불가능하도록 할 수도 있다.
구현예에 따라서는, 이메일 서버(106)로의 인바운드 버퍼에 대해 패킹 처리를 수행할 수도 있다. 이들 구현예에서는, 이메일 클라이언트(102)에 대해 유사한 처리를 수행하여, 이메일 서버(106)에 대한 전술한 패킹을 처리하도록 할 수도 있다. 그러나, 아이템을 다운로딩하는 경우에는 업로딩에 비해 다소 시간이 소요되는 것이 보통이므로, 구현예에 따라서는 이메일 서버(106)에 대해 인바운드 버퍼를 패킹 처리하지 않고 전송할 수도 있다.
이상, 본 발명을 이메일 클라이언트와 서버에 대한 구현예를 중심으로 기술하였지만, 전술한 시스템 및 방법은 다른 종류의 애플리케이션에 대해서도 적용될 수 있다. 예를 들어, 상기한 기술을 마이크로소프트 MapPoint 등의 매핑 애플리케이션에서 매핑 클라이언트와 서버 사이의 정보 동기화에도 적용할 수 있다. 또한, 상기한 시스템 및 방법의 실시예들을 소프트웨어 애플리케이션에 대해 기술하였지만, 본 기술분야의 숙련된 자들이라면 상기한 시스템을 하드웨어, 소프트웨어 또는 이들의 조합으로 구현할 수도 있음을 알 수 있을 것이다. 또한, 상기한 예들은 다이얼업 접속을 중심으로 설명하였지만, (이것에 국한되지는 않지만, 예를 들어 LAN, 무선, ISDN 및 DSL) 다른 종류의 네트워크 접속을 고려할 수도 있다.
이상, 버퍼 패킹을 이용한 클라이언트 및 서버 애플리케이션 사이의 신규하고 유용한 통신 시스템 및 방법을 설명하였다. 본 발명의 원리가 적용될 수 있는 가능한 많은 실시예의 관점에서, 첨부된 도면을 참조하여 기술하고 있는 전술한 실시예는 예시를 위한 것일뿐이며, 본 발명의 범위가 이것에 제한되어서는 안된다. 예를 들어, 본 기술분야의 숙련된 자들이라면 상기한 실시예에서 소프트웨어로 도시된 엘리먼트들은 하드웨어로 구현될 수도 있으며, 그 반대의 경우도 가능할 뿐만 아니라, 전술한 실시예들은 본 발명의 사상을 일탈하지 않는 범위 내에서 그 구성 및 상세에 있어서 각종의 변형이 가능하다. 따라서, 본 명세서에서 기재된 본 발명은 첨부된 청구항 및 그 균등물의 범주 내에 속하는 모든 실시예를 포함하는 것으로 해석되어야 한다.
전술한 바와 같이, 본 발명에 따른 개선된 클라이언트 서버 통신을 위한 패킹된 압축 버퍼를 이용하는 시스템 및 방법을 이용함으로써, 서버 측에서 다중의 응답 세트를 압축하여 이들을 단일의 묶음으로 전송함으로써, 클라이언트와 서버사이의 통신 성능이 향상되는 효과가 있다.

Claims (24)

  1. 클라이언트로부터의 일단의 요청에 응답하는 컴퓨터-구현된 방법에 있어서,
    a) 상기 요청을 검토(traverse)하여 응답- 상기한 응답은 제1 세트의 응답을 구비함 -을 생성하는 동작을 상기 응답의 사이즈가 소정의 양보다 작을 때까지 수행하는 단계;
    b) 상기 제1 세트의 응답에 헤더를 부가하는 단계;
    c) 상기 제1 세트의 응답을 압축하는 단계;
    d) 나머지 요청을 검토하여 상기 각 요청에 대한 검토에 따라서 추가의 응답- 상기 추가의 응답은 추가의 응답 세트를 포함함 -을 생성하는 동작을 상기 추가의 응답 및 버퍼의 기타 컨텐츠의 사이즈가 상기 소정의 양보다 작을 때까지 수행하는 단계;
    e) 상기 추가의 응답 세트에 추가의 헤더를 부가하는 단계; 및
    f) 상기 헤더 및 상기 응답 세트를 상기 클라이언트에 대하여 전송하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 버퍼에 전송하기 전에,
    g) 상기 추가의 응답 세트를 압축하는 단계; 및
    h) 상기 헤더 및 상기 응답 세트의 사이즈가 상기 소정의 양에 도달하거나또는 모든 응답에 대한 검토가 완료될 때까지 상기 d), e) 및 g)의 단계를 반복 수행하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    상기 소정의 양은 상기 클라이언트가 처리하도록 구성된 응답 세트의 사이즈에 대응하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    상기 소정의 양은 상기 응답 세트 및 상기 헤더를 보유하도록 구성된 버퍼와 관련된 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 단계 d)를 수행하기 전에,
    요청의 처리를 위한 인바운드 요청을 생성하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  6. 제5항에 있어서,
    상기 인바운드 요청은 의사 원격 프로시저 호출(pseudo remote procedure call)인 것을 특징으로 하는 방법.
  7. 청구항 1에 기재된 방법을 수행하기 위한 컴퓨터-실행가능 명령문을 포함하는 컴퓨터-판독가능 매체.
  8. 클라이언트로부터의 일단의 요청에 응답하는 컴퓨터-구현된 방법에 있어서,
    a) 상기 요청을 검토하여 상기 각 요청에 대한 검토에 따라서 응답- 상기 응답은 제1 세트의 응답을 포함함 -을 생성하는 동작을, 상기 응답의 사이즈가 서버측의 버퍼 내에 소정량의 제1 프레임- 상기 제1 프레임의 사이즈는 상기 클라이언트가 처리하도록 구성된 응답 세트의 사이즈와 관련된 것으로, 상기 버퍼의 사이즈보다 작음 -을 채울 때까지 수행하는 단계;
    b) 상기 제1 세트의 응답에 헤더를 부가하는 단계;
    c) 나머지 요청을 검토하여 상기 각 요청에 대한 검토에 따라서 추가의 응답- 상기 추가의 응답은 추가의 응답 세트를 포함함 -을 생성하는 동작을 상기 응답의 사이즈가 상기 버퍼 내에 소정량의 추가 프레임- 상기 추가 프레임의 사이즈는 클라이언트가 처리하도록 구성된 응답 세트 또는 상기 버퍼의 나머지 부분의 사이즈 중 더 작은 것과 관련된 것으로, 상기 버퍼의 사이즈보다 작음 -을 채울 때까지 수행하는 단계;
    d) 상기 추가의 응답 세트에 추가의 헤더를 부가하는 단계; 및
    d) 상기 버퍼의 컨텐츠를 상기 클라이언트에 전송하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  9. 제8항에 있어서,
    상기 단계 c)를 수행하기 전에,
    f) 상기 제1 세트의 응답을 압축하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  10. 제9항에 있어서,
    상기 단계 e)를 수행하기 전에,
    g) 상기 추가의 응답 세트를 압축하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  11. 제10항에 있어서,
    상기 버퍼가 소정량 만큼 채워질 때까지 상기 c), d) 및 g)의 단계를 반복 수행하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  12. 제8항에 있어서,
    상기 버퍼가 소정량 만큼 채워질 때까지 상기 c) 및 d)의 단계를 반복 수행하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  13. 제8항에 있어서,
    상기 단계 c)를 수행하기 전에,
    요청의 처리를 위한 인바운드 요청을 생성하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  14. 제13항에 있어서,
    상기 인바운드 요청은 의사 원격 프로시저 호출인 것을 특징으로 하는 방법.
  15. 청구항 8에 기재된 방법을 수행하기 위한 컴퓨터-실행가능 명령문을 포함하는 컴퓨터-판독가능 매체.
  16. 데이터 구조를 저장하고 있는 컴퓨터-판독가능 매체에 있어서,
    상기 데이터 구조는,
    동작을 위한 복수의 요청; 및
    상기 요청에 대한 응답을 체이닝 처리를 통해 리턴할 것을 나타내는 표시
    를 포함하는 것을 특징으로 하는 컴퓨터-판독가능 매체.
  17. 청구항 16의 데이터 구조에 있어서,
    상기 체이닝 처리는,
    a) 제1 세트의 응답을 어셈블하는 단계;
    b) 상기 제1 세트의 응답에 헤더를 부가하는 단계; 및
    c) 하나 또는 그 이상의 추가의 응답 세트에 대하여 상기 a) 및 b)의 단계를 반복 수행하는 단계
    를 포함하는 것을 특징으로 하는 데이터 구조.
  18. 제17항에 있어서,
    상기 응답 세트를 압축할 것을 나타내는 표시를 더 포함하는 것을 특징으로 하는 데이터 구조.
  19. 제18항에 있어서,
    상기 압축 처리 전의 상기 응답 세트의 사이즈 범위(size limit)를 나타내는 표시를 더 포함하는 것을 특징으로 하는 데이터 구조.
  20. 제17항에 있어서,
    상기 응답 세트의 사이즈 범위를 나타내는 표시를 더 포함하는 것을 특징으로 하는 데이터 구조.
  21. 서버와 클라이언트 사이에서 데이터를 전송하는 방법에 있어서,
    a) 클라이언트로부터 복수의 요청- 상기 요청은 상기 요청에 대한 응답의 체이닝 요청을 포함함 -을 수신하는 단계;
    b) 상기 클라이언트에 대하여 제1 세트의 응답을 어셈블하는 단계;
    c) 상기 제1 세트의 응답을 압축하는 단계;
    d) 상기 제1 세트의 응답에 헤더를 부가하는 단계;
    e) 하나 또는 그 이상의 추가의 응답 세트에 대하여 상기 b) 내지 d)의 단계를 반복 수행하는 단계; 및
    f) 상기 클라이언트에 대하여 상기 압축 처리된 응답 세트 및 상기 헤더를 함께 전송하는 단계
    를 포함하는 것을 특징으로 하는 데이터 전송 방법.
  22. 제21항에 있어서,
    상기 단계 e)를 수행하기 전에,
    요청의 처리를 위한 인바운드 요청을 생성하는 단계를 더 포함하는 것을 특징으로 하는 데이터 전송 방법.
  23. 제22항에 있어서,
    상기 인바운드 요청은 의사 원격 프로시저 호출인 것을 특징으로 하는 데이터 전송 방법.
  24. 청구항 21에 기재된 방법을 수행하기 위한 컴퓨터-실행가능 명령문을 포함하는 컴퓨터-판독가능 매체.
KR1020030081552A 2002-11-20 2003-11-18 클라이언트로부터의 일단의 요청에 응답하는 컴퓨터-구현된 방법, 컴퓨터-판독가능 저장 매체, 및 데이터 전송 방법 KR100984457B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US42815302P 2002-11-20 2002-11-20
US60/428,153 2002-11-20
US10/442,380 US7111039B2 (en) 2002-11-20 2003-05-21 System and method for using packed compressed buffers for improved client server communications
US10/442,380 2003-05-21

Publications (2)

Publication Number Publication Date
KR20040044356A true KR20040044356A (ko) 2004-05-28
KR100984457B1 KR100984457B1 (ko) 2010-09-29

Family

ID=32302756

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030081552A KR100984457B1 (ko) 2002-11-20 2003-11-18 클라이언트로부터의 일단의 요청에 응답하는 컴퓨터-구현된 방법, 컴퓨터-판독가능 저장 매체, 및 데이터 전송 방법

Country Status (14)

Country Link
US (2) US7111039B2 (ko)
EP (2) EP1453270B1 (ko)
JP (1) JP4532098B2 (ko)
KR (1) KR100984457B1 (ko)
CN (1) CN100534071C (ko)
AT (1) ATE487310T1 (ko)
AU (1) AU2003257902B2 (ko)
BR (1) BRPI0305138B1 (ko)
CA (1) CA2448170C (ko)
DE (1) DE60334770D1 (ko)
HK (1) HK1152425A1 (ko)
IN (1) IN2014DE02379A (ko)
MX (1) MXPA03010478A (ko)
RU (1) RU2365049C2 (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7444381B2 (en) * 2000-05-04 2008-10-28 At&T Intellectual Property I, L.P. Data compression in electronic communications
US7653059B1 (en) * 2002-12-20 2010-01-26 Symantec Operating Corporation Communication sessions for a computer network
US7546613B2 (en) * 2004-09-14 2009-06-09 Oracle International Corporation Methods and systems for efficient queue propagation using a single protocol-based remote procedure call to stream a batch of messages
US7827141B2 (en) * 2005-03-10 2010-11-02 Oracle International Corporation Dynamically sizing buffers to optimal size in network layers when supporting data transfers related to database applications
US7917904B2 (en) 2006-01-06 2011-03-29 Microsoft Corporation Automated analysis tasks of complex computer system
US8244883B2 (en) * 2006-08-03 2012-08-14 Citrix Systems, Inc. Systems and methods of for providing multi-mode transport layer compression
JP2008099261A (ja) * 2006-09-12 2008-04-24 Yamaha Corp 通信装置およびプログラム
US20080177872A1 (en) * 2006-11-10 2008-07-24 Vengroff Darren E Managing aggregation and sending of communications
US9070114B2 (en) * 2006-11-21 2015-06-30 Blackberry Limited Method for receiving email attachment on a portable electronic device
US8942182B2 (en) * 2006-11-21 2015-01-27 Blackberry Limited Adjustable download rate for a portable electronic device
US8145766B2 (en) 2007-08-08 2012-03-27 Research In Motion Limited Method for pre-fetching data chunks of an email attachment on a portable electronic device
FR2920935B1 (fr) 2007-09-06 2009-12-11 Miyowa Procede pour echanger des requetes entre l'application informatique d'un terminal mobile et un serveur de messagerie instantanee
FR2923130A1 (fr) * 2007-10-24 2009-05-01 Miyowa Sa Procede et systeme de messagerie instantanee pour terminaux mobiles equipe d'un serveur de presence virtuelle permettant de gerer automatiquement une session de messagerie instantanee
FR2923131B1 (fr) * 2007-10-24 2010-01-15 Miyowa Procede et systeme de messagerie instantanee pour terminaux mobiles equipe d'un serveur de presence virtuelle configure pour gerer differentes listes de contacts d'un meme utilisateur
FR2926176B1 (fr) * 2008-01-08 2014-10-10 Miyowa Reseau de communication de transfert d'informations entre un terminal mobile et des serveurs sources, ainsi que terminal et procede de gestion de transfert d'informations dans un tel reseau.
US8812853B1 (en) * 2008-03-18 2014-08-19 Avaya Inc. Traceability for threaded communications
US20100179982A1 (en) * 2009-01-15 2010-07-15 Miyowa Method for auditing the data of a computer application of a terminal
JP5257142B2 (ja) * 2009-02-27 2013-08-07 株式会社リコー 画像形成装置、画像形成システム、情報処理方法、及び、コンピュータプログラム
US20100228790A1 (en) * 2009-03-03 2010-09-09 Miyowa Method for activating functionalities proposed in a computer terminal
FR2944624A1 (fr) * 2009-04-16 2010-10-22 Miyowa Procede pour autoriser une connexion entre un terminal informatique et un serveur source
JP5124527B2 (ja) * 2009-05-26 2013-01-23 株式会社日立製作所 メール中継装置
US8549106B2 (en) * 2009-06-15 2013-10-01 Microsoft Corporation Leveraging remote server pools for client applications
US8806190B1 (en) 2010-04-19 2014-08-12 Amaani Munshi Method of transmission of encrypted documents from an email application
US9240952B2 (en) * 2011-04-02 2016-01-19 Open Invention Network, Llc System and method for communication between networked applications
JP5858046B2 (ja) * 2011-09-30 2016-02-10 富士通株式会社 無線通信システム、移動局、基地局及び無線通信システム制御方法
US9894421B2 (en) * 2012-10-22 2018-02-13 Huawei Technologies Co., Ltd. Systems and methods for data representation and transportation
US10423349B2 (en) * 2017-08-23 2019-09-24 Western Digital Technologies, Inc. Logical and physical address field size reduction by alignment-constrained writing technique
US11044200B1 (en) 2018-07-06 2021-06-22 F5 Networks, Inc. Methods for service stitching using a packet header and devices thereof
US11836388B2 (en) * 2021-04-21 2023-12-05 EMC IP Holding Company LLC Intelligent metadata compression
CN117280333A (zh) * 2021-11-19 2023-12-22 华为技术有限公司 一种目录读取系统

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675890A (ja) * 1992-08-26 1994-03-18 Chugoku Nippon Denki Software Kk クライアント・サーバ間の要求データ応答データ授受方式
US5537551A (en) * 1992-11-18 1996-07-16 Denenberg; Jeffrey N. Data compression method for use in a computerized informational and transactional network
US5325361A (en) 1992-12-01 1994-06-28 Legent Corporation System and method for multiplexing data transmissions
JP3184763B2 (ja) 1995-06-07 2001-07-09 インターナショナル・ビジネス・マシーンズ・コーポレ−ション マルチメディア直接アクセス記憶装置及びフォーマット方法
US6321274B1 (en) * 1996-06-28 2001-11-20 Microsoft Corporation Multiple procedure calls in a single request
US6385672B1 (en) * 1997-05-30 2002-05-07 3Com Corporation System to optimize packet buffer utilization via selectively partitioned transmit and receive buffer portions
JPH10334003A (ja) * 1997-06-03 1998-12-18 Nippon Joho Tsushin Consulting Kk 電子データ通信システム及び方法と電子メール通信システム及び方法
US6073137A (en) 1997-10-31 2000-06-06 Microsoft Method for updating and displaying the hierarchy of a data store
US6219669B1 (en) 1997-11-13 2001-04-17 Hyperspace Communications, Inc. File transfer system using dynamically assigned ports
CA2275840A1 (en) 1998-08-18 2000-02-18 Lucent Technologies Inc. Generalized messaging construct
US6324544B1 (en) 1998-10-21 2001-11-27 Microsoft Corporation File object synchronization between a desktop computer and a mobile device
JP4102509B2 (ja) * 1999-03-19 2008-06-18 松下電器産業株式会社 メール転送装置及びメールの転送方法
AU3767100A (en) 1999-03-22 2000-10-09 Webxi High speed streaming protocol
US6640244B1 (en) * 1999-08-31 2003-10-28 Accenture Llp Request batcher in a transaction services patterns environment
US6304898B1 (en) 1999-10-13 2001-10-16 Datahouse, Inc. Method and system for creating and sending graphical email
DE60142556D1 (de) 2000-04-10 2010-08-26 Research In Motion Ltd System und verfahren zum bündeln von informationen
AU2001287143A1 (en) 2000-09-08 2002-03-22 Plumtree Software Method and system for assembling concurrently-generated content
JP2002135297A (ja) * 2000-10-27 2002-05-10 Nippon Telegr & Teleph Corp <Ntt> 電子メールデータ中継方法及びシステム
CA2329891A1 (en) 2000-12-29 2002-06-29 Subsecond Technology Inc. Method and apparatus for remote database maintenance and access
AUPR444601A0 (en) 2001-04-17 2001-05-17 Pro-Super Holdings Limited Business tracking system
US7149813B2 (en) 2001-08-14 2006-12-12 Microsoft Corporation Method and system for synchronizing mobile devices
US7620688B2 (en) 2003-01-03 2009-11-17 Microsoft Corporation Progress mode for electronic mail component

Also Published As

Publication number Publication date
CN100534071C (zh) 2009-08-26
DE60334770D1 (de) 2010-12-16
AU2003257902B2 (en) 2009-05-07
AU2003257902A1 (en) 2004-06-03
IN2014DE02379A (ko) 2015-06-26
HK1152425A1 (en) 2012-02-24
RU2003133771A (ru) 2005-05-10
ATE487310T1 (de) 2010-11-15
CA2448170C (en) 2012-07-17
BRPI0305138B1 (pt) 2017-03-07
CA2448170A1 (en) 2004-05-20
JP4532098B2 (ja) 2010-08-25
MXPA03010478A (es) 2005-06-03
US20060265510A1 (en) 2006-11-23
EP2264970B2 (en) 2016-05-04
KR100984457B1 (ko) 2010-09-29
EP2264970B1 (en) 2013-09-11
US7451180B2 (en) 2008-11-11
CN1574795A (zh) 2005-02-02
US20040098495A1 (en) 2004-05-20
EP1453270B1 (en) 2010-11-03
EP2264970A1 (en) 2010-12-22
RU2365049C2 (ru) 2009-08-20
EP1453270A1 (en) 2004-09-01
JP2004173287A (ja) 2004-06-17
US7111039B2 (en) 2006-09-19
BR0305138A (pt) 2004-08-31

Similar Documents

Publication Publication Date Title
KR100984457B1 (ko) 클라이언트로부터의 일단의 요청에 응답하는 컴퓨터-구현된 방법, 컴퓨터-판독가능 저장 매체, 및 데이터 전송 방법
US9635143B2 (en) Systems and methods for intermediaries to compress data communicated via a remote display protocol
US9288137B2 (en) Systems and methods for allocation of classes of service to network connections corresponding to virtual channels
US8694684B2 (en) Systems and methods of symmetric transport control protocol compression
US9479480B2 (en) Systems and methods of using SSL pools for WAN acceleration
US8786473B2 (en) Systems and methods for sharing compression histories between multiple devices
US8051127B2 (en) Systems and methods for identifying long matches of data in a compression history
US8352605B2 (en) Systems and methods for providing dynamic ad hoc proxy-cache hierarchies
US7594022B2 (en) Regulating client requests in an electronic messaging environment
US20150304459A1 (en) Method and system of transmitting data over a network using a communication protocol
US20050187979A1 (en) System and method for message-level connection management
BRPI0809005A2 (pt) Sistemas e métodos para a utilização de históricos de compactação para aperfeiçoar o desempenho da rede
WO2006074064A2 (en) Method and apparatus for managing data object size in a multi-user environment
WO2019134403A1 (zh) 发送数据包的方法、装置及计算机可读存储介质
CN115914409A (zh) 一种waf安全防护日志实现高效传输、存储的方法及装置
Chiozzi et al. VERY LARGE TELESCOPE

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130813

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140814

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150819

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160818

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170818

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180816

Year of fee payment: 9