[go: up one dir, main page]

KR100289521B1 - 통신링크를통해전송되는데이타를감소시키는방법및장치 - Google Patents

통신링크를통해전송되는데이타를감소시키는방법및장치 Download PDF

Info

Publication number
KR100289521B1
KR100289521B1 KR1019970707262A KR19970707262A KR100289521B1 KR 100289521 B1 KR100289521 B1 KR 100289521B1 KR 1019970707262 A KR1019970707262 A KR 1019970707262A KR 19970707262 A KR19970707262 A KR 19970707262A KR 100289521 B1 KR100289521 B1 KR 100289521B1
Authority
KR
South Korea
Prior art keywords
socket
server
virtual
application
request
Prior art date
Application number
KR1019970707262A
Other languages
English (en)
Other versions
KR19980703862A (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
Application filed by 포만 제프리 엘, 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 포만 제프리 엘
Publication of KR19980703862A publication Critical patent/KR19980703862A/ko
Application granted granted Critical
Publication of KR100289521B1 publication Critical patent/KR100289521B1/ko

Links

Images

Classifications

    • 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/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/326Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the transport layer [OSI layer 4]
    • 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/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 TCP 프로토콜을 이용하여 제 1 컴퓨터에 상주하는 제 1 애플리케이션으로부터 외부 통신 링크를 통해 제 2 컴퓨터에 상주하는 제 2 애플리케이션으로 전송되는 데이타를 감소시키는 방법, 장치 및 컴퓨터 프로그램 제품에 관한 것이다. 본 발명은 제 1 애플리케이션의 각각의 접속 요구에 응답하여 제 1 컴퓨터에 제 1 애플리케이션이 발신한 요구 데이타를 수신하기 위한 제 1 가상 소켓을 설정하는 방법, 장치 및 컴퓨터 프로그램 제품을 포함한다. 제 1 컴퓨터의 제 1 실제 소켓과 제 2 컴퓨터의 제 2 실제 소켓은 제 1 컴퓨터가 외부 통신 링크를 통해 제 2 컴퓨터와 접속되도록 설치되고, 요구 데이타가 제 2 애플리케이션에 제공될 때까지 유지된다. 제 1 애플리케이션의 각각의 접속 요구에 대해 제 2 컴퓨터에 제 2 가상 소켓이 설치되고, 제 2 가상 소켓은 제 1 애플리케이션의 접속 요구에 응답하여 제 1 컴퓨터에 설치된 제 1 가상 소켓에 대응한다. 제 1 가상 소켓과 연관된 요구 데이타는 제 1 실제 소켓상으로 다중화되고, TCP 프로토콜을 이용하여 외부 통신 링크상으로 전송된다. 다중화된 요구 데이타는 제 2 실제 소켓에 의해 외부 통신 링크로부터 수신되어 역다중화된다. 역다중화된 요구 데이타는 대응하는 제 2 가상 소켓으로 제공되어, 이 요구 데이타가 제 2 애플리케이션에 제공되도록 한다.

Description

통신 링크를 통해 전송되는 데이타를 감소시키는 방법 및 장치{REDUCED OVERHEAD TCP COMMUNICATION SYSTEM}
최근 ";정보 수퍼하이웨이(information superhighway)";에 대한 대중화 및 강조에 따라 대량 통신 매체로서의 인터넷(Internet)의 인식 및 수용이 증가하였다, 또한, 다수 네트워크간의 통신 및 대화를 위한 실행가능한 매체로서의 인터넷에 대한 인식에 기초한 이러한 증가에 따라 컴퓨터 네트워크간의 대화를 위한 인터넷 표준 프로토콜에 따라 구축된 대규모의 고정 사용자 베이스(a large established user base)가 생성되었다.
이러한 인터넷에 대한 전형으로서 인터넷 클라이언트(브라우저)가 인터넷 서버와 통신하는 클라이언트-서버 관계를 들 수 있다. 인터넷이 보다 폭넓게 액세스될 수 있도록 클라이언트 및 서버에 의해 사용되는 통신 프로토콜 및 언어가 표준화되었다. 이들 프로토콜로는 클라이언트와 서버간의 통신에 사용되는 통신 프로토콜인 하이퍼-텍스트 전송 프로토콜(Hyper-Text Transfer Protocol:HTTP)과, 컴퓨터들 또는 애플리케이션간의 통신을 위한 전송 특정 프로토콜인 전송 제어 프로토콜(Transfer Control Protocol:TCP)을 포함하는 전송 제어 프로토콜/인터넷 프로토콜(Transfer Control Protocol/Internet Protocol:TCP/IP)이 포함된다. 클라이언트와 서버가 통신하는 언어는 HTML(Hyper-Text Markup Language)로 칭해지는 언어로 표준화되었다. 이들 프로토콜 및 언어는 머신(machine) 독립적이고 정보를 전송하는데 있어서 비접속의 최선 프로토콜(connectionless best efforts protocol)을 이용하므로, 각 트랜잭션(transaction)은 충분히 독립적이다. 따라서, 예컨대, 클라이언트로부터의 각 메시지는 브라우저의 능력에 대한 정보를 포함하며, 임의의 통신은 다른 통신과 독립적으로 완료된다. 클라이언트와 서버간에 이와 같이 독립적 성질을 갖는 통신을 ";스테이트리스(stateless)"; 통신이라고 칭하며, 임의의 주어진 통신을 위해 클라이언트와 서버 사이에 전송되어야 하는 데이타의 양을 증가시킨다.
월드 와이드 웹(World Wide Web:WWW) 클라이언트/서버 애플리케이션 환경에서, 클라이언트는 사용자 인터페이스로서 기능하는 웹 브라우저(web browser)일 수 있다. 웹 브라우저는 사용자 요구를 적절한 웹 서버(web server)에게로 전송하고, 웹 서버로부터 리턴(return)된 HTML 데이타를 포맷하여 디스플레이한다. 또한, 웹 브라우저는 HTML 데이타를 평가하여, HTML의 데이타내에 이후 브라우저에 의해 초기화되는 후속하는 브라우저 요구를 필요로 하는 임의의 하이퍼-링크 스테이트먼트(hyper-link statements)가 포함되어 있는지의 여부를 판정한다. 웹 서버는 클라이언트에 대해 서버로서 동작하며, 웹 브라우저의 요구를 처리하여, 요구된 응답을 HTTP 데이타 스트림의 HTML 데이타 일부로서 리턴시킨다.
전형적인 월드 와이드 웹(WWW) 통신의 하나의 예로서, 웹 서버로부터 ";홈 페이지(home page)";에 대한 요구를 초기화시키는 웹 브라우저의 경우가 있는데, HTTP, HTML, TCP와 웹 브라우저 및 서버간의 기본적인 관계를 나타낸다. 웹 브라우저의 사용자가 지정 웹 사이트(web site)로부터 정보를 요구하면, 웹 브라우저는 웹 서버에게로, 예컨대, ";홈 페이지";일 수 있는 바람직한 웹 사이트의 URL(Universal Resource Locator)을 지정하는 ";획득(get)"; 요구를 전송함으로써 웹 서버와 통신을 개시한다. URL은 웹 사이트의 어드레스로서 기능하며 인터넷 전체를 통해 고유하다. 그러면, 웹 서버는 URL에 의해 지정된 홈 페이지에 대응하는 HTML 데이타를 획득하여 이를 웹 브라우저에게 제공한다. 이러한 동작은 인터넷 웹 서버에 의한 인터넷상의 통신을 또한 수반할 수도 있고, 또는 URL은 브라우저가 부착된 로컬 네트워크에 위치하는 서버를 지정할 수 있다. 다음으로, 웹 브라우저는 웹 서버로부터 HTTP 데이타 스트림으로서 수신된 HTML 데이타를 평가하여, 아이콘(icon) 또는 이미지와 같은 임의의 내장 하이퍼-링크가 존재하는지의 여부를 판정한다. 이러한 하이퍼-링크가 존재하면 하이퍼-링크의 URL을 지정하는 요구를 개시하여 지정된 데이타를 획득한다. 그리고 나서, 이 데이타는 홈 페이지내로 편입되어 사용자에게 디스플레이된다. 이와 같은 간단한 실시예에서 알수 있는 바와 같이, 웹 브라우저에 의한 단일 사용자 입력 요구에 의해, 이러한 사용자 입력 요구에 대응하는 HTML 데이타의 수신에 응답하여 웹 브라우저에 의해 자동으로 수행되는 다수의 부가적인 요구가 생성될 수 있다.
도 1에는 인터넷 기반 시스템에 대한 기본적인 통신 구조가 도시되어 있다. 도 1에서, 웹 브라우저(10)는 통신 링크(15)를 통해 웹 서버(20)와 통신한다. 이러한 통신 링크는 통상적으로 근거리망 접속, 광역망 접속, 전화선을 통한 접속 또는 이들의 조합이다. 웹 브라우저(10)는 TCP/IP를 이용하여 웹 서버(20)와 통신한다. 대부분의 인터넷 통신에서, 웹 브라우저는, 웹 브라우저와 웹 서버간의 TCP/IP 링크를 통해 웹 브라우저와 웹 서버 사이에 전송되는 일반적인 통신 프로토콜인 HTTP를 이용하여 웹 서버와 통신한다. 전술한 바와 같이, 웹 브라우저(10)와 웹 서버(20)간에 전송되는 실제 데이타는 HTTP 데이타 객체(예를 들어, HTML 데이타)이다. 웹 서버(20)는 다수의 웹 브라우저로부터 웹 브라우저 통신을 수신하고 이들을 적절한 서버에게로 라우팅하는 프락시(proxy)일 수 있다.
웹 브라우저/웹 서버와 이들의 공통적인 정보 및 전송 프로토콜, 즉, HTML 및 HTTP의 대중화로 인해 웹 기술이 정보에 대한 네트워크 액세스를 위한 범용 인터페이스로서 급속히 채택되기에 이르렀다. 또한, 웹 브라우저와 웹 서버간의 통신에 대한 프로토콜 및 언어가 표준화됨에 따라, 사용자가 네트워크 정보를 액세스하기 위해 웹 브라우저로서 Netscape NavigatorTM, NCSA MosaicTM, Web ExplorerTM또는 임의의 다른 웹 브라우저를 사용하는지에 관계없이 통신 프로토콜 및 언어는 동일하다. 따라서, 인터넷 접속물과 결합된 웹 브라우저에 대한 대규모의 고정 사용자 베이스와, HTTP로 정의된 공통 게이트웨이 인터페이스(Common Gateway Interface:CGI)를 사용한 웹 애플리케이션 서버 작성에 있어서의 용이성으로 인해 대규모 클래스의 형식-기반 애플리케이션(forms-based applications)에 대해 웹 기술이 매우 유용하게 되었다.
인터넷이 대중화 및 보편화됨과 동시에 이동 컴퓨팅도 또한 대중화가 증가되었다. 랩탑, 노트북, PDA/PCA(Personal Digital/Communication Assistants) 및 다른 휴대형 장치의 사용 증가로 인해 무선 통신의 수요가 급격히 증가되었다. 그러나, 무선 광역망, 셀룰라 통신 및 패킷 무선 신호가 웹 환경에서 사용될 경우 공통적인 문제점들이 발생되었다. 정보 바이트당 고비용과, 낮은 응답 시간과, 낮은 대역폭과, 낮은 신뢰성은 모두 월드 와이드 웹(world wide web)의 스테이트리스 통신 프로토콜에서 무선 기술의 사용을 방해하는 요인이 된다. 또한, 웹 프로토콜은 스테이트리스이므로, 요구당 데이타의 양과 무선 접속을 통해 전송되는 통신 요구의 수는 통신이 독립형이 아닐 경우에 필요하게 되는 양보다 많다. 따라서, 웹 기술의 보편성에 있어서의 능력이 무선 기술의 단점을 더욱 악화시키므로, 무선 기술 또는 임의의 저속 통신 기술을 웹 기술과 조합하는 것은 비실용적인 것처럼 보인다.
본 발명은 웹 브라우저(web browser) 및 웹 서버(web server)와 같은 클라이언트-서버 애플리케이션들(client server applications)간의 통신에 관한 것이다. 특히, 본 발명은 한쪽 컴퓨터가 클라이언트 애플리케이션을 실행하고 다른쪽 컴퓨터가 서버 애플리케이션을 실행하는 두개의 컴퓨터들 사이의 저속 또는 무선 통신 링크를 통한 통신에 관한 것으로서, 이들 통신은 통신 프로토콜로서 TCP/IP(Transfer Control Protocol/Internet Protocol)를 이용한다.
도 1은 전형적인 웹 브라우저/웹 서버 시스템의 블럭도,
도 2는 클라이언트 인터셉트 및 서버 인터셉트를 이용하는 본 발명의 하나의 실시예에 따른 웹 브라우저/웹 서버 시스템의 블럭도,
도 3은 코히어런트 캐쉬 시스템을 구현하는 본 발명의 바람직한 실시예의 클라이언트측 인터셉트 모듈에 의해 수행되는 동작을 도시한 흐름도,
도 4는 코히어런트 캐쉬 시스템을 구현하는 본 발명의 바람직한 실시예의 클라이언트측 인터셉트 모듈에 의해 수행되는 동작을 도시한 흐름도,
도 5는 코히어런트 캐쉬 시스템을 구현하는 본 발명의 바람직한 실시예의 서버측 인터셉트 모듈에 의해 수행되는 동작을 도시한 흐름도,
도 6은 코히어런트 캐쉬 시스템을 구현하는 본 발명의 바람직한 실시예의 서버측 인터셉트 모듈에 의해 수행되는 동작을 도시한 흐름도,
도 7은 차분 데이타 전송 시스템을 구현하는 본 발명의 바람직한 실시예의 클라이언트측 인터셉트 모듈에 의해 수행되는 동작을 도시한 흐름도이다.
도 8은 차분 데이타 전송 시스템을 구현하는 본 발명의 바람직한 실시예의 클라이언트측 인터셉트 모듈에 의해 수행되는 동작을 도시한 흐름도,
도 9는 차분 데이타 전송 시스템을 구현하는 본 발명의 바람직한 실시예의 서버측 인터셉트 모듈에 의해 수행되는 동작을 도시한 흐름도,
도 10은 차분 전송 시스템을 구현하는 본 발명의 바람직한 실시예의 서버측 인터셉트에 의해 수행되는 동작을 도시한 흐름도,
도 11은 가상 소켓을 이용하는 본 발명의 한가지 측면을 설명하기 위한 블럭도,
도 12는 가상 소켓을 이용하는 본 발명의 하나의 실시예에 따른 클라이언트측 인터셉트 모듈 및 서버측 인터셉트 모듈의 블럭도,
도 13은 가상 소켓을 이용하는 본 발명의 하나의 실시예에 따른 클라이언트측 인터셉트 모듈 또는 서버측 인터셉트 모듈의 소켓 관리자에 의해 수행되는 동작을 도시한 흐름도,
도 14는 가상 소켓을 이용하는 본 발명의 하나의 실시예의 클라이언트측 인터셉트 함수에 의해 수행되는 동작을 도시한 흐름도,
도 15는 가상 소켓을 이용하는 본 발명의 하나의 실시예의 서버측 인터셉트 함수에 의해 수행되는 동작을 도시한 흐름도,
도 16-1은 가상 소켓을 이용하는 본 발명의 하나의 실시예에 따른 가상 생성 동작을 도시한 흐름도,
도 16-2는 가상 소켓을 이용하는 본 발명의 하나의 실시예에 따른 가상 전송 동작을 도시한 흐름도,
도 16-3은 가상 소켓을 이용하는 본 발명의 하나의 실시예에 따른 가상 수신 동작을 도시한 흐름도,
도 16-4는 가상 소켓을 이용하는 본 발명의 하나의 실시예에 따른 가상 선택 동작을 도시한 흐름도,
도 17-1은 가상 소켓을 이용하는 본 발명의 하나의 실시예에 따른 가상 플러쉬 동작을 도시한 흐름도,
도 17-2는 가상 소켓을 이용하는 본 발명의 하나의 실시예에 따른 가상 폐쇄 동작을 도시한 흐름도이다.
본 발명의 목적은 전술한 문제점을 해결하기 위한 것으로 애플리케이션들간의 데이타 전송에 대한 오버헤드의 양을 감소시킨 통신 시스템을 제공하는데 있다.
본 발명의 다른 목적은 웹 브라우저/서버 환경에서 이용될 수 있는 통신 시스템을 제공하는데 있다.
본 발명의 또다른 목적은 웹 브라우저 또는 웹 서버 애플리케이션을 변경할 필요없이 저속 또는 무선 통신 시스템의 기존의 통신 프로토콜 및 언어와 호환할 수 있도록 하는데 있다.
본 발명의 또다른 목적은 TCP/IP 통신 프로토콜을 이용하는 애플리케이션들 사이에 요구되는 통신의 양을 감소시킴으로써 통신 시스템의 성능을 향상시킨 통신 시스템을 제공하는데 있다.
전술한 목적 및 다른 목적의 관점에서, 본 발명은 제 1 컴퓨터에 상주하는 제 1 애플리케이션으로부터 제 2 컴퓨터에 상주하는 제 2 애플리케이션으로 통신 링크를 통해 전송되는 데이타 양을 감소시키기 위한 방법을 제공하는 것으로서, 이때 데이타는 TCP 통신 프로토콜을 이용하여 제 1 컴퓨터로부터 외부 통신 링크를 통해 제 2 컴퓨터로 전송된다. 본 발명의 방법은 제 1 애플리케이션에 의한 각각의 접속 요구에 응답하여 제 1 컴퓨터에, 제 1 애플리케이션이 발신한 요구 데이타를 수신하기 위한 제 1 가상 소켓(virtual socket)을 설치하는 단계를 포함한다. 제 1 컴퓨터가 외부 통신 링크를 통해 제 2 컴퓨터와 접속되도록 제 1 컴퓨터에 제 1 실제 소켓(real socket)을 설치하고 제 2 컴퓨터에 제 2 실제 소켓을 설치한다. 제 2 컴퓨터에는, 제 1 애플리케이션에 의한 각 접속 요구에 대해 제 2 가상 소켓이 설치되고, 제 2 가상 소켓은 제 1 애플리케이션에 의한 접속 요구에 응답하여 제 1 컴퓨터에 설치된 제 1 가상 소켓에 대응한다. 제 1 가상 소켓과 연관된 요구 데이타는 제 1 실제 소켓상으로 다중화되고, TCP 프로토콜을 이용하여 외부 통신 링크를 통해 제 2 실제 소켓으로 전송된다. 다중화된 요구 데이타는 제 2 실제 소켓에 의해 외부 통신 링크로부터 수신되며 역다중화된다. 역다중화된 요구 데이타는 제 1 애플리케이션으로부터의 요구에 응답하여 설치된 제 1 가상 소켓에 대응하는 제 2 가상 소켓에게로 제공된다. 제 2 가상 소켓에 의해 수신된 요구 데이타는 제 2 애플리케이션에게로 제공된다. 또한, 제 1 및 제 2 실제 소켓은 제 1 가상 소켓을 설치한 제 1 애플리케이션으로부터의 요구에 대응하는 요구 데이타가 제 2 애플리케이션에 제공될 때까지 유지된다.
본 발명의 다른 실시예에서, 응답 데이타는 제 1 애플리케이션으로부터의 요구에 응답하여 제 1 애플리케이션으로부터의 요구와 연관된 제 2 가상 소켓에서 제 2 애플리케이션으로부터 수신한다. 제 2 가상 소켓에 의해 수신된 응답 데이타는 제 2 실제 소켓상으로 다중화되고, 외부 통신 링크를 통해 제 1 실제 소켓으로 전송된다. 다중화된 응답 데이타는 제 1 실제 소켓에 의해 외부 통신 링크로부터 수신되어 역다중화된다. 역다중화된 응답 데이타는 제 1 애플리케이션으로부터의 요구에 응답하여, 제 1 애플리케이션으로부터의 요구에 대응하는 제 1 가상 소켓에 제공된다. 제 1 가상 소켓은 제 1 가상 소켓에 의해 수신된 응답 데이타를 제 1 애플리케이션에 제공한다.
본 발명의 또 다른 실시예에 있어서, 응답 데이타가 다중화된 후에 제 2 가상 소켓이 폐쇄된다. 제 1 가상 소켓은 응답 데이타가 제 1 애플리케이션에 제공된 후에 폐쇄된다.
본 발명의 또 다른 실시예에서, 제 1 및 제 2 실제 소켓은 모든 제 1 소켓이 폐쇄된 때에 폐쇄된다. 대안적으로, 제 1 가상 소켓이 모두 폐쇄된지 사전결정된 시간 후에 제 1 및 제 2 실제 소켓이 폐쇄된다.
본 발명의 하나의 특정 측면에서, 제 1 애플리케이션은 웹 서버를 포함하고 제 2 애플리케이션은 웹 브라우저를 포함한다. 본 발명의 다른 측면에서 외부 통신 링크는 무선 통신 링크를 포함한다.
당분야에 통상의 지식을 가진 자라면 이해하듯이, 전술한 본 발명의 측면들은 컴퓨터에 의해 판독가능한 프로그램 수단을 구비한 장치 또는 프로그램 제품으로 제공될 수 있다.
이하, 본 발명의 바람직한 실시예가 도시된 첨부된 도면을 참조하여 본 발명을 더욱 상세히 기술할 것이다. 그러나, 본 발명의 다수의 상이한 형태로 구현될 수 있고, 본 명세서에 개시된 실시예들에 제한되는 것으로 해석되어서는 안되며, 오히려 이들 실시예는 개시내용이 충분하고 완전하게 되도록 제공되며 당분야에 숙련된 자에게 본 발명의 범주를 충분히 전하게 된다. 전체 도면에 걸쳐 동일한 참조 부호는 동일한 구성 요소를 나타낸다.
도 3 내지 도 10과 도 13 내지 도 17-2는 본 발명에 따른 방법 및 시스템을 도시한 흐름도이다. 예시된 흐름도의 각각의 블럭과 예시된 흐름도의 블럭의 조합들은 컴퓨터 프로그램 인스트럭션에 의해 구현될 수 있음을 알 것이다. 이들 컴퓨터 프로그램 인스트럭션은 컴퓨터 또는 다른 프로그램가능 장치상에서 실행되는 인스트럭션들이 흐름도의 블럭(들)에 지정된 기능을 수행하는 수단을 생성하도록 머신(machine)을 생성하기 위해 컴퓨터 또는 다른 프로그램가능 장치상에 로딩될 수 있다. 이들 컴퓨터 프로그램 인스트럭션은 컴퓨터 또는 다른 프로그램가능 장치를 특정한 방식으로 기능하게 할 수 있는 것으로서 컴퓨터에 의해 판독가능한 메모리에 저장되어, 흐름도의 블럭(들)에 지정된 기능을 구현하는 인스트럭션 수단을 포함하는, 컴퓨터에 의해 판독가능한 메모리에 저장된 인스트럭션들에 의해 제조 물품을 생산할 수 있다. 또한, 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 다른 프로그램가능 장치상에 로딩되어 일련의 동작 단계들이 컴퓨터 또는 다른 프로그램가능 장치들상에서 수행되게 함으로써, 컴퓨터에 의해 실행되는 프로세스를 생성해서 컴퓨터 또는 다른 프로그램가능 장치들에서 실행되는 인스트럭션들이 흐름도의 블럭(들)에 지정된 기능을 실행하는 단계들을 제공한다.
따라서, 예시된 흐름도의 블럭들은 지정된 기능을 수행하는 수단들의 조합과 지정된 기능을 수행하는 단계들의 조합을 지원한다. 예시된 흐름도의 각각의 블럭과 그의 조합은 지정된 기능 또는 단계를 수행하는 특수 목적의 하드웨어 기반의 컴퓨터 또는 특수 목적의 하드웨어와 컴퓨터 인스트럭션의 조합에 의해 구현될 수도 있음을 이해하여야 한다.
도 2는 본 발명의 하나의 실시예를 도시한 도면이다. 도 2에 도시된 바와 같이, 웹 브라우저(10)는 클라이언트측 인터셉트 모듈(client-side intercept module: CSI)(30)과 통신한다. 웹 서버(20)는 서버측 인터셉트 모듈(server-side intercept module: SSI)(40)과 통신한다. 이어서, 클라이언트측 인터셉트 모듈(30)은 통신 링크(35)를 통해 서버측 인터셉트 모듈(40)과 통신한다. 웹 브라우저(10)와 클라이언트측 인터셉트 모듈(30)은 제 1 컴퓨터(5)내에 포함될 수 있다. 서버측 인터셉트 모듈(40)과 웹 서버(20)는 제 2 컴퓨터(6)내에 포함될 수 있다. 제 1 컴퓨터(5)와 제 2 컴퓨터(6)는 외부 통신 링크(35)를 통해 통신한다.
바람직하게, 웹 브라우저(10)는 HTTP 및 HTML을 이용하는 인터넷 웹 브라우저로서, 마찬가지로 HTTP 및 HTML을 사용하는 인터넷 웹 서버(20)와 통신한다. 동작시, 웹 브라우저(10)는 HTTP 데이타 스트림을 출력하며, 이 HTTP 데이타 스트림은 클라이언트측 인터셉트 모듈(30)에 의해 인터셉트된다. 클라이언트측 인터셉트 모듈(30)에 의한 HTTP 데이타 스트림의 인터셉트는, 클라이언트측 인터셉트 모듈(30)이 127.0.0.1과 같은 127 네트워크 번호를 갖는 IP 어드레스에서 상주하는, TCP/IP의 루프백 특징(loop-back feature)을 이용함으로써 달성될 수 있다. 이어서, 클라이언트측 인터셉트 모듈(30)은 HTTP 데이타 스트림을 클라이언트/서버 특정 프로토콜(client-server specific protocol)로 변환하거나 변형하고, 클라이언트/서버 특정 데이타 스트림을 외부 통신 링크(35)상으로 전송한다. 서버측의 인터셉트 모듈(40)은 클라이언트/서버 특정 데이타 스트림을 수신하고, 웹 브라우저가 발신한 통신(web browser originated communication)에 대응하는 원래의 HTTP 데이타 스트림을 재구성한다. 이어서, 재구성된 HTTP 데이타 스트림은 웹 서버(20)로 전송된다. 웹 서버(20)는 통상적인 인터넷 웹 서버의 방식으로 HTTP 데이타 스트림에 응답한다. 본 기술 분야에 통상의 지식을 가진 자라면 이해하듯이, 웹 서버(20)는 또한 다수의 브라우저가 인터넷에 접속할 수 있게 하는 프락시일 수 있다.
예를 들어, 특정 URL 홈 페이지에 대한 브라우저 요구에 응답하여 웹 서버(20)가 웹 브라우저(10)에 전송하기 위한 정보를 수신하면, 웹 서버(20)는 통신에 대응하는 HTTP 데이타 스트림을 웹 브라우저(10)로 출력한다. 웹 서버가 발신한 이와 같은 통신은 서버측 인터셉트 모듈(40)에 의해 인터셉트되고, 클라이언트/서버 특정 데이타 스트림으로 변환된다. 이어서, 이 웹 서버가 발신한 통신에 대응하는 클라이언트/서버 특정 데이타 스트림은 제 2 컴퓨터로부터 외부 통신 링크(35)를 통해 제 1 컴퓨터로 전송된다. 클라이언트/서버 특정 데이타 스트림은 클라이언트측 인터셉트 모듈(30)에 의해 수신되고, 웹 서버가 발신한 통신에 대응하는 원래의 HTTP 데이타 스트림이 재구성되어 웹 브라우저(10)에 제공된다.
본 발명의 특정한 실시예에 있어서, 외부 통신 링크(35)는 무선 통신 링크이다. 이 경우, 사용자가 받아들일 수 있을 정도의 시스템 성능을 얻기 위해서는 외부 통신 링크(35)상으로 전송되어야 하는 통신의 빈도 및 정보의 양 측면 모두에서 통신 링크(35)를 통한 통신의 양을 감소시키는 것이 바람직하다. 따라서, 본 발명은 캐쉬 기법, 차분 기법 및 프로토콜 감축 기법을 이용하여 외부 통신 링크(35)상에서 필요로 하는 통신의 양을 최소화할 수 있다. 이러한 기법들은 HTTP의 스테이트리스 또는 확률적 프로토콜을 클라이언트/서버 특정 프로토콜로 변환함으로써 성취되며, 클라이언트/서버 특정 프로토콜은 클라이언트 및 서버에 대해 특정된 정보를 이용하여 통신의 양 및 빈도를 감소시킨다.
본 발명이 단일 웹 브라우저 애플리케이션 및 단일 웹 서버 애플리케이션에 대해 기술되었고 기술될 것이지만, 당 분야에 통상의 지식을 가진 자라면 이해하듯이, 본 발명의 이점 및 장점들은 단일 웹 서버와 연관된 다수의 웹 브라우저를 이용함으로써 또한 달성될 수 있다. 따라서, 본 발명의 방법, 장치 및 프로그램 제품은 클라이언트측 인터셉트 모듈 및 이들 클라이언트측 인터셉트 모듈과 각각 통신하는 다수의 브라우저와 접속하여 웹 프락시 또는 웹 서버의 서버측 인터셉트 모듈과 통신한다.
본 발명의 하나의 실시예에 있어서, 클라이언트측 인터셉트 모듈(30) 및 서버측 인터셉트 모듈(40)은 캐쉬 저장 능력을 갖는다. 제 1 컴퓨터에 상주하는 클라이언트 캐쉬는 웹 브라우저가 발신한 통신에 응답하여 웹 브라우저가 수신할 HTTP 데이타 스트림을 저장한다. 제 2 컴퓨터에 상주하는 서버 캐쉬는 브라우저가 발신한 통신에 응답하여 웹 서버가 수신한 HTTP 데이타 스트림을 저장한다.
당분야에 통상의 지식을 가진 자라면 이해하듯이, 제 1 컴퓨터 또는 제 2 컴퓨터에 상주하는 캐쉬는 컴퓨터의 특정 하드웨어 구성을 기초로 하여 어떤 크기라도 가질 수 있다. 이들 캐쉬는 각 통신에 대한 정보, 즉, 통신 URL과, 통신 데이타의 CRC(cyclic redundancy check)와 같은 통신 내용에 기초한 고유 식별자와, 캐쉬 엔트리가 생성 또는 재생된 시간을 나타내는 저장 일시(store date time: SDT) 와, 통신 데이타를 포함하는 정보를 저장한다. 따라서, 캐쉬내에 저장된 각각의 통신에 대해 캐쉬 엔트리의 디렉토리가 생성될 수 있다. 또한, 소정의 주어진 하드웨어 구성에서의 가용 자원이 한정되어 있기 때문에, 제 1 컴퓨터 및 제 2 컴퓨터에 상주하는 캐쉬를 유지보수하기 위한 당 분야에 통상의 지식을 가진 자에게 잘 알려진 임의 수의 캐쉬 기법이 이용될 수 있다. 따라서, 예를 들어, 새로운 엔트리를 추가함으로써 사용자 정의 캐쉬 사이즈를 초과된 경우, 캐쉬는 가장 오래된 디렉토리 엔트리를 무효화(invalidate)시키고, 무효화된 엔트리 대신에 새로운 엔트리를 추가할 수 있다. 또한, 캐쉬 엔트리는 웹 브라우저 또는 웹 서버 애플리케이션의 복수 인스탄스(instances)에 걸쳐 혹은 심지어 제 1 또는 제 2 컴퓨터의 파워온 사이클에 걸쳐 지속적 캐쉬(persistent cache)를 생성하도록 유지될 수 있다.
이하, 클라이언트측 인터셉트 모듈(30) 및 서버측 인터셉트 모듈(40)의 동작을 기술한 흐름도인 도 3 내지 도 6을 참조하여 본 발명의 하나의 측면에 따른 캐쉬 구조의 동작이 기술된다.
구체적으로, 도 3을 참조하면, 블럭(100)에서 클라이언트측 인터셉트 모듈(30)은 웹 브라우저(10)로부터 요구를 수신한다. 이러한 요구는 HTTP 데이타 스트림의 형태를 취할 수 있다. 블럭(105)에서 클라이언트측 인터셉트 모듈(30)은 입력되는 요구의 URL을 검사한다. 클라이언트측 인터셉트 모듈(30)은 URL로부터 웹 브라우저가 발신한 요구에 대응하는 정보가 제 1 컴퓨터에 상주하는 클라이언트 캐쉬내에 이전에 저장되어 있는지의 여부를 판정한다.
URL에 대응하는 정보가 클라이언트 캐쉬에 이전에 저장되어 있지 않으면, 클라이언트측 인터셉트 모듈에 의해 블럭(106)에 도시된 동작이 수행된다. 클라이언트측 인터셉트 모듈(30)은 외부 통신 링크(35)를 통해 요구를 서버측 인터셉트 모듈(40)에게로 전송한다.
그러나, 블럭(105)에 도시된 바와 같이 웹 브라우저가 발신한 통신에 대해 질의하였을 때 웹 브라우저가 발신한 통신에 대응하는 클라이언트 캐쉬 엔트리가 존재하면, 가장 간단한 실시예에서 이 정보는 웹 브라우저에 HTTP 데이타 스트림으로서 제공된다. 그러나, 도 3에 도시된 바와 같이, 본 발명의 바람직한 실시예에서는 웹 브라우저가 발신한 통신에 대응하는 캐쉬 엔트리에 대하여 소위 코히어런시 인터벌 검사(coherency interval check)를 수행한다. 이러한 동작은 도 3의 블럭(110)에 도시되어 있다.
클라이언트측 인터셉트 모듈에 대한 코히어런시 인터벌은 사용자에 의해 정의될 수 있는 것으로서, 실효(失效)될 때까지 캐쉬 엔트리가 존재할 수 있는 시간으로서, 캐쉬 엔트리는 비록 존재할 경우에도 웹 브라우저가 발신한 통신에 대응하는 정보를 웹 서버로부터 요구함으로써 리프레쉬되어야 한다. 블럭(110)에 도시된 코히어런시 인터벌 검사는 현재의 날짜 및 시간을, 웹 브라우저가 발신한 통신에 대응하는 캐쉬 엔트리의 SDT와 사용자에 의해 특정된 코히어런시 인터벌의 합과 비교함으로써 이루어질 수 있다. 현재의 날짜 및 시간이 이러한 합보다 크면, 웹 브라우저가 발신한 통신에 대응하는 캐쉬에 저장된 정보는 실효된 것이므로 블럭(110)의 ";아니오"; 경로가 선택된다. 그러나, 현재의 날짜 및 시간이 SDT와 사용자가 정의한 코히어런시 인터벌의 합보다 작으면, 블럭(111)에 도시된 바와 같이, 블럭(110)의 ";예"; 경로가 선택되고, 이 캐쉬 엔트리가 브라우저에 HTTP 데이타 스트림으로서 제공된다. 이와 같이 하여, 도 3에 도시된 블럭(100)의 클라이언트측 인터셉트 모듈(30)에 의해 수신된 브라우저 발신 통신이 완료된다.
블럭(110)에 도시된 코히어런시 인터벌 검사에서 제 1 컴퓨터에 상주하는 캐쉬 엔트리가 실효된 것으로 판정되면, 서버측 인터셉트 모듈(40)에 대한 요구를 작성하여 제 2 컴퓨터에 상주하는 캐쉬 엔트리의 코히어런시를 검사한다. 이러한 동작은 도 3의 블럭(112)에 도시되어 있다. 이것은 특정한 클라이언트측 인터셉트 모듈(30)에 대한 코히어런시 인터벌과, 웹 브라우저(10)가 발신한 HTTP 요구와, 웹 브라우저가 발신한 통신의 URL에 대응하는 클라이언트 캐쉬 내용의 고유 표시자(indicia)를 외부 통신 링크(35)를 거쳐 서버측 인터셉트 모듈(40)에 제공함으로써 달성된다. 바람직한 실시예에서, 이러한 고유 표시자는 캐쉬 엔트리에 대한 CRC 결과이다.
도 5를 참조하면, 외부 통신 링크(35)를 통해 클라이언트측 인터셉트 모듈(30)로부터 수신된 정보에 응답하여 수행되는 서버측 인터셉트 모듈의 동작이 도시되어 있다. 서버측 인터셉트 모듈(40)이 클라이언트측 인터셉트 모듈로부터 요구를 수신하면, 서버측 인터셉트 모듈(40)은 사전결정된 클라이언트 코히어런시 시간 인터벌, 클라이언트 캐쉬 엔트리에 대한 CRC 값 및 웹 브라우저가 발신한 HTTP 요구를 수신한다. 이러한 정보의 수신은 도 5의 블럭(120)에 도시되어 있다.
클라이언트측 인터셉트 모듈(30)로부터 정보를 수신한 후, 서버측 인터셉트 모듈(40)은 제 2 컴퓨터에 상주하는 서버 캐쉬를 검사하여, 웹 브라우저가 발신한 HTTP 요구의 URL에 대응하는 서버 캐쉬 엔트리가 존재하는지의 여부를 판정한다. 블럭(125)에 도시된 바와 같이, 웹 브라우저가 발신한 통신에 대해 질의한 후, 웹 브라우저가 발신한 통신에 의해 요구된 정보에 대응하는 캐쉬 엔트리가 존재하는 것으로 서버측 인터셉트 모듈(40)이 판정하면, 블럭(125)의 ";예"; 경로가 선택된다. 이어서, 서버측 인터셉트 모듈(40)은 SSI 모듈(40)의 현재의 날짜 및 시간을 웹 브라우저가 발신한 통신에 의해 요구된 정보에 대응하는 서버 캐쉬 엔트리의 SDT와 클라이언트측 인터셉트 모듈로부터 수신된 사전결정된 클라이언트 코히어런시 시간 인터벌의 합과 비교한다.
현재의 날짜 및 시간이 서버 캐쉬 엔트리에 대한 SDT 및 코히어런시 인터벌의 합보다 작으면, 도 5의 블럭(130)의 ";예"; 경로가 선택된다. 이어서, 서버측 인터셉트 모듈(40)은 서버 캐쉬 엔트리의 CRC를 클라이언트 캐쉬 엔트리의 CRC와 비교하여, 두개의 캐쉬 엔트리가 동일한지의 여부를 판정한다. 두개의 캐쉬 엔트리가 동일하면 블럭(135)의 ";예"; 경로가 선택되고, 블럭(136)에 도시된 바와 같이 ";코히어런트"; 응답이 클라이언트측 인터셉트 모듈(30)로 제공된다.
블럭(135)의 조건에서 CRC가 동일하지 않은 것으로 판정되면, 클라이언트 캐쉬와 서버 캐쉬에 포함된 정보는 동일하지 않은 것이며, 블럭(137)에 도시된 바와 같이 서버측 인터셉트 모듈은 외부 통신 링크를 통해 서버 캐쉬 엔트리를 제 1 컴퓨터에 제공한다. 서버 캐쉬 엔트리를 클라이언트측 인터셉트 모듈(30)에 전송시, 서버측 인터셉트 모듈은 이 엔트리를 클라이언트 특정 통신 프로토콜로 변환하며, 이 프로토콜은 서버 캐쉬 엔트리의 CRC와, 서버 캐쉬 엔트리의 데이타와, 서버 캐쉬 엔트리의 연령(age)을 포함한다. 서버 캐쉬 엔트리의 연령은 현재의 날짜 및 시간으로부터 캐쉬 엔트리의 SDT를 감산함으로써 계산된다.
마지막으로, 도 5를 참조하면, SDT와 사전결정된 클라이언트 코히어런시 시간 인터벌의 합이 현재의 날짜 및 시간보다 작거나 웹 브라우저가 발신한 통신의 URL에 대응하는 캐쉬 엔트리가 존재하지 않으면, 제각기 블럭(130)의 ";아니오"; 경로 또는 블럭(125)의 ";아니오"; 경로가 선택된다. 그러면, 블럭(126)의 동작이 수행되고, 서버측 인터셉트 모듈(40)은 웹 브라우저가 발신한 통신을 서버에 HTTP 데이타 스트림으로서 전송할 것이다. 서버측 인터셉트 모듈(40)이 웹 브라우저가 발신한 통신을 서버에 HTTP 데이타 스트림으로서 전송하는 경우, 서버측 인터셉트 모듈(40)은 도 6의 동작을 실행할 것이다.
도 6의 블럭(140)에 도시된 바와 같이, 웹 브라우저가 발신한 통신에 응답하여 서버측 인터셉트 모듈은 웹 서버(20)로부터 HTTP 데이타 스트림을 수신할 것이다. HTTP 데이타 스트림을 수신하면, 서버측 인터셉트 모듈(40)은 HTTP 데이타 스트림에 대한 CRC를 계산하고, HTTP 데이타 스트림을 임시 저장할 것이다. 이어서, 블럭(145)에 도시된 바와 같이, 서버측 인터셉트 모듈은 HTTP 데이타 스트림에 질의하여, 이 HTTP 데이타 스트림의 URL에 대응하는 서버 캐쉬 엔트리가 존재하는지의 여부를 판정한다. 만일 이러한 엔트리가 존재하면, 블럭(145)의 ";예"; 경로가 선택된다. 이어서, 블럭(150)에 도시된 바와 같이, 서버측 인터셉트 모듈(40)은 웹 서버(20)로부터 수신된 HTTP 데이타 스트림의 최근에 계산된 CRC를 웹 서버가 발신한 응답 통신의 URL에 대응하는 서버 캐쉬 엔트리의 CRC와 비교한다. 이들 CRC가 동일하면, 블럭(150)의 ";예"; 경로가 선택된다. 서버측 인터셉트 모듈(40)은 블럭(151)에 도시된 바와 같이 서버 캐쉬 엔트리에 대한 SDT 엔트리를 갱신하고, 블럭(152)에 도시된 바와 같이 웹 서버(20)에 의해 수신된 HTTP 데이타 스트림을 임시 저장장치로부터 삭제한다.
CRC의 비교 결과, 서버 캐쉬 엔트리가 웹 서버(20)로부터 수신된 HTTP 데이타 스트림과 다른 것으로 나타나면, 블럭(150)의 ";아니오"; 경로가 선택된다. 서버측 인터셉트 모듈(40)은 블럭(153)에 도시된 바와 같이 서버 캐쉬로부터 기존의 데이타를 삭제하고, 이어서 블럭(154)에 도시된 바와 같이 새로운 정보로 서버 캐쉬를 갱신한다. 블럭(154)에 도시된 바와 같이, 이러한 갱신은 웹 서버 통신의 CRC를 서버 캐쉬에 저장하고, 캐쉬 엔트리에 대한 SDT로서 현재의 날짜 및 시간을 캐쉬 엔트리의 일부로서 저장하며, HTTP 데이타 스트림을 저장하는 것을 포함한다. 서버 캐쉬 엔트리가 갱신되든 혹은 서버 캐쉬 엔트리가 웹 서버(20)로부터 수신된 HTTP 데이타 스트림과 동일한 것으로 검출되든, 어느 경우에 있어서나, 서버측 인터셉트 모듈은 서버 캐쉬 엔트리가 웹 브라우저가 발신한 통신에 대응하는 클라이언트 캐쉬 엔트리와 동일한지의 여부를 판정한다. 이러한 동작은 블럭(155)에 도시되어 있다.
웹 서버(20)로부터 수신된 응답에 대응하는 캐쉬 엔트리가 존재하지 않은 것으로 서버측 인터셉트 모듈(40)에 의해 판정되면, 블럭(145)의 ";아니오"; 경로가 선택된다. 블럭(146)에 도시된 바와 같이, 웹 서버로부터의 응답의 URL을 저장하고, 웹 서버로부터의 응답의 CRC를 저장하고, HTTP 데이타 스트림을 저장하고, 현재의 날짜 및 시간을 SDT로서 저장함으로써 서버 캐쉬 엔트리가 생성된다. 웹 브라우저가 발신한 통신에 대응하는 캐쉬 엔트리를 생성한 후, 블럭(155)에 도시된 바와 같이 서버측 인터셉트 모듈(40)은 이 서버 캐쉬 엔트리의 CRC를 대응하는 클라이언트 캐쉬 엔트리의 CRC와 다시 비교한다.
서버 캐쉬 엔트리와 클라이언트 캐쉬 엔트리의 비교 결과 이들 캐쉬 엔트리가 동일한 것으로 판정되면, 블럭(155)의 ";예"; 경로가 선택되고, 블럭(156)의 동작이 수행된다. 블럭(156)에서, 서버측 인터셉트 모듈(40)은 코히어런트 응답을 클라이언트측 인터셉트 모듈(30)에게로 전송한다. 서버측 인터셉트 모듈(40)은 코히어런트 응답을 전송하고 제로의 연령을 클라이언트측 인터셉트 모듈에게로 전송함으로써, 서버 요구 캐쉬 엔트리를 클라이언트/서버 특정 데이타 스트림으로 변환시킨다.
서버측 인터셉트 모듈(40)에 의해 클라이언트 캐쉬 엔트리가 웹 브라우저가 발신한 통신에 대응하는 서버 캐쉬 엔트리와 동일하지 않은 것으로 판정되면, 블럭(155)의 ";아니오"; 경로가 선택되고, 블럭(157)의 동작이 수행된다. 블럭(157)에 도시된 바와 같이, 서버측 인터셉트 모듈(40)은 서버 캐쉬 엔트리를 클라이언트/서버 특정 데이타 스트림으로 변환하거나 변형시킨다. 데이타 스트림은 서버 캐쉬 엔트리의 CRC와, 서버 캐쉬 엔트리의 HTTP 데이타 스트림과, 제로로 세트된 캐쉬 엔트리의 연령을 포함한다. 이어서, 이러한 클라이언트/서버 특정 통신이 외부 통신 링크(35)를 통해 클라이언트측 인터셉트 모듈(30)로 전송된다.
이하, 서버측 인터셉트 모듈로부터의 통신 수신시에 클라이언트측 인터셉트 모듈(30)의 동작을 도 4를 참조하여 설명한다. 블럭(160)에 도시된 바와 같이, 클라이언트측 인터셉트 모듈(30)은 외부 통신 링크(35)를 통해 전송되는 클라이언트/서버 특정 데이타 스트림을 수신하거나 획득한다. 이어서, 블럭(165)에 도시된 바와 같이 클라이언트측 인터셉트 모듈은 서버측 인터셉트 모듈(40)로부터 수신된 응답이 어떤 유형인지를 판정한다. 서버측 인터셉트 모듈(40)에 의해 클라이언트 캐쉬 엔트리가 코히어런트인 것으로 판정되면, 즉, 서버 캐쉬 엔트리와 클라이언트 캐쉬 엔트리가 동일한 것으로 나타나면, 블럭(166)에 도시된 동작이 수행된다. 블럭(166)에 도시된 바와 같이, 클라이언트측 인터셉트 모듈(30)은 현재의 날짜 및 시간과 서버측 인터셉트 모듈(40)로부터 수신된 연령간의 차를 이용하여 웹 브라우저가 발신한 통신에 대응하는 클라이언트 캐쉬 엔트리의 SDT를 갱신한다. 따라서, 제 1 컴퓨터(5)와 제 2 컴퓨터(6)의 두 클럭을 동기시킬 필요없이, 본 발명은 제 1 컴퓨터의 캐쉬 엔트리의 코히어런시 시간을 정정하여 제 2 컴퓨터의 새로운 데이타를 반영하였다. 웹 브라우저가 발신한 통신에 대응하는 클라이언트 캐쉬 엔트리의 SDT를 갱신한 후, 클라이언트측 인터셉트 모듈(30)은 클라이언트 캐쉬 엔트리를 웹 브라우저(10)에 HTTP 데이타 스트림으로서 제공한다. 이러한 동작은 블럭(174)에 도시되어 있다.
그러나, 클라이언트측 인터셉트 모듈(30)에 의해 응답 유형이 데이타 또는 데이타 스트림 응답인 것으로 판정되면, 블럭(165)의 ";스트림"; 경로가 선택되고, 블럭(167)의 동작이 수행된다. 클라이언트측 인터셉트 모듈(30)은 HTTP 데이타 스트림을 수신하여 이 데이타를 임시 저장한다. 이어서, 도 4의 블럭(170)에 도시된 바와 같이, 클라이언트측 인터셉트 모듈(30)은 웹 브라우저가 발신한 통신에 대응하는 캐쉬 엔트리가 존재하는지를 판정한다. 캐쉬 엔트리가 존재하면, 블럭(170)의 ";예"; 경로가 선택되고, 블럭(171)에 도시된 바와 같이 기존의 캐쉬 엔트리가 플러쉬(flush)된다. 이어서, 클라이언트측 인터셉트 모듈은 서버측 인터셉트 모듈(40)로부터 수신된 HTTP 데이타 스트림의 CRC를 저장하고, 현재의 날짜 및 시간과 서버측 인터셉트 모듈(40)로부터 수신된 연령간의 차를 SDT로서 저장하고, HTTP 데이타 스트림을 저장함으로써, 웹 브라우저가 발신한 통신에 대응하는 클라이언트 캐쉬 엔트리를 갱신한다. 이러한 동작은 블럭(172)에 도시되어 있다.
웹 브라우저가 발신한 통신에 대응하는 캐쉬 엔트리가 존재하지 않으면, 블럭(170)의 ";아니오"; 경로가 선택된다. 클라이언트 캐쉬 엔트리는 블럭(173)에 도시된 동작을 수행함으로써 생성된다. 블럭(173)에 도시된 바와 같이, 클라이언트측 인터셉트 모듈(30)은 서버측 인터셉트 모듈(40)로부터 수신된 HTTP 데이타 스트림의 URL을 저장하고, 서버측 인터셉트 모듈(40)로부터 수신된 HTTP 데이타 스트림의 CRC를 저장하고, HTTP 데이타 스트림을 저장함으로써, 클라이언트 캐쉬 엔트리를 생성한다. 또한, 클라이언트측 인터셉트 모듈(30)은 현재의 날짜 및 시간에서 서버측 인터셉트 모듈(40)로부터 외부 통신 링크(35)를 통해 수신된 연령을 감산함으로써 SDT를 갱신하거나 혹은 SDT를 저장한다.
그러나, 블럭들(166, 172, 173)의 동작을 통해 클라이언트측 인터셉트 모듈이 이 클라이언트 캐쉬 엔트리를 HTTP 데이타 스트림으로서 웹 브라우저(10)로 전송하건 제공하건간에 클라이언트 캐쉬 엔트리가 생성된다. 이들 동작은 도 4의 블럭(174)에 도시되어 있다.
당 분야에 통상의 지식을 가진 자라면 이해하듯이, 클라이언트 캐쉬 및 서버 캐쉬는 메모리로 구현되거나 혹은 하드 디스크, 판독/기록 CD-ROM, 광 디스크 또는 다른 저장 기술과 같은 대량 저장장치로 구현될 수 있다. 또한, 당 분야에 통상의 지식을 가진 자라면 이해하듯이, 클라이언트측 인터셉트 모듈과 서버측 인터셉트 모듈은 소프트웨어, 하드웨어 또는 이들의 조합으로 구현될 수 있다.
본 발명은 특정한 제 1 또는 제 2 컴퓨터에 상주하는 캐쉬를 참조하여 기술하였지만, 당 분야에 통상의 지식을 가진 자라면 이해하듯이, 캐쉬가 제 1 컴퓨터에 상주하지 않고 단순히 외부 통신 링크에 대해 그 컴퓨터와 동일한 쪽에 위치하더라도 본 발명의 장점이 성취될 수 있다. 따라서, 하드웨어 캐쉬는 클라이언트 캐쉬로서 동작하는 제 1 컴퓨터 외부에서 구현되어 고속 통신에 의해 제 1 컴퓨터에 접속될 수 있으며, 캐쉬를 외부 통신 링크에 대해 제 1 컴퓨터와 동일한 쪽에 위치시키기만 하면 본 발명의 장점들이 성취된다.
본 발명의 또다른 실시예에 있어서, 서버측 인터셉트 모듈(40)은 웹 서버(20)로부터 수신된 HTTP 데이타 스트림의 사본을 보관하지 않고, 단순히 통신에 대한 디렉토리 엔트리만을 보관한다. 디렉토리 엔트리는 통신 URL과, HTTP 데이타 스트림에 대해 계산된 CRC, HTTP 데이타 스트림이 웹 서버로부터 수신된 시간과, CRC가 계산될 때의 시간으로 세트된 통신 SDT를 포함한다. 이 경우, 클라이언트측 인터셉트 모듈(30)에 의해 서버측 인터셉트 모듈이 CRC 및 SDT를 보유하는 URL에 대응하는 통신에 대한 요구가 서버측 인터셉트 모듈(40)에게로 전송되면, 서버측 인터셉트 모듈은 클라이언트측 인터셉트 모듈(30)로부터 수신된 CRC를 검사하여, 이 CRC가 지정된 URL에 대해 가장 최근의 HTTP 데이타 스트림의 CRC에 대응하는지의 여부를 판정한다. 일치하는 것이 있으면, 코히어런트 응답이 클라이언트측 인터셉트 모듈에 제공된다. 일치하는 것이 없는 경우에는 서버측 인터셉트 모듈은 클라이언트측 인터셉트 모듈로부터 수신된 HTTP 데이타 스트림을 웹 서버(20)에게로 전송하고, 웹 서버(20)로부터 수신된 응답을 클라이언트측 인터셉트 모듈(30)에게로 리턴시킨다.
차분 기법을 이용하여 외부 통신 링크(35)를 통해 전송되는 데이타를 감소시킨 본 발명의 다른 측면에서, 클라이언트측 인터셉트 모듈(30) 및 서버측 인터셉트 모듈(40)에 의해 수행되는 동작이 도 7, 8, 9 및 10에 도시되어 있다. 도 7에 도시된 바와 같이, 블럭(200)에서 클라이언트측 인터셉트 모듈(30)은 웹 브라우저(10)로부터 HTTP 요구를 수신한다. 블럭(205)에 도시된 바와 같이, 클라이언트측 인터셉트 모듈(30)은 웹 브라우저(10)로부터 인터셉트된 HTTP 요구를 질의하여 이 요구가 공통 게이트웨이 인터페이스(CGI)에 대한 것인지의 여부를 판정한다. 만일 요구가 공통 게이트웨이 인터페이스에 대한 것이 아니면, 도 3 내지 도 6에 도시되고 도 7의 블럭(206)으로 도시된 바와 같이 클라이언트측 인터셉트 모듈(30)은 요구를 서버측 인터셉트 모듈에게로 전송한다.
그러나, 웹 브라우저가 발신한 통신이 CGI 요구에 대응하면, 블럭(205)의 ";예"; 경로가 선택된다. 블럭(210)에 도시된 바와 같이, 클라이언트/서버 인터셉트 모듈(30)은 대응하는 CGI 요구에 응답하여 웹 브라우저에게 이전에 제공되었던 HTTP 데이타 스트림에 대응하는 클라이언트 기본 캐쉬 엔트리가 존재하는지의 여부를 판정한다. 이러한 CGI 요구의 질의는 웹 브라우저가 발신한 통신의 URL을 클라이언트 기본 캐쉬에 저장된 URL과 비교함으로써 달성될 수 있다.
클라이언트 기본 캐쉬는, 클라이언트측 인터셉트 모듈(30)에 의해 수신되어 주어진 URL에 대해 웹 브라우저(10)로 제공될 첫번째 HTTP 데이타 스트림을 저장함으로써 초기화될 수 있다. 이러한 기본 캐쉬 엔트리는 웹 브라우저(10)의 다수의 인스탄스 또는 세션에 걸쳐 유지될 수 있다. 클라이언트 기본 캐쉬 엔트리는 도 7, 8, 9 및 도 10에 도시된 바와 같이 갱신될 수 있다. 웹 브라우저가 발신한 통신에 대한 URL에 대응하는 클라이언트 기본 캐쉬 엔트리가 존재하면, 외부 통신 링크(35)를 통해 서버측 인터셉트 모듈(40)에게로 전송될 CRC는 도 7의 블럭(211)에 도시된 바와 같이 클라이언트 기본 캐쉬 엔트리에 대한 CRC와 동일하게 세트된다. 클라이언트 기본 캐쉬 엔트리가 존재하지 않으면, 도 7의 블럭(210)에서 ";아니오"; 경로가 선택되고, 외부 통신 링크(35)를 통해 서버측 인터셉트 모듈(40)에게로 전송될 요구에 대한 CRC는 널(null)로 된다. 이러한 동작은 도 7의 블럭(212)에 도시되어 있다.
블럭(213)은 CGI 요구를 외부 통신 링크를 통해 서버측 인터셉트 모듈(40)에게 전송하는 동작을 도시한 것이다. 블럭(213)에 도시된 바와 같이, 클라이언트측 인터셉트 모듈(30)은 HTTP 요구와 CRC 요구를 전송하는데, 이때 CRC는 CGI 요구의 URL에 대한 클라이언트 기본 캐쉬 엔트리가 존재하지 않는 경우 널로 세트되거나 엔트리가 존재하는 경우 클라이언트 기본 캐쉬 엔트리의 CRC로 세트된다. 따라서, 클라이언트측 인터셉트 모듈은 CGI 요구를 클라이언트/서버 특정 프로토콜로 변환하고, 클라이언트/서버 특정 통신을 서버측 인터셉트 모듈(40)에 의해 수신되도록 외부 통신 링크상으로 전송하였다.
도 9에는 CGI 요구가 수신될 때 서버측 인터셉트 모듈에 의해 취해지는 동작이 도시되어 있다. 블럭(220)에서 서버측 인터셉트 모듈(40)에 의해 CGI 요구가 수신된다. 서버측 인터셉트 모듈(40)이 CGI 요구를 수신하면 모듈(40)은 CRC의 값 및 HTTP 요구의 사본을 저장한다. 블럭(221)에 도시된 바와 같이, 서버측 인터셉트 모듈(40)은 HTTP 요구를 웹 서버(20)에 제공한다.
서버측 인터셉트 모듈(40)은 웹 브라우저가 발신한 통신에 대응하는 HTTP 요구 또는 CGI 요구에 대한 응답을 수신할 때, 도 10의 블럭(230)에 도시된 바와 같이 이 응답을 HTTP 데이타 스트림으로서 수신한다. 블럭(230)에 도시된 바와 같이, 서버측 인터셉트 모듈(40)은 HTTP 데이타 스트림을 저장하고, 웹 서버(20)로부터 수신된 HTTP 데이타 스트림에 대한 CRC 값을 계산한다. 또한, 서버측 인터셉트 모듈(40)은 차분값을 널로 만들어 차분 데이타를 초기화한다. 이어서, 블럭(235)에 도시된 바와 같이 서버측 인터셉트 모듈은 웹 서버가 발신한 통신으로서 수신된 응답이 CGI 요구에 대한 응답인지의 여부를 판정한다. 만일 응답이 부정이면, 도 10의 블럭(235)에서 ";아니오"; 경로가 선택되고, 블럭(236)의 동작을 실행하여 HTTP 데이타 스트림을 클라이언트측 인터셉트 모듈에게로 전송한다. 블럭(236)에 도시된 바와 같이, 이러한 동작은 도 3 내지 도 6에 도시된 캐쉬 동작을 포함할 수 있다. 블럭(230)에서 수신된 응답이 CGI 요구에 대한 응답이면, 블럭(235)의 ";예"; 경로가 선택되고, 이어서 블럭(240)에 도시된 바와 같이 서버측 인터셉트 모듈은 CGI 응답에 대한 서버 기본 캐쉬 엔트리가 존재하는지의 여부를 판정한다.
서버측 인터셉트 모듈(40)이 CGI 요구에 대한 응답을 처음으로 수신한 때에 서버 기본 캐쉬 엔트리가 생성될 수 있다. 본 실시예에서, 블럭(240)에 도시된 조건 명제의 결과에 따라 블럭(240)의 ";아니오"; 경로가 선택된다. 이어서, 서버측 인터셉트 모듈(40)은 CGI에 대한 URL과, CGI 요구에 대한 응답으로서의 HTTP 데이타 스트림과, HTTP 데이타 스트림에 대한 CRC를 저장함으로써 CGI 요구에 대응하는 서버 기본 캐쉬 엔트리를 생성한다. 이러한 동작은 블럭(241)에 도시되어 있다. 도 3 내지 도 6에 예시된 코히어런트 캐쉬 시스템과 호환되도록, 서버 기본 캐쉬 엔트리는 SDT를 또한 포함할 수 있다. 본 명세서에서 사용된 서버 CGI 기본 형식이란 용어는 웹 브라우저(10)로부터 수신된 CGI 요구에 대응하는 서버 기본 캐쉬 엔트리를 지칭한다.
CGI 요구에 대응하는 서버 기본 캐쉬 엔트리가 존재하면, 블럭(240)의 ";예"; 경로가 선택된다. 서버측 인터셉트 모듈은 서버 기본 캐쉬 엔트리의 CRC를 웹 서버(20)로부터 수신된 응답의 CRC와 비교한다. 이러한 동작은 도 10의 블럭(245)에 도시되어 있다. 이들 CRC가 동일하면, 서버측 인터셉트 모듈은 서버 기본 캐쉬 엔트리에 대한 CRC가 클라이언트 기본 캐쉬 엔트리에 대한 CRC에 대응하는지의 여부를 판정한다. 이들 두 CRC 값이 동일하면, 클라이언트 기본 캐쉬 엔트리, 서버 기본 캐쉬 엔트리 및 웹 서버(20)로부터 수신된 응답은 모두 동일한 HTTP 데이타 스트림을 포함한다. 서버 기본 캐쉬 엔트리를 클라이언트 기본 캐쉬 엔트리와 비교하는 것이 블럭(250)에 도시되어 있다.
이들 두 기본 캐쉬 엔트리가 동일하면, 서버측 인터셉트 모듈은 기본 캐쉬 엔트리를 클라이언트측 인터셉트 모듈(30)에게로 전송할 필요가 없으므로, 블럭(251)에 도시된 바와 같이 클라이언트측 인터셉트 모듈(30)에게로 전송될 HTTP 데이타 스트림 데이타는 널로 된다. 이어서, 서버측 인터셉트 모듈(40)은 블럭(252)에 도시된 바와 같이, CGI 요구에 대응하는 서버 기본 캐쉬에 저장된 HTTP 데이타 스트림의 CRC와, CGI 요구에 대한 응답이 클라이언트 기본 캐쉬 엔트리와 동일함을 나타내도록, 널로 된 HTTP 데이타 스트림 데이타와 널로 된 차분 데이타를 전송함으로써 웹 서버(20)로부터 수신된 HTTP 데이타 스트림을 클라이언트/서버 특정 통신 프로토콜로 변환한다.
블럭(245)으로 돌아가서, CGI 요구에 대응하는 서버 기본 캐쉬 엔트리에 대한 CRC가 웹 브라우저가 발신한 CGI 요구에 응답하여 웹 서버로부터 수신된 응답에 대한 CRC와 상이하면, 블럭(245)의 ";아니오"; 경로가 선택된다. 이어서, 서버측 인터셉트 모듈(40)은 블럭(246)에 도시된 동작을 수행한다. 서버측 인터셉트 모듈(40)은 인터셉트된 CGI 응답을 인터셉트된 CGI 요구 또는 서버 CGI 기본 형식에 대응하는 서버 기본 캐쉬 엔트리와 비교한다. 이와 같이 인터셉트된 CGI 응답과 서버 CGI 기본 형식을 비교하면 인터셉트된 CGI 응답과 서버 CGI 기본 형식간의 차에 대응하는 CGI 차분 데이타를 얻을 수 있게 된다.
차분 동작은 기본 형식과 변경된 형식간의 차를 판정하는 당 분야에 통상의 지식을 가진 자에게 잘 알려진 소정의 방법으로 수행될 수 있다. 본 발명에서 사용하는데 적절한 차분 동작의 한가지 방법은 카피터스(Coppieters)에 의해 ";a Cross-Platform Binary Diff";이란 명칭으로 Dr. Dobb's Journal, May 1995, pp. 32-36의 문헌에 개시되어 있으며, 그 개시내용은 본 명세서에서 참조로 인용된다. 차분 데이타를 판정하는데 사용될 수 있는 다른 방법은 IBM Technical Disclosure Bulletin, Vol. 22, No. 8A, January 1980의 문헌에 개시되어 있으며, 또한 본 명세서에서 참조로 인용된다.
이어서, 블럭(247)에 도시된 바와 같이 서버측 인터셉트 모듈(40)은 서버 CGI의 기본 형식이 갱신을 요구하는지의 여부를 판정한다. 이러한 판정은 인터셉트된 CGI 응답과 서버 CGI 기본 형식간의 평균 차분 데이타가 사전정의된 임계치를 초과하는지의 여부를 판정함으로써 결정될 수 있다. CGI 요구에 대응하는 서버 기본 캐쉬 엔트리가 갱신되어야 하는지의 여부를 판정하는 다른 방법은 도 3 내지 도 6에 개시된 것과 같은 시간 코히어런시 또는 당 분야에 통상의 지식을 가진 자에게 잘 알려진 다른 방법들을 포함하여, 리베이싱(rebasing)해서 새로운 기본 캐쉬 엔트리를 생성하는 것이 시스템의 성능을 향상시킬 정도로 차분 데이타가 증가되었는지의 여부를 판정할 수 있다.
서버의 리베이싱이 요구되지 않으면, 블럭(247)의 ";아니오"; 경로가 선택되고, 서버측 인터셉트 모듈(40)은 블럭(250)의 동작을 수행하여, 클라이언트 기본 캐쉬 엔트리의 CRC가 서버 기본 캐쉬 엔트리의 CRC와 동일한지 혹은 서버 CGI 기본 형식이 웹 브라우저가 발신한 통신의 특정한 CGI 요구에 대응하는 서버 및 클라이언트의 기본 캐쉬 엔트리인 클라이언트 CGI 기본 형식과 동일한지의 여부를 판정한다. 이들 기본 형식이 동일하면, 블럭(251)에 도시된 바와 같이 클라이언트는 리베이싱될 필요가 없으므로, HTTP 데이타 스트림 정보는 널로 된다. 이어서, 서버측 인터셉트 모듈(40)은 CGI 요구에 대응하는 서버 기본 캐쉬 엔트리의 CRC(즉, 서버 CGI 기본 형식의 CRC)를 전송하고, 기본 데이타에 대응하는 널로 된 HTTP 데이타 스트림을 전송하고, 블럭(246)에서 결정된 차분 데이타를 전송함으로써, 차분 응답을 클라이언트측 인터셉트 모듈(30)에게로 전송한다. 이러한 동작은 도 10의 블럭(252)에 도시되어 있다.
서버측 인터셉트 모듈(40)에 의해 클라이언트 CGI 기본 형식 및 서버 CGI 기본 형식에 대한 CRC가 동일하지 않은 것으로 판정되면, 클라이언트는 리베이싱되어야 할 필요가 있다. 클라이언트 리베이싱 동작은 서버 CGI 기본 형식을 클라이언트측 인터셉트 모듈(30)에게로 전송하는 것으로 구성된다. 이러한 동작을 수행하기 위해 서버측 인터셉트 모듈은 클라이언트측 인터셉트 모듈(30)에게로 전송될 HTTP 데이타 스트림 데이타를 서버 CGI의 기본 형식과 동일하게 세트시킨다. 이러한 동작은 블럭(253)에 도시되어 있다. 이어서, 블럭(252)에 도시된 바와 같이, 서버측 인터셉트 모듈(40)은 서버 CGI 기본 형식의 CRC와, 서버 CGI의 기본 형식에 대응하는 HTTP 데이타 스트림 데이타와, CGI의 기본 형식과 웹 서버로부터 수신된 응답간의 차분 데이타를 전송함으로써, 웹 서버로부터 수신된 HTTP 데이타 스트림을 클라이언트/서버 특정 프로토콜로 변환시킨다. 그리고 나서, 이 정보는 외부 통신 링크(35)를 통해 클라이언트측 인터셉트 모듈(30)에게로 전송된다.
블럭(247)으로 돌아가서, 서버 리베이싱이 요구된 경우에는 블럭(247)의 ";예"; 경로가 선택된다. 블럭(248)에 도시된 바와 같이, 서버측 인터셉트 모듈은 브라우저가 발신한 통신에 대응하는 서버 기본 캐쉬 엔트리를 웹 서버로부터 수신된 HTTP 데이타 스트림으로 갱신한다. 응답의 CRC도 또한 갱신되고, CGI 차분 데이타는 널로 된다. 이어서, 서버측 인터셉트 모듈은 블럭(250)에 도시된 바와 같이 새로운 서버측 캐쉬 엔트리의 CRC를 비교하고 전술한 바와 같이 전송을 완료한다.
도 8에는 서버측 인터셉트 모듈(40)로부터의 응답 수신시 클라이언트측 인터셉트 모듈의 동작이 도시되어 있다. 블럭(260)에서 클라이언트측 인터셉트 모듈(30)이 서버측 인터셉트 모듈(40)로부터의 응답을 수신한다. 블럭(265)에 도시된 바와 같이, 클라이언트측 인터셉트 모듈(30)은 응답이 CGI 요구에 대한 응답인지의 여부를 판정한다. 응답이 CGI 요구에 대한 것이 아니면, 클라이언트측 인터셉트 모듈은 도 3 내지 도 6에 도시된 캐쉬 동작을 포함할 수 있는 블럭(267)의 동작을 수행한다. 그러나, 응답이 CGI 요구에 대한 것이면, 블럭(265)의 ";예"; 경로가 선택된다. 클라이언트측 인터셉트 모듈(30)은 외부 통신 링크를 통해 전송된 클라이언트/서버 특정 데이타 스트림으로부터 획득된 HTTP 데이타 스트림 데이타와, 차분 데이타와, CRC를 저장한다. 이러한 동작은 도 8의 블럭(266)에 도시되어 있다.
이어서, 클라이언트측 인터셉트 모듈(30)은 클라이언트 CGI 기본 형식을 포함하는, 인터셉트된 CGI 요구에 대응하는 클라이언트 기본 캐쉬 엔트리가 존재하는지의 여부를 판정한다. 이러한 질의는 블럭(270)에 도시되어 있으며, HTTP 요구 또는 HTTP 응답의 URL을 조사함으로써 수행될 수 있다. 클라이언트 CGI 기본 형식이 존재하면, 블럭(270)의 ";예"; 경로가 선택된다. 이어서, 블럭(275)에 도시된 바와 같이, 클라이언트측 인터셉트 모듈(30)은 외부 통신 링크를 통해 수신된 CRC를 클라이언트 CGI 기본 형식의 CRC와 비교한다. 만일 이들이 상이하면 블럭(275)의 ";아니오"; 경로가 선택되고, 클라이언트는 웹 브라우저가 발신한 통신에 대한 CGI 요구의 URL에 대응하는 클라이언트 기본 캐쉬 엔트리를 서버측 인터셉트 모듈(40)로부터 외부 통신 링크(35)를 통해 수신된 HTTP 데이타 스트림 데이타로 대체하여 CGI 기본 형식을 갱신함으로써 리베이싱한다. 또한, 클라이언트 기본 캐쉬 엔트리는 HTTP 데이타 스트림에 대한 CRC에 대해 갱신된다. 이러한 동작은 도 8의 블럭(276)에 도시되어 있다.
외부 통신 링크(35)를 통해 수신된 CRC가 CGI 기본 형식의 CRC와 동일하면, 서버측 인터셉트 모듈 서버 CGI 기본 형식은 클라이언트측 인터셉트 모듈 클라이언트 CGI 기본 형식과 동일하고, 블럭(275)의 ";예"; 경로가 선택된다.
이들 기본 형식이 동일하든 클라이언트가 리베이싱되든간에, 블럭(277)에 도시된 동작이 클라이언트측 인터셉트 모듈(30)에 의해 수행된다. 블럭(277)에서, 클라이언트측 인터셉트 모듈(30)은 클라이언트 CGI 기본 형식을 외부 통신 링크(35)를 통해 수신된 CGI 차분 데이타와 조합해서 인터셉트된 CGI 응답에 대응하는 HTTP 데이타 스트림을 생성함으로써 외부 통신 링크(35)를 통해 수신된 클라이언트/서버 특정 데이타 스트림으로부터 웹 서버(20)로부터의 통신에 대응하는 HTTP 데이타 스트림을 재구성한다. 블럭(278)에 도시된 바와 같이, 이 응답은 웹 브라우저(10)에 HTTP 데이타 스트림으로서 제공된다.
CGI 요구의 URL에 대응하는 CGI 기본 형식이 클라이언트에 존재하지 않으면, 도 8의 블럭(270)의 ";아니오"; 경로가 선택된다. 블럭(271)에 도시된 바와 같이, 클라이언트측 인터셉트 모듈(30)은 URL과, 서버측 인터셉트 모듈(40)로부터 외부 통신 링크를 통해 수신된 HTTP 데이타 스트림의 CRC와, 실제 HTTP 데이타 스트림의 데이타를 저장함으로써 CGI 요구의 URL에 대응하는 클라이언트 기본 캐쉬 엔트리를 생성한다. 이러한 정보를 저장하면 인터셉트된 CGI 요구에 대응하는 클라이언트 기본 캐쉬 엔트리가 생성되므로, 클라이언트 CGI의 기본 형식이 생성된다. 이어서, 클라이언트측 인터셉트 모듈은 블럭(277)의 동작을 수행하여, 클라이언트 CGI 기본 형식을 널로 된 CGI 차분 데이타와 조합하거나 병합함으로써 HTTP 데이타 스트림이 재구성할 수 있다.
본 발명의 차분 기법은 비-CGI 데이타에도 또한 적용될 수 있다. 이러한 경우에 서버측 인터셉트 모듈(40)은 웹 서버에 접속된 웹 브라우저의 클라이언트측 인터셉트 모듈이 다른 기본 형식을 가질 수 있도록 다수의 서버 기본 캐쉬 엔트리를 계속적으로 생성한다. 다음으로, 서버측 인터셉트 모듈은 일치가 발견될 때까지 클라이언트측 인터셉트 모듈로부터 수신된 CRC를 이전 세대의 각 서버 기본 형식의 CRC와 비교할 수 있다. 이어서, 서버측 인터셉트 모듈(40)은 선택사양적으로 클라이언트측 인터셉트 모듈(30)을 리베이싱하거나 단순히 차분 데이타를 클라이언트측 인터셉트 모듈(30)에 제공할 수 있다. 따라서, 본 명세서에서 CGI 요구에 대해 기술된 차분 기법들은 소정의 HTTP 요구 및 응답에도 동일하게 적용될 수 있다.
기본 형식의 다수 발생을 유지하는 전술한 시스템이 비-CGI 요구에 대한 차분 기법의 사용을 허용하지만, 이러한 방법은 메모리 또는 저장장치 사용을 증가시키며 전술한 캐쉬 용량을 충분히 활용하지 못한다. 메모리 또는 저장장치의 수요를 줄이고 전술한 캐쉬 방안들을 활용하기 위해, 비-CGI 요구에 대한 차분 방안을 이용하는 다음과 같은 바람직한 방안이 사용될 수 있다. 본 바람직한 구현에 있어서, 서버측 인터셉트 모듈은 요구에 대응하는 서버 기본 형식과 웹 서버로부터의 응답 HTTP 데이타 스트림간의 차를 계산한다. 그리고 나서, 이 차분 데이타는 서버측 인터셉트 모듈에 의해 저장된다. 이어서, 웹 서버로부터의 새로운 응답으로 기본 형식을 대체하고 기본 형식의 CRC를 갱신함으로써 서버 기본 형식이 갱신된다. 그러나, 이전의 CRC를 폐기하지 않고 이전의 기본 형식에 대한 CRC가 차분 데이타로서 저장된다. 이어서, 이전 세대의 차분 데이타 및 CRC는 비-CGI 요구에 대응하는 클라이언트 기본 형식의 CRC를 기초로 하여 클라이언트측 인터셉트 모듈로 선택적으로 전송된다.
비-CGI 차분 방법의 하나의 예로서, 서버측 인터셉트 모듈이 비-CGI 요구를 수신하는 경우, 이 요구는 비-CGI 요구의 URL에 대응하는, 클라이언트측 인터셉트 모듈에 상주하는 기본 형식의 CRC를 수반한다. 서버측 인터셉트 모듈은 웹 서버로부터 응답을 수신하면, 응답의 CRC를 계산한다. 이어서, 서버측 인터셉트 모듈은 이러한 응답과 URL에 대한 서버 기본 형식간의 차를 계산하고 이 차분 데이타를 저장한다. 서버측 인터셉트 모듈은 응답 데이타를 이용하여 서버 기본 형식을 갱신하고, 이전의 기본 형식의 CRC와, 응답과 이전 기본 형식간의 차분 데이타를 보관한다. 이어서, 서버측 인터셉트 모듈은 클라이언트 기본 형식의 CRC와 서버 기본 형식의 CRC 및 소정의 저장 또는 보관된 CRC를 비교하여 일치하는 것이 있는지의 여부를 판정한다. 일치하는 것이 없으면, 응답은 단순히 클라이언트측 인터셉트 모듈에게로 전송된다.
만일 일치하는 것이 있으면, CRC 일치에 대응하는 차분 데이타와 현재의 차분 데이타까지 포함하여 임의의 후속하는 차분 데이타가 클라이언트측 인터셉트 모듈로 전송된다. 이어서, 클라이언트측 인터셉트 모듈은 차분 데이타를 클라이언트 기본 형식에 제공하여 응답을 재구성한다. 따라서, 만일 CRC가 3 세대 이전의 기본 형식의 CRC와 일치하면, 3개의 차분 데이타 세트가 클라이언트측 인터셉트 모듈에게로 전송되고, 3개의 연속적인 차분 데이타 세트를 클라이언트 기본 형식에 적용함으로써 응답 구성을 성취할 수 있다. 그러나, 응답을 재구성하는데 필요한 차분 데이타 세트의 수 또는 차분 데이타 세트의 크기가 너무 커서 실제 응답 전송이 보다 적은 데이타 전송을 요구하는 경우, 서버측 인터셉트 모듈이 응답 자체를 전송할 수도 있다. 어느 경우라도, 응답을 재구성하거나 수신한 후, 클라이언트측 인터셉트 모듈은 응답 데이타를 이용하여 요구 URL에 대한 클라이언트 기본 형식을 갱신하고, 응답 CRC를 이용하여 CRC를 갱신할 것이다. 클라이언트 기본 형식은 응답이 특정 URL에 대해 수신될 때마다 갱신되기 때문에, 전술한 클라이언트 캐쉬는 클라이언트 기본 형식에 대한 캐쉬로서 이용될 수 있으며, 그에 의해 차분 기법이 비-CGI 요구시 이용되는 경우 클라이언트 기본 형식의 별도의 캐쉬를 구비할 필요가 없게 된다.
본 발명의 또 다른 측면에서, HTTP와 같은 스테이트리스 통신 프로토콜의 리던던시(redundancy)를 기초로 하여 추가적인 통신 절약 방안이 달성될 수 있다. 이와 같은 프로토콜에서, 클라이언트는 통신이 초기화될 때마다 자신에 관한 정보를 서버에게로 전송한다. 마찬가지로, 서버는 응답이 초기화될 때마다 자신에 관한 특정 정보를 클라이언트에게로 전송한다.
본 발명의 한가지 대안적 실시예에서, 제 1 컴퓨터(5)는 제 1 컴퓨터의 사전정의된 특징에 대응하는 컴퓨터 특정 정보를 제 2 컴퓨터(6)에게로 전송한다. 제 2 컴퓨터는 이 컴퓨터 특정 정보를 저장한다. 그러면, 제 1 컴퓨터는 외부 통신 링크(35)를 통해 전송하기 전에 웹 브라우저가 발신한 후속적인 통신으로부터 컴퓨터 특정 정보를 삭제한다. 이어서, 제 2 컴퓨터(6)는 저장된 컴퓨터 특정 정보를 외부 통신 링크(35)를 통해 수신된 후속적인 통신과 조합해서 HTTP 데이타 스트림을 생성함으로써 웹 브라우저가 발신한 원래의 통신을 재구축한다.
웹 브라우저가 발신한 통신으로부터 컴퓨터 특정 정보를 삭제하는 것에 부가하여, 웹 서버가 발신한 통신으로부터 이러한 컴퓨터 특정 정보를 또한 삭제할 수 있다. 이 경우, 도 2의 제 2 컴퓨터(6)는 제 2 컴퓨터(6)의 사전정의된 특성에 대응하는 컴퓨터 특정 정보를 외부 통신 링크(35)를 통해 제 1 컴퓨터(5)에 제공한다. 제 1 컴퓨터(5)는 컴퓨터 특정 정보를 저장함으로써 서버 헤더 정보를 제공한다. 후속하는 통신에서, 제 2 컴퓨터(6)는 웹 서버가 발신한 통신으로부터 컴퓨터 특정 정보를 삭제하고, 웹 서버가 발신한 통신의 나머지 부분을 외부 통신 링크(35)상으로 전송한다. 제 1 컴퓨터(5)는 외부 통신 링크를 통해 통신을 수신하고, 서버 헤더 정보와 외부 통신 링크를 통해 수신된 클라이언트/서버 특정 데이타 스트림을 조합해서 HTTP 데이타 스트림을 생성함으로써 웹 서버가 발신한 원래의 통신을 재구축한다. 두 경우에 있어서, 컴퓨터 특정 정보를 삭제하고 정보를 저장하여 서버 헤더 정보 또는 클라이언트 헤더 정보를 생성하는 동작은, 이 동작이 제 1 컴퓨터(5) 또는 제 2 컴퓨터(6)에서 발생되는지에 따라 클라이언트측 인터셉트 모듈(30) 또는 서버측 인터셉트 모듈(40)에 의해 수행된다.
본 발명의 하나의 실시예에서, 웹 브라우저(10)는 TCP/IP를 이용하여 클라이언트측 인터셉트 모듈(30)과 통신한다. TCP는 외부 통신 링크(35)를 통한 클라이언트측 인터셉트 모듈(30)과 서버측 인터셉트 모듈(40) 사이의 통신에 또한 사용될 수 있다. 마지막으로, TCP는 서버측 인터셉트 모듈(40)과 웹 서버(20) 사이의 통신에 사용될 수 있다. TCP는 본 발명의 시스템을 구성하는 여러 구성 요소들 사이의 통신에 사용될 수 있지만, HTTP 프로토콜은 외부 통신 링크를 통해 통신하는데 필요한 가장 효율적인 수단을 제공하지는 못한다. 외부 통신 링크(35)의 성능을 향상시키기 위해, 본 발명의 하나의 실시예에서는 웹 브라우저와 클라이언트측 인터셉트 모듈(30)간의 접속 및 서버측 인터셉트 모듈(40)과 웹 서버(20)간의 접속에 사용되는 ";가상 소켓(virtual sockets)";으로 일컬어지는 것을 생성한다. 이들 가상 소켓의 동작이 이하에서 도 11 내지 도 17을 참조하여 기술된다.
도 11은 가상 소켓의 개념을 이용한 본 발명의 일실시예의 블럭도이다. 도 11에 도시된 바와 같이, 제 1 컴퓨터(5)와 제 2 컴퓨터(6)는 외부 통신 링크(35)를 통해 접속된다. 웹 브라우저(10)는 클라이언트측 인터셉트 모듈(30)에 접속하기 위한 다수의 실제 소켓을 포함한다. 도 11에 도시된 바와 같이, 참조부호(65A)로 도시된 제 1 실제 소켓은 웹 브라우저(10)상에 위치되고, 참조부호(65B)로 도시된 대응하는 소켓은 클라이언트측 인터셉트 모듈(30)상에 위치되어 있다. 제 1 실제 소켓은 TCP 소켓으로서, 웹 브라우저(10)는 이 소켓을 통해 클라이언트측 인터셉트 모듈(30)로부터의 후속적인 접속을 요구한다.
웹 브라우저(10)가 새로운 TCP 접속을 요구하면, 실제 소켓(65A)을 통해 통신이 발생하여 실제 소켓(65B)에서 수신된다. 이어서, 클라이언트측 인터셉트 모듈(30)은 웹 브라우저(10)와의 통신을 위해 또다른 실제 소켓을 생성할 것이다. 도 11에 도시된 바와 같이, 웹 브라우저(10)상에는 다수의 실제 소켓이 생성되고, 클라이언트측 인터셉트 모듈(30)상에는 또한 대응하는 실제 소켓이 생성된다. 이들 실제 소켓은 웹 브라우저(10)상의 실제 소켓(60A∼64A)과, 클라이언트측 인터셉트 모듈(30)상의 실제 소켓(60B∼64B)을 포함한다. 이들 실제 소켓을 통해 웹 브라우저(10)는 클라이언트측 인터셉트 모듈(30)과의 통신을 수행한다. 실제 소켓(60A∼64A, 60B∼64B)을 생성한 후, 이들 소켓을 통한 통신은 실제 소켓(36A)상으로 다중화되며, 실제 소켓(36A)은 클라이언트측 인터셉트 모듈(30)을 외부 통신 링크(35)에 액세스시킨다. 실제 소켓(36A, 36B)은 요구가 컴퓨터(5)의 실제 소켓(37A)을 통해 컴퓨터(6)의 실제 소켓(37B)에게로 전송될 때 생성된다. 실제 소켓(37B)에 의한 접속 요구의 수신시, 실제 소켓(36A, 36B)이 생성된다. 소켓(37A, 37B)은 클라이언트측 인터셉트 모듈과 서버측 인터셉트 모듈 사이의 통신을 위한 제 1 실제 소켓으로서 동작하고, 소켓(36A, 36B)으로 도시된 두개의 모듈간의 접속을 설정하는 데에만 사용될 수 있다. 이들 각각의 소켓들은 표준 TCP/IP 프로토콜로 동작한다. 제 2 컴퓨터(6)가 외부 통신 링크(35)를 통해 통신을 수신하면, 통신은 실제 소켓(36B)에서 수신된다. 이어서, 서버측 인터셉트 모듈(40)은 소켓(36B)에서 수신된 통신을 역다중화하고, 이를 웹 서버(20)에 전송하는데 적합한 소켓에 제공한다. 따라서, 특정된 URL로부터 정보를 요구하기 위해, 예를 들어 소켓(60A)을 통해 소켓(60B)으로 제공되는 통신은 소켓(36A)상으로 다중화되고, 소켓(36B)에 의해 수신된 후, 서버측 인터셉트 모듈(40)에 의해 역다중화되고, 소켓(60C)으로부터 웹 서버(20)상의 소켓(60D)으로 전송된다. 마찬가지로, 소켓(61A)을 통해 발생된 통신은 소켓(61B)에 의해 수신되고, 클라이언트측 인터셉트 모듈(30)에 의해 다중화되며, 소켓(36A)으로부터 소켓(36B)으로 전송되는데, 소켓(36B)에서 서버측 인터셉트 모듈(40)은 통신을 역다중화하여 이를 소켓(61C)을 통해 소켓(61D)으로 전송한다. 따라서, 소켓(60A 및 60B, 61A 및 61B, 62A 및 62B, 63A 및 63B, 64A 및 64B)을 통한 통신은 서버측 인터셉트 모듈(40)과 웹 서버(20) 사이의 각각의 대응하는 소켓(60C 및 60D, 61C 및 61D, 62C 및 62D, 63C 및 63D, 64C 및 64D)상으로 전송된다.
유사한 방식으로, 웹 브라우저(10)로부터의 요구에 대한 웹 서버(20)의 응답은 또한 웹 서버(20)를 서버측 인터셉트 모듈(40)에 접속시키는 소켓과 외부 통신 링크(35)를 통해 클라이언트측 인터셉트 모듈(30)에게로 전송된 후 웹 브라우저(10)에게로 또한 전송된다. 따라서, 예를 들어 웹 서버(20)가 발신한 응답은 소켓(60D)을 통해 소켓(60C)으로 전송되고, 서버측 인터셉트 모듈(40)에 의해 소켓(36B)상으로 다중화되며, 외부 통신 링크(35)를 통해 소켓(36A)으로 전송된다. 이어서, 클라이언트측 인터셉트 모듈(30)은 통신을 역다중화하여 이를 소켓(60B)에 제공해서 웹 브라우저(10)상의 소켓(60A)으로 전송되도록 한다. 웹 브라우저(10) 또는 웹 서버(20)에 의해 사용되는 각각의 소켓에 대해 유사한 통신 경로가 설정된다. 본 발명은 웹 브라우저(10)와 웹 서버(20) 사이에 4개의 소켓 접속에 대해 기술되었지만, 당 분야에 통상의 지식을 가진 자라면, 웹 브라우저(10)와 웹 서버(20) 사이에 통신 액세스를 제공하기 위해 임의의 수의 소켓이 제공될 수 있음을 알 것이다.
도 12는 클라이언트측 인터셉트 모듈(30)과 서버측 인터셉트 모듈(40)의 가상 소켓 시스템의 실시예를 도시한 블럭도이다. 이들 모듈 외부에 위치한 클라이언트측 인터셉트 모듈(30)과 웹 브라우저(10)간 및 서버측 인터셉트 모듈(40)과 웹 서버(20)간의 실제 소켓들은 통상적인 TCP/IP 소켓으로서 기능한다. 따라서, 웹 브라우저(10)와 웹 서버(20)는 가상 소켓의 사용을 인식하지 못한다.
이하, 도 12의 블럭도 및 도 13 내지 도 17의 흐름도에 대하여 본 발명의 특정한 실시예가 기술될 것이다. 도 13은 도 12에 블럭(68)으로 도시된 소켓 관리자에 대한 흐름도이다. 도 13을 참조하면, 블럭(300)에서 클라이언트측 인터셉트 모듈(30)의 실제 소켓 관리자(68)가 생성된다. 실제 소켓 관리자(68)가 생성된 후, 관리자(68)는 도 12의 소켓(65B)으로서 도시된 제 1 실제 소켓을 생성한다. 이러한 제 1 실제 소켓의 생성은 도 13의 블럭(301)에 도시되어 있다. 제 1 실제 소켓(65B) 생성 후, 도 13의 블럭(302)에 도시된 바와 같이, 클라이언트측 인터셉트 모듈(30)에 상주하는 소켓 관리자(68)(본 명세서에서 클라이언트 소켓 관리자로서 또한 일컬어짐)는 제 1 실제 소켓(65B)상의 이벤트(event)를 대기한다. 제 1 실제 소켓(65B)상에서 이벤트가 수신되면, 도 13의 블럭(305)에 도시된 바와 같이 실제 소켓 관리자(68)는 이벤트를 조사하고, 이러한 조사를 기초로 하여 5개의 경로들 중 하나를 선택한다.
제 1 실제 소켓(65B)에서 수신된 통신 요구에 응답하여 실제 소켓이 생성되면, 도 13의 블럭(305)에서 블럭(306)으로 진행되는 경로에 나타난 바와 같이, 실제 소켓 관리자(68)는 실제 소켓을 실제 이벤트 리스트에 추가한다. 이어서, 블럭(307)에 도시된 바와 같이, 실제 소켓 관리자는 단방향(simplex) 가상 소켓을 생성한다. 도 13의 블럭(308)에 도시된 바와 같이, 클라이언트측 인터셉트 모듈의 경우에 있어서, 실제 소켓 관리자는 생성된 가상 소켓에 대해 클라이언트측 인터셉트 모듈의 기능을 수행하는 애플리케이션 함수를 초기화시킨다.
본 명세서에서 사용된 ";단방향 소켓(simplex socket)"; 또는 ";단방향 가상 소켓(simplex virtual socket)";이란 용어는 단일 소켓 또는 단일 애플리케이션과 직접 접속되는 소켓을 지칭한다. 본 명세서에서 사용된 ";다중 소켓(multiplex socket)";은 다수의 다른 소켓과 접속되는 소켓을 지칭한다. 따라서, 다중 소켓은 다중화 또는 역다중화 기능을 수행하고, 단방향 소켓은 1 대 1 접속을 수행한다. 따라서, 예를 들어, 도 13의 블럭(306∼308)의 기능을 수행하는 경우, 클라이언트 소켓 관리자(68)는 제 1 실제 소켓(65b)에 의해 수신된 제 1 접속 요구에 응답하여 실제 소켓(60b) 및 단방향 가상 소켓(70)을 생성하고, 애플리케이션(80)에서 클라이언트측 인터셉트 함수를 초기화시킨다. 마찬가지로, 연속적 이벤트로 실제 소켓이 생성되는 경우, 실제 소켓 관리자는 실제 소켓(61B, 62B, 63B, 64B)과 단방향 가상 소켓(71, 72, 73, 74)을 생성하고, 생성된 실제 소켓 및 도 12에 블럭(81, 82, 83, 84)으로 도시된 바와 같은 가상 소켓에 대응하는 CSI 함수를 초기화시킨다.
이하, 도 12에 도시된 실제 소켓(60B), 단방향 가상 소켓(70) 및 클라이언트측 인터셉트 함수(80)를 참조하여 클라이언트측 인터셉트 함수의 동작이 기술될 것이다. 도 14의 블럭(325)은 클라이언트측 인터셉트 함수(80)의 생성을 나타낸다. 생성시, 블럭(326)에 도시된 바와 같이, 클라이언트측 인터셉트 함수(80)는 단방향 가상 소켓(70)상의 이벤트를 대기한다. 이러한 대기 동작은 도 16-4에 도시되어 있는 가상 선택 함수를 수행함으로써 행해진다. 이벤트 수신시, 블럭(330)에 도시된 바와 같이 이벤트가 조사된다. 만일 이벤트가 가상 소켓 폐쇄(virtual socket close)이면, 클라이언트측 인터셉트 함수(80)는 블럭(349)에 도시된 바와 같이 단방향 가상 소켓(70)을 삭제하고 도 14의 블럭(350)에서 종료한다.
만일 이벤트가 ";데이타 수신(receipt of data)";이면, 블럭(330)에서 블럭(331)으로 진행되는 경로가 선택되고, 클라이언트측 인터셉트 함수(80)는 도 16-3을 참조하여 본 명세서에서 기술된 가상 수신 동작을 실행함으로써 단방향 가상 소켓(70)으로부터 브라우저가 발신한 통신을 수신한다. 이어서, 블럭(332)에 도시된 바와 같이 클라이언트측 인터셉트 함수는 전술한 바와 같이(예를 들어 도 3 및 도 7을 참조) 클라이언트측 인터셉트 모듈의 함수를 수행한다. 이어서, 클라이언트측 인터셉트 함수(80)는 클라이언트측 인터셉트 모듈(30)의 실제 소켓(36A)에 접속된 다중 가상 소켓(90)을 생성한다. 실제 소켓(36a)은 서버측 인터셉트 모듈(40)상의 실제 소켓(36b)과 접속된다. 다중 가상 소켓의 생성은 도 14의 블럭(333)에 도시되어 있으며, 도 16-1을 참조하여 본 명세서에서 기술된 가상 생성 동작을 수행함으로써 행해진다. 블럭(334)은 웹 브라우저가 발신한 통신에 대해 클라이언트측 인터셉트 함수(80)를 수행한 후, 웹 브라우저로부터 실제 소켓(60B) 및 단방향 가상 소켓(70)을 통해 수신된 정보를 전송하는 동작을 나타낸다. 이러한 통신은 도 16-2를 참조하여 본 명세서에 기술된 가상 전송 동작을 수행함으로써 다중 가상 소켓(90)에 큐잉(queue)된다. 클라이언트측 인터셉트 함수(80)는 요구를 다중 가상 소켓(90)에 대해 큐잉한 후, 도 14의 블럭(335)에 도시된 바와 같이 다중 가상 소켓(90)에 큐잉된 데이타를 플러쉬(flush)하고, 이어서 블럭(336)에 도시된 바와 같이 다중 가상 소켓상에서 이벤트를 대기한다. 가상 플러쉬 함수는 다중 가상 소켓의 큐로부터 데이타를 취하고 이를 실제 소켓(36A)에 제공하는 가상 플러쉬 동작을 수행함으로써 행해지며, 이에 관해서는 도 17-1을 참조하여 본 명세서에서 기술된다. 대기 동작은 도 16-4에 도시된 가상 선택 함수를 수행함으로써 행해질 수 있다. 이때, 클라이언트측 인터셉트 모듈은 웹 브라우저가 발신한 통신을 인터셉트하고, 통신을 외부 통신 링크(35)를 통해 서버측 인터셉트 모듈로 전송한다.
도 13으로 돌아가서, 서버측 인터셉트 모듈(40) 또는 클라이언트측 인터셉트 모듈(30)의 소켓 관리자에 대한 흐름도가 도시되어 있다. 도 12의 블럭(69)에 도시된 바와 같이, 서버측 인터셉트 모듈의 실제 소켓 관리자 또는 서버 소켓 관리자는 블럭(68)에 도시된 클라이언트 소켓 관리자와 동일한 함수를 수행한다. 블럭(301)에 도시된 바와 같이 제 1 실제 소켓을 생성하는 경우, 서버측 인터셉트 모듈(40)은 클라이언트측 인터셉트 모듈(30)로부터 서버측 인터셉트 모듈(40)과 연관된 소켓에 대한 요구를 수신하기 위해 ";기지(旣知)의 포트";(37b)를 생성한다. 서버측 인터셉트 모듈(40)의 실제 소켓(36b)상에 실제 이벤트가 발생되면, 블럭(305)에 도시된 바와 같이 이벤트가 조사된다. 이 경우에, 이벤트는 실제 소켓(36a)으로부터의 데이타 수신이므로, 도 13의 블럭(305)에서 블럭(320)으로 진행하는 경로가 선택된다. 실제 소켓(36b)상에서 수신된 데이타를 조사할 때, 본 실시예에서 데이타가 클라이언트측 인터셉트 모듈에 의해 전송된 웹 브라우저가 발신한 통신이므로, 서버측 인터셉트 모듈(40)에 새로운 가상 소켓을 생성해야 한다. 따라서, 도 13의 블럭(320)에서 블럭(321)으로 진행하는 경로가 선택된다. 이어서, 서버 소켓 관리자(69)는 도 13의 블럭(321, 322, 323, 324)에 도시된 동작을 수행한다. 서버 소켓 관리자(69)는 블럭(321)에 도시된 바와 같이 다중 가상 소켓(95)을 생성하고, 블럭(322)에 도시된 바와 같이 다중 소켓 활성 타이머를 취소하고, 도 13의 블럭(323)으로 도시되고 도 12의 블럭(85)으로 도시된 바와 같이 서버측 인터셉트 함수의 애플리케이션을 초기화시킨다. 이어서, 실제 소켓(36b)에서 수신된 데이타는 다중 가상 소켓(95)에 큐잉되고, 가상 이벤트가 신호(signal)된다.
블럭(323)에 도시된 바와 같은 서버측 인터셉트 함수의 생성은 도 15의 블럭(360)에 도시되어 있다. 서버측 인터셉트 함수(85)를 생성한 후, 함수는 클라이언트측 인터셉트 모듈(30)로부터 제공되고 웹 브라우저가 발신한 통신에 대응하는 다중 가상 소켓(95)을 통해 데이타를 수신한다. 이러한 동작은 도 15의 블럭(361)에 도시되어 있다. 클라이언트측 인터셉트 모듈로부터 데이타를 수신한 후, 서버측 인터셉트 함수(85)는 서버측 인터셉트 모듈에 대해 전술한 바와 같이 데이타를 처리한다. 블럭(362)에는 서버측 함수의 수행이 도시되어 있다(예를 들어, 도 5 및 도 9를 참조). 정보를 처리한 후, 서버측 인터셉트 함수(85)는 가상 생성을 수행함으로써 단방향 가상 소켓(75)을 생성하며, 이러한 가상 생성 동작은 본 명세서에서 도 16-1을 참조하여 기술된다. 이러한 동작은 도 15의 블럭(363)에 도시되어 있다. 이어서, 서버측 인터셉트 함수(85)는 가상 전송을 수행함으로써 블럭(364)에 도시된 바와 같이 웹 브라우저가 발신한 통신을 단방향 가상 소켓(75)으로 전송하며, 이러한 가상 전송 동작은 본 명세서에서 도 16-2를 참조하여 기술된다. 이어서, 서버측 인터셉트 함수(85)는 가상 플러쉬(virtual flush)를 수행하여 단방향 가상 소켓(75)에 큐잉된 데이타를 실제 소켓(60c)으로 플러쉬하고, 단방향 가상 소켓(75)상의 이벤트를 대기한다. 가상 플러쉬 동작은 본 명세서에서 도 17-1을 참조하여 기술될 것이다. 전송 및 플러쉬 동작은 도 15의 블럭(364) 및 블럭(365)에 도시되어 있다. 대기 동작은 도 16-4에 기술된 가상 선택 함수를 수행함으로써 실행될 수 있다. 서버측 인터셉트 함수(85)가 단방향 가상 소켓(75)을 생성하면, 이에 대응하는 실제 소켓(60C)도 또한 생성된다. 웹 브라우저가 발신한 통신을 단방향 가상 소켓(75)으로 전송함으로써, 서버측 인터셉트 함수(85)는 웹 브라우저가 발신한 통신을 웹 서버에게로 전송한다.
서버측 인터셉트 모듈(40)이 실제 소켓(60C)상에서 웹 서버로부터 응답을 수신하면, 실제 이벤트가 발생되고, 서버 소켓 관리자(69)는 도 13의 블럭(302)을 빠져나와 블럭(305)에 도시된 바와 같이 실제 소켓(60C)상에서 발생된 이벤트를 조사한다. 여기서, 이벤트는 기존의 가상 소켓에 대한 데이타이고, 도 13의 블럭(320)에서 블럭(324)으로 진행되는 경로가 선택된다. 실제 소켓(60C)상에서 수신된 데이타는 가상 소켓(75)에 큐잉되고 가상 이벤트가 신호된다. 가상 이벤트가 신호되면, 서버측 인터셉트 함수(85)는 도 15의 블럭(366)을 빠져나와 블럭(370)에서 이벤트를 조사한다. 이벤트가 소켓 폐쇄(socket closed)이면, 에러 상태가 발생되고, 도 15의 블럭(375)에 도시된 바와 같이 에러 메시지가 응답으로서 구성된다. 그러나, 이벤트가 데이타의 수신(receipt of data)이면, 블럭(370)에서 블럭(371)으로 진행되는 경로가 선택되고, 도 16-3을 참조하여 본 명세서에 기술된 바와 같이 서버측 인터셉트 함수(85)는 가상 수신을 수행하여, 블럭(371)에 도시된 바와 같이 단방향 가상 소켓(75)으로부터 서버 응답을 획득한다. 이어서, 서버측 인터셉트 함수(85)는 본 명세서에서 도 17-2를 참조해 기술되고 블럭(372)으로 도시된 바와 같이 단방향 가상 소켓(75)의 가상 폐쇄를 수행하며, 서버측 인터셉트 모듈에 대해 앞서 기술되고 블럭(373)에 도시된 바와 같이 응답을 처리한다(예를 들어, 도 6 및 도 10을 참조).
도 15의 블럭(370)의 탈출 경로가 블럭(375)으로의 에러 경로 혹은 블럭(371)으로의 데이타 경로중 어느 것이든, 블럭(374)에서 단방향 가상 소켓(75)이 삭제된다. 이어서, 서버측 인터셉트 함수는 다중 가상 소켓(95)에 대한 가상 전송 동작을 수행하여, 블럭(376)에 도시된 바와 같이 웹 서버가 발신한 통신을 클라이언트측 인터셉트 모듈(30)로 전송한다. 이어서, 서버측 인터셉트 함수(85)는 가상 플러쉬 동작을 수행하여 다중 가상 소켓(95)에 큐잉된 데이타를 플러쉬한다. 이들 동작은 블럭(377)에 도시되어 있다. 이어서, 도 15의 블럭(378)에 도시된 바와 같이 서버측 인터셉트 함수(85)는 가상 폐쇄 동작을 수행하여 다중 가상 소켓(95)을 폐쇄한다. 마지막으로, 블럭(379, 380)에 도시된 바와 같이, 서버측 인터셉트 함수(85)는 다중 가상 소켓을 삭제하고 종료한다.
서버측 인터셉트 함수는 다중 가상 소켓(95)에 대한 가상 전송 및 플러쉬 동작을 수행한다. 실제 소켓(36A) 및 클라이언트 소켓 관리자(68)상의 이들 트리거 이벤트(trigger events)시에는 블럭(302)에서 블럭(305)으로 진행하여 이벤트를 조사하며, 실제 소켓(36A)상에서 데이타가 수신되므로 도 13에서 블럭(305)에서 블럭(320)으로 진행되는 경로가 선택되고, 데이타는 다중 가상 소켓(90)에 큐잉된다. 따라서, 실제 소켓(36A)이 실제 소켓(36B)으로부터 외부 통신 링크(35)를 통해 웹 서버 응답을 수신하면, 이 정보는 역다중화되어 적절한 다중 가상 소켓으로 제공된다. 데이타 수신에 의해 도 13의 블럭(324)에 도시된 바와 같이 가상 이벤트가 발생되고, 도 14의 블럭(336)은 종료되며, 클라이언트측 인터셉트 함수(80)는 도 14의 블럭(340)에 도시된 바와 같이 이벤트를 조사한다.
만일 이벤트가 소켓 폐쇄(socket closed) 응답이면, 도 14에서 블럭(340)으로부터 블럭(345)으로 진행되는 경로가 선택되고, 클라이언트측 인터셉트 함수(80)는 에러 메시지 응답을 생성하고 도 14의 블럭(344)으로 진행한다. 만일 이벤트가 본 실시예의 경우와 같이 데이타 수신이면, 도 14에서 블럭(340)으로부터 블럭(341)으로 진행되는 경로가 선택되고, 클라이언트측 인터셉트 함수(80)는 가상 수신 동작을 수행하여 다중 가상 소켓(90)으로부터 응답을 수신한다. 이러한 수신 동작은 도 14의 블럭(341)에 도시되어 있다. 다중 가상 소켓(90)으로부터 데이타를 수신한 후, 블럭(342)에 도시된 바와 같이 클라이언트측 인터셉트 함수(80)는 가상 폐쇄 동작을 수행하여 다중 가상 소켓(90)을 폐쇄시킨다. 이어서, 블럭(343)에 도시된 바와 같이, 클라이언트측 인터셉트 함수(80)는 클라이언트측 인터셉트 모듈에 대해 전술한 응답을 처리한다(예를 들어, 도 4 및 도 8을 참조).
이어서, 블럭(340)을 탈출하는 경로가 어느 쪽으로 선택되더라도, 블럭(344)의 동작이 수행된다. 클라이언트측 인터셉트 함수(80)는 블럭(344)에 도시된 바와 같이 다중 가상 소켓을 삭제하고, 이어서 블럭(346)에 도시된 바와 같이 응답을 단방향 가상 소켓(70)을 거쳐 브라우저에게로 전송하기 위한 가상 전송 동작을 수행한다. 가상 전송 동작이 완료되면, 클라이언트측 인터셉트 함수(80)는 가상 플러쉬 동작을 수행하여 블럭(347)에 도시된 바와 같이 단방향 가상 소켓에 큐잉된 데이타를 실제 소켓(60B)으로 플러쉬하고, 이어서 가상 폐쇄 동작을 수행하여 블럭(348)에 도시된 바와 같이 단방향 가상 소켓을 폐쇄한다. 클라이언트측 인터셉트 함수에 대한 단방향 가상 소켓이 폐쇄된 후, 도 14의 블럭(349, 350)에 도시된 바와 같이 단방향 가상 소켓이 삭제되고, 클라이언트측 인터셉트 함수가 종료된다.
당 분야에 통상의 지식을 가진 자라면 이해하듯이, 본 발명이 단방향 및 다중 가상 소켓과 클라이언트측 인터셉트 및 서버측 인터셉트 함수의 생성에 대한 하나의 특정한 실시예로 기술되었지만, 이들 다수의 함수들은 단일 클라이언트측 인터셉트 모듈 또는 서버측 인터셉트 모듈내에서도 생성될 수 있다. 따라서, 본 발명에 따른 클라이언트측 인터셉트 모듈 및 서버측 인터셉트 모듈은 클라이언트측 인터셉트 모듈(30)과 서버측 인터셉트 모듈(40) 사이에서 TCP/IP 접속을 생성하고, 이어서 TCP/IP 접속을 유지하면서 TCP/IP상에서 웹 브라우저 또는 웹 서버가 발신한 다수의 통신을 다중화할 수 있다.
클라이언트 소켓 관리자 및 서버 소켓 관리자의 나머지 함수들은 도 16-1∼도 16-4 및 도 17-1 및 도 17-2를 참조하면 용이하게 이해될 수 있으며, 이들 도면은 도 14 및 도 15의 흐름도로 도시된 바와 같이 가상 생성, 가상 전송, 가상 수신, 가상 선택, 가상 플러쉬 또는 가상 폐쇄 동작이 실행될 때 클라이언트측 인터셉트 모듈 및 서버측 인터셉트 모듈에 의해 수행되는 동작을 나타낸다. 도 14의 블럭(333) 및 도 15의 블럭(363)에 도시된 바와 같이 가상 생성 동작이 수행되면, 도 16-1의 블럭(400)에서 개시되는 동작이 수행된다. 이어서, 블럭(405)에 도시된 바와 같이, 소켓 관리자는 실제 소켓이 요구되었는지의 여부를 판정한다. 만일 기존의 실제 소켓에 접속되어야 하는 다중 가상 소켓을 생성하는 경우와 같이 실제 소켓이 이미 존재하면, 블럭(405)의 ";아니오"; 경로가 선택되고, 가상 소켓은 블럭(409)에 도시된 바와 같이 실제 소켓에 접속된다. 그러나, 만일 실제 소켓이 요구된 경우에는 블럭(405)의 ";예"; 경로가 선택된다. 이어서, 블럭(406)에서 실제 소켓이 생성된다. 이어서, 도 13의 블럭(302)에 도시된 바와 같은 모니터링을 위해 블럭(408)에서 실제 소켓이 이벤트 리스트에 추가된다. 실제 소켓이 생성되고 접속이 설정된 후, 블럭(409)에서 가상 소켓이 실제 소켓에 접속되고, 블럭(410)에서 생성 동작이 완료된다.
도 14의 블럭(334, 346) 또는 도 15의 블럭(364, 376)에 도시된 가상 전송 동작을 수행하기 위해, 도 16-2의 블럭(420)으로 개시되는 동작이 수행된다. 데이타는 블럭(427)에 도시된 바와 같이 가상 소켓 큐에 추가되고, 이러한 추가 동작이 완료되면 블럭(428)에 도시된 바와 같이 전송 동작을 종료한다.
도 14의 블럭(331, 341) 및 도 15의 블럭(361, 371)에 도시된 가상 수신 동작은 도 16-3의 블럭(430)에서 개시되는 동작을 수행함으로써 행해진다. 블럭(435)에 도시된 바와 같이, 가상 소켓 큐를 평가하여, 가상 소켓 큐에 임의의 데이타가 존재하는지를 판정한다. 만일 가상 소켓 큐상에 데이타가 존재하면, 블럭(435)의 ";예"; 경로가 선택되고, 블럭(436)에 도시된 바와 같이 데이타는 수신 동작을 호출하는 함수로 리턴된다. 만일 가상 소켓 큐상에 데이타가 존재하지 않고 소켓이 폐쇄로 표시되어 있지 않으면, 판단 블럭(440)의 ";아니오"; 경로가 선택되고, 블럭(441)에 도시된 바와 같이 아무것도 리턴되지 않는다. 그러나, 데이타가 큐상에 존재하지 않고 소켓이 폐쇄로 표시되어 있으면, 블럭(440)의 ";예"; 경로가 선택되고, 블럭(442)에 도시된 바와 같이 소켓은 폐쇄된 것으로 표시되고, 블럭(443)에 도시된 바와 같이 폐쇄된 소켓 응답이 수신을 요구하는 동작으로 리턴한다.
도 14의 블럭(326, 336) 및 도 15의 블럭(366)에서 수행되는 가상 선택 동작은 도 16-4의 블럭(445)에서 개시되는 동작을 수행함으로써 행해진다. 블럭(446)에 도시된 바와 같이, 선택된 가상 소켓에 대해 데이타 또는 가상 폐쇄 동작이 펜딩(pending)중인지를 우선 판정한다. 만일 데이타 또는 가상 폐쇄 동작이 수행중에 있지 않으면, 블럭(446)의 ";아니오"; 경로가 선택되고, 블럭(447)에 도시된 바와 같이 선택된 가상 소켓상에서 가상 이벤트를 대기하고, 블럭(448)에 도시된 바와 같이 이벤트를 수신한 후에 프로세스를 종료한다. 만일 데이타 또는 가상 폐쇄 동작이 선택된 가상 소켓에 대해 펜딩중이면, 가상 이벤트는 이미 발생되었으므로, 블럭(446)의 ";예"; 경로가 선택되고, 블럭(448)에서 프로세스를 종료한다.
도 14의 블럭(335, 347) 및 도 15의 블럭(365, 377)에서의 가상 플러쉬 동작은 도 17-1의 블럭(450)에서 개시되는 동작을 수행함으로써 행해진다. 호출되면, 판단 블럭(455)에서 플러쉬되어야 하는 가상 소켓 큐에 임의의 데이타가 존재하는지의 여부를 판정한다. 가상 소켓 큐에 데이타가 존재하지 않으면, 플러쉬 동작은 단순히 종료되어 블럭(455)의 ";아니오"; 경로의 호출 함수로 리턴된다. 그러나, 큐에 데이타가 존재하면, 블럭(455)의 ";예"; 경로가 선택되고, 블럭(460)에서 가상 소켓 큐가 다중 소켓에 대한 것인지의 여부를 판정한다. 만일 이것이 다중 소켓인 경우에는, 블럭(461)에 도시된 바와 같이 소켓에 대한 고유의 식별자 및 전송시 데이타의 양을 나타내는 3 바이트로 구성된 소켓 헤더가 실제 소켓 버퍼에 부가된다. 다중 소켓이든지 혹은 단방향 소켓이든지 간에, 블럭(462)에 도시된 바와 같이 실제 소켓에 대한 데이타는 실제 소켓 버퍼로 이동된다. 실제 소켓 버퍼가 차 있는 경우에는 블럭(465)의 ";예"; 경로가 선택되고, 블럭(466)에 도시된 바와 같이 실제 소켓 버퍼로부터의 데이타가 실제 소켓상으로 전송된다. 만일 실제 버퍼가 채워지지 않았으면, 블럭(465)의 ";아니오"; 경로가 선택된다. 이어서, 가상 플러쉬 함수는 임의의 다른 다중 가상 소켓 큐상에 실제 소켓으로 전송되어야 하는 소정의 다른 데이타가 존재하는지의 여부를 판정한다. 만일 결과가 긍정이면, 블럭(470)의 ";예"; 경로가 선택되고, 다른 가상 소켓 큐들중 하나가를 플러쉬하기 위한 가상 플러쉬 동작이 호출될 때까지 실제 소켓 버퍼내의 데이타는 전송되지 않는다. 만일 다른 데이타가 존재하지 않거나 혹은 다른 다중 가상 소켓으로부터 데이타를 부가한 후, 블럭(466)의 동작이 수행되고, 실제 소켓 버퍼내의 데이타는 실제 소켓상으로 전송된다. 가상 플러쉬 동작을 호출한 함수에 대응하는 가상 소켓 큐내의 모든 데이타가 실제 소켓으로 전송된 후에, 블럭(467)에서 가상 플러쉬 동작이 종료된다.
도 14의 블럭(342, 348) 및 도 15의 블럭(372, 378)에 도시된 가상 폐쇄 동작은 도 17-2의 블럭(480)에서 개시되는 동작을 수행함으로써 행해진다. 가상 폐쇄 동작이 호출되면, 블럭(485)에 도시된 바와 같이 가상 폐쇄가 다중 가상 소켓에 대한 것인지의 여부를 우선 판정한다. 만일 가상 폐쇄가 다중 가상 소켓에 대한 것이면, 블럭(485)의 ";예"; 경로가 선택되고, ";폐쇄"; 동작 표시자가 가상 소켓 큐에 부가된다. 가상 폐쇄가 다중 가상 소켓에 대한 것이든 아니든 간에 가상 폐쇄 동작은 블럭(487)에 도시된 바와 같이 가상 플러쉬 동작을 호출하고, 블럭(488)에서 실제 소켓으로부터의 접속을 해제한다. 이어서, 블럭(490)에 도시된 바와 같이 가상 폐쇄가 단방향 가상 소켓에 대한 것인지의 여부를 판정하며, 만일 조건이 충족되지 않으면, 블럭(495)의 ";아니오"; 경로가 선택된다. 가상 폐쇄가 다중 가상 소켓에 대한 것이므로, 블럭(495)에서 가상 폐쇄가 최근 다중 가상 소켓에 대한 것인지의 여부를 판정하고, 만일 가상 폐쇄가 최근 다중 가상 소켓에 대한 것이면 블럭(496)에 도시된 바와 같이 다중 활성 타이머를 세트시킨다. 만일 가상 폐쇄가 최근 다중 가상 소켓에 대한 것이 아니면, 블럭(496)을 생략한다.
블럭(490)에서 가상 폐쇄가 단방향 가상 소켓에 대한 것이면, 블럭(491)에 도시된 바와 같이 이벤트 리스트로부터 대응하는 실제 소켓이 삭제되고, 블럭(492)에 도시된 바와 같이 실제 소켓이 폐쇄되고 삭제된다. 이러한 소켓이 단방향 가상 소켓이든 다중 가상 소켓이든지 간에 가상 소켓은 블럭(497)에서 폐쇄된 것으로 표시되고, 블럭(498)에서 폐쇄 동작을 종료한다.
이하, 도 16-1 내지 도 16-4 및 도 17-1 및 도 17-2와 관련하여 도 13을 설명한다. 실제 이벤트가 발생되면, 도 13의 블럭(302)을 빠져나오고, 소켓 관리자는 이벤트가 생성된 방식에 기초하여 이벤트를 조사한다. 만일 이벤트가 도 17-2의 블럭(496)에서 세트된 다중 소켓 활성 타이머의 타이밍 아웃(timing out)이면, 도 13의 블럭(305)에서 블럭(312)로 진행되는 경로가 선택된다. 이어서, 도 13에 도시된 바와 같이 블럭(312, 313)의 동작이 소켓 관리자에 의해 수행되어, 다중 실제 소켓을 폐쇄하고, 클라이언트측 인터셉트 모듈을 서버측 인터셉트 모듈에 접속하는 소켓에 대응하는 다중 실제 소켓을 삭제한다. 이어서, 소켓 관리자는 다음 실제 이벤트를 대기한다. 이러한 다중 이벤트 타이머는 블럭(322)에 도시된 바와 같이 다중 가상 소켓을 생성함으로써 리셋된다.
실제 소켓상에서 발생되는 이벤트가 웹 서버와 서버측 인터셉트 모듈 사이의 소켓 접속상에서 폐쇄 동작을 수행하는 웹 서버와 같은 실제 소켓 폐쇄이면, 도 13의 블럭(305)에서 블럭(309)으로 진행되는 경로가 선택된다. 소켓 관리자는 블럭(309)에 도시된 바와 같이 실제 이벤트 리스트로부터 실제 소켓을 삭제하고, 블럭(310)에 도시된 바와 같이 다수의 다중 소켓인 경우 실제 소켓(들)로부터의 가상 소켓(들)을 접속 해제시킨다. 이어서, 소켓 관리자는 가상 소켓을 폐쇄로서 표시하고 가상 이벤트를 신호한다. 이러한 동작은 블럭(311)에 도시되어 있으며, 가상 소켓 큐로부터 모든 데이타가 비워지면, 가상 소켓은 폐쇄된다. 가상 소켓을 폐쇄된 것으로 표시한 후, 판단 블럭(315)에 도시된 바와 같이 소켓 관리자는 폐쇄되어야 하는 실제 소켓이 단방향 소켓인지의 여부를 판정한다. 실제 소켓 폐쇄가 단방향 소켓에 대한 것인 경우, 블럭(316)에 도시된 바와 같이 실제 소켓이 폐쇄되고 삭제된다. 이어서, 블럭(302)에 도시된 바와 같이 소켓 관리자는 다음 실제 이벤트를 대기한다.
실제 소켓 폐쇄가 단방향 실제 소켓에 대한 것이 아니면, 블럭(315)의 ";아니오"; 경로가 선택되고, 이어서 소켓 관리자는 다음 실제 이벤트를 대기한다. 따라서, 다중 실제 소켓 또는 클라이언트측 인터셉트 모듈과 서버측 인터셉트 모듈을 접속하는 소켓은 다중 소켓 활성 타이머를 타이밍 아웃시킴으로써만 폐쇄될 수 있다. 이로 인해, 모듈들 간의 최근 통신이 사용자에 의해 지정된 사전결정된 시간 동안 발생된 후에도 클라이언트측 인터셉트 모듈과 서버측 인터셉트 모듈간의 접속을 계속 유지할 수 있다. 다중 소켓 활성 타이머를 타이밍 아웃시키기 전에 브라우저로부터 계속되는 접속이 요구되는 경우, 클라이언트측 인터셉트 모듈과 서버측 인터셉트 모듈간의 접속을 재설정하지 않고서도 통신을 수행할 수 있으며, 그 결과 접속을 재설정하기 위한 오버헤드를 제거할 수 있다.
도 13에 도시된 최종 경로는 실제 이벤트가 발생되고 이벤트가 도 12의 다중 실제 소켓(들)(36A, 36B)상의 데이타를 수신하는 것인 때이다. 다중 실제 소켓상으로 데이타가 수신되면 이 데이타를 조사하고, 도 17-2의 블럭(486)에서 가상 큐에 부가되는 것과 같이 데이타가 폐쇄 동작 표시자를 포함하면, 가상 폐쇄 동작이 수행되고, 블럭(320)에서 블럭(310)으로 진행되는 경로가 선택된다. 소켓 관리자는 블럭(310)에 도시된 바와 같이 실제 소켓상에서 수신된 데이타에 식별된 다중 가상 소켓을 실제 소켓으로부터 접속 해제시키고, 블럭(311)에 도시된 바와 같이 가상 소켓을 ";폐쇄";로서 표시하고, 가상 이벤트를 신호한다. 다중 가상 소켓에 대한 폐쇄이므로, 블럭(315)의 ";아니오"; 경로가 선택되고, 소켓 관리자는 블럭(302)에 도시된 바와 같이 다른 실제 이벤트를 대기한다.
도 13∼17에 도시된 동작을 수행함으로써, 본 발명의 특정한 측면에 의해 외부 통신 링크를 통해 제 1 컴퓨터와 제 2 컴퓨터 사이에 지속적인 접속(persistent connection)이 설정된다. 지속적인 접속은, 모든 웹 브라우저가 발신한 통신이 완료되고 다수의 웹 브라우저가 발신한 통신이 인터셉트되어, 지속적인 접속이 유지되는 동안 외부 통신 링크상으로 이들 통신이 다중화될 때까지 유지된다. 이어서, 클라이언트/서버 특정 데이타 스트림을 역다중화하여 다수의 HTTP 데이타 스트림을 생성하고, 다수의 HTTP 데이타 스트림을 웹 서버에 제공한다. 또한, 지속적인 접속은 모든 웹 서버가 발신한 통신이 완료될 때까지 유지된다. 지속적인 접속이 유지되는 동안 다수의 웹 서버가 발신한 통신이 인터셉트되고 외부 통신 링크상으로 다중화된다. 또한, 클라이언트/서버 특정 데이타 스트림을 역다중화하여, 다수의 HTTP 데이타 스트림 및 웹 서버에 제공되는 다수의 HTTP 데이타 스트림을 생성할 수 있다.
도면 및 명세서에는 본 발명의 바람직한 실시예가 개시되어 있고, 특정한 용어들이 사용되었지만, 이들 용어는 일반적이고 설명적인 의미로 사용될뿐, 제한을 목적으로 하지 않으며, 본 발명의 범주는 후속하는 특허 청구범위에 한정된다.

Claims (14)

  1. 제 1 컴퓨터에 상주하는 제 1 애플리케이션(a first application)으로부터 통신 링크를 통해 제 2 컴퓨터에 상주하는 제 2 애플리케이션(a second application)으로 전송되는 데이타를 줄이는 방법 ― 상기 데이타는 TCP 통신 프로토콜을 이용하여 상기 제 1 컴퓨터로부터 상기 외부 통신 링크를 통해 상기 제 2 컴퓨터에게로 전송됨 ― 에 있어서,
    ① 상기 제 1 애플리케이션에 의한 각각의 접속 요구에 응답하여 상기 제 1 컴퓨터에 상기 제 1 애플리케이션이 발신한 요구 데이타를 수신하기 위한 제 1 가상 소켓(a first virtual socket)을 설정하는 단계와,
    ② 상기 제 1 컴퓨터가 상기 외부 통신 링크를 통해 상기 제 2 컴퓨터와 접속되도록 상기 제 1 컴퓨터에 제 1 실제 소켓(a first real socket)을 설정하고 상기 제 2 컴퓨터에 제 2 실제 소켓(a second real socket)을 설정하는 단계와,
    ③ 상기 제 1 애플리케이션의 각각의 접속 요구에 대해 상기 제 2 컴퓨터에 제 2 가상 소켓(a second virtual socket)을 설정하는 단계 ― 상기 제 2 가상 소켓은 상기 제 1 애플리케이션의 접속 요구에 응답하여 상기 제 1 컴퓨터에 설정된 상기 제 1 가상 소켓에 대응함 ― 와,
    ④ 상기 제 1 가상 소켓과 관련된 요구 데이타를 상기 제 1 실제 소켓상으로 다중화하는 단계와,
    ⑤ TCP 프로토콜을 이용하여 상기 다중화된 요구 데이타를 상기 외부 통신 링크를 통해 상기 제 2 실제 소켓에게로 전송하는 단계와,
    ⑥ 상기 외부 통신 링크로부터 상기 다중화된 요구 데이타를 수신하는 단계와,
    ⑦ 상기 제 2 실제 소켓에 의해 상기 외부 통신 링크로부터 수신된 상기 요구 데이타를 역다중화(demultiplexing)하는 단계와,
    ⑧ 상기 역다중화된 요구 데이타를, 상기 제 1 애플리케이션으로부터의 상기 요구에 응답하여 설정된 상기 제 1 가상 소켓에 대응하는 상기 제 2 가상 소켓에 제공하는 단계와,
    ⑨ 상기 제 2 가상 소켓에 의해 수신된 상기 요구 데이타를 상기 제 2 애플리케이션에 제공하는 단계와,
    ⑩ 상기 제 1 가상 소켓을 설정한 상기 제 1 애플리케이션으로부터의 요구에 대응하는 상기 요구 데이타가 상기 제 2 애플리케이션에 제공될 때까지, 상기 제 1 및 제 2 실제 소켓을 유지시키는 단계를 포함하는
    통신 링크를 통해 전송되는 데이타를 감소시키는 방법.
  2. 제 1 항에 있어서,
    상기 제 1 애플리케이션으로부터의 요구에 응답하여, 상기 제 1 애플리케이션으로부터의 요구와 연관된 상기 제 2 가상 소켓에서 상기 제 2 애플리케이션으로부터의 응답 데이타를 수신하는 단계와,
    상기 제 2 가상 소켓에 의해 수신된 상기 응답 데이타를 상기 제 2 실제 소켓상으로 다중화하는 단계와,
    TCP 통신 프로토콜을 이용하여 상기 다중화된 응답 데이타를 상기 외부 통신 링크를 통해 상기 제 1 실제 소켓에게로 전송하는 단계와,
    상기 외부 통신 링크로부터 상기 다중화된 응답 데이타를 수신하는 단계와,
    상기 제 1 실제 소켓에 의해 수신된 상기 응답 데이타를 역다중화하는 단계와,
    상기 제 1 애플리케이션으로부터의 상기 요구에 대응하는 상기 제 1 가상 소켓에게로 상기 역다중화된 응답 데이타를 상기 제 1 애플리케이션으로부터의 요구에 대한 응답으로서 제공하는 단계와,
    상기 제 1 가상 소켓에 의해 수신된 상기 응답 데이타를 상기 제 1 애플리케이션에 제공하는 단계
    를 더 포함하는 통신 링크를 통해 전송되는 데이타를 감소시키는 방법.
  3. 제 2 항에 있어서,
    상기 응답 데이타가 다중화된 후 상기 제 2 가상 소켓을 폐쇄(close)시키는 단계와,
    상기 응답 데이타가 상기 제 1 애플리케이션에 제공된 후 상기 제 1 가상 소켓을 폐쇄시키는 단계
    를 더 포함하는 통신 링크를 통해 전송되는 데이타를 감소시키는 방법.
  4. 제 3 항에 있어서,
    상기 유지 단계는 상기 제 1 가상 소켓이 모두 폐쇄될 때 상기 제 1 및 제 2 실제 소켓을 폐쇄시키는 단계를 포함하는 통신 링크를 통해 전송되는 데이타를 감소시키는 방법.
  5. 제 3 항에 있어서
    상기 유지 단계는 상기 제 1 가상 소켓이 모두 폐쇄된 후 사전결정된 시간 동안 상기 제 1 및 제 2 실제 소켓을 유지하는 단계를 포함하는 통신 링크를 통해 전송되는 데이타를 감소시키는 방법.
  6. 제 1 항에 있어서,
    상기 제 1 애플리케이션은 웹 서버(a web server)를 포함하고, 상기 제 2 애플리케이션은 웹 브라우저(a web browser)를 포함하는 통신 링크를 통해 전송되는 데이타를 감소시키는 방법.
  7. 제 1 항에 있어서,
    상기 외부 통신 링크는 무선 통신 링크를 포함하는 통신 링크를 통해 전송되는 데이타를 감소시키는 방법.
  8. 제 1 컴퓨터에 상주하는 제 1 애플리케이션으로부터 통신 링크를 통해 제 2 컴퓨터에 상주하는 제 2 애플리케이션으로 전송되는 데이타를 감소시키는 장치 ― 상기 데이타는 TCP 통신 프로토콜을 이용하여 상기 제 1 컴퓨터로부터 상기 외부 통신 링크를 통해 상기 제 2 컴퓨터에게로 전송됨 ― 에 있어서,
    ① 상기 제 1 애플리케이션에 의한 각각의 접속 요구에 응답하여 상기 제 1 컴퓨터에 상기 제 1 애플리케이션이 발신한 요구 데이타를 수신하기 위한 제 1 가상 소켓을 설정하는 수단과,
    ② 상기 제 1 컴퓨터가 상기 외부 통신 링크를 통해 상기 제 2 컴퓨터와 접속되도록 상기 제 1 컴퓨터에 제 1 실제 소켓을 설정하고 상기 제 2 컴퓨터에 제 2 실제 소켓을 설정하는 수단과,
    ③ 상기 제 1 애플리케이션의 각각의 접속 요구에 대해 상기 제 2 컴퓨터에 제 2 가상 소켓을 설정하는 수단 ― 상기 제 2 가상 소켓은 상기 제 1 애플리케이션의 접속 요구에 응답하여 상기 제 1 컴퓨터에 설정된 상기 제 1 가상 소켓에 대응함 ― 과,
    ④ 상기 제 1 가상 소켓과 연관된 요구 데이타를 상기 제 1 실제 소켓상으로 다중화하는 수단과,
    ⑤ TCP 프로토콜을 이용하여 상기 다중화된 요구 데이타를 상기 외부 통신 링크를 통해 상기 제 2 실제 소켓에게로 전송하는 수단과,
    ⑥ 상기 외부 통신 링크로부터 상기 다중화된 요구 데이타를 수신하는 수단과,
    ⑦ 상기 제 2 실제 소켓에 의해 상기 외부 통신 링크로부터 수신된 상기 요구 데이타를 역다중화하는 수단과,
    ⑧ 상기 역다중화된 요구 데이타를, 상기 제 1 애플리케이션으로부터의 상기 요구에 응답하여 설정된 상기 제 1 가상 소켓에 대응하는 상기 제 2 가상 소켓에 제공하는 수단과,
    ⑨ 상기 제 2 가상 소켓에 의해 수신된 상기 요구 데이타를 상기 제 2 애플리케이션에 제공하는 수단과,
    ⑩ 상기 제 1 가상 소켓을 설정한 상기 제 1 애플리케이션으로부터의 요구에 대응하는 상기 요구 데이타가 상기 제 2 애플리케이션에 제공될 때까지, 상기 제 1 및 제 2 실제 소켓을 유지하는 수단
    을 포함하는 통신 링크를 통해 전송되는 데이타를 감소시키는 장치.
  9. 제 8 항에 있어서,
    상기 제 1 애플리케이션으로부터의 요구에 응답하여, 상기 제 1 애플리케이션으로부터의 요구와 연관된 상기 제 2 가상 소켓에서 상기 제 2 애플리케이션으로부터의 응답 데이타를 수신하는 수단과,
    상기 제 2 가상 소켓에 의해 수신된 상기 응답 데이타를 상기 제 2 실제 소켓상으로 다중화하는 수단과,
    TCP 통신 프로토콜을 이용하여 상기 다중화된 응답 데이타를 상기 외부 통신 링크를 통해 상기 제 1 실제 소켓에게로 전송하는 수단과,
    상기 외부 통신 링크로부터 상기 다중화된 응답 데이타를 수신하는 수단과,
    상기 제 1 실제 소켓에 의해 수신된 상기 응답 데이타를 역다중화하는 수단과,
    상기 제 1 애플리케이션으로부터의 상기 요구에 대응하는 상기 제 1 가상 소켓에게로 상기 역다중화된 응답 데이타를 상기 제 1 애플리케이션으로부터의 요구에 대한 응답으로서 제공하는 수단과,
    상기 제 1 가상 소켓에 의해 수신된 상기 응답 데이타를 상기 제 1 애플리케이션에 제공하는 수단
    을 더 포함하는 통신 링크를 통해 전송되는 데이타를 감소시키는 장치.
  10. 제 9 항에 있어서,
    상기 응답 데이타가 다중화된 후 상기 제 2 가상 소켓을 폐쇄시키는 수단과,
    상기 응답 데이타가 상기 제 1 애플리케이션에 제공된 후 상기 제 1 가상 소켓을 폐쇄시키는 수단
    을 더 포함하는 통신 링크를 통해 전송되는 데이타를 감소시키는 장치.
  11. 제 10 항에 있어서,
    상기 유지 수단은 상기 제 1 가상 소켓이 모두 폐쇄될 때 상기 제 1 및 제 2 실제 소켓을 폐쇄시키는 수단을 포함하는 통신 링크를 통해 전송되는 데이타를 감소시키는 장치.
  12. 제 10 항에 있어서,
    상기 유지 수단은 상기 제 1 가상 소켓이 모두 폐쇄된 후 사전결정된 시간 동안 상기 제 1 및 제 2 실제 소켓을 유지하는 수단을 포함하는 통신 링크를 통해 전송되는 데이타를 감소시키는 장치.
  13. 제 8 항에 있어서,
    상기 제 1 애플리케이션은 웹 서버를 포함하고, 상기 제 2 애플리케이션은 웹 브라우저를 포함하는 통신 링크를 통해 전송되는 데이타를 감소시키는 장치.
  14. 제 8 항에 있어서,
    상기 외부 통신 링크는 무선 통신 링크를 포함하는 통신 링크를 통해 전송되는 데이타를 감소시키는 장치.
KR1019970707262A 1996-02-15 1996-07-11 통신링크를통해전송되는데이타를감소시키는방법및장치 KR100289521B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US8/601755 1996-02-15
US08/601,755 US5867661A (en) 1996-02-15 1996-02-15 Method and apparatus of using virtual sockets for reducing data transmitted over a wireless communication link between a client web browser and a host web server using a standard TCP protocol
US8/601,755 1996-02-15
PCT/US1996/011553 WO1997030554A2 (en) 1996-02-15 1996-07-11 Reduced overhead tcp communication system

Publications (2)

Publication Number Publication Date
KR19980703862A KR19980703862A (ko) 1998-12-05
KR100289521B1 true KR100289521B1 (ko) 2001-05-02

Family

ID=24408646

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970707262A KR100289521B1 (ko) 1996-02-15 1996-07-11 통신링크를통해전송되는데이타를감소시키는방법및장치

Country Status (16)

Country Link
US (1) US5867661A (ko)
EP (1) EP0823173B1 (ko)
JP (1) JP3483892B2 (ko)
KR (1) KR100289521B1 (ko)
CN (1) CN1260937C (ko)
AT (1) ATE193629T1 (ko)
CA (1) CA2218153C (ko)
CZ (1) CZ287957B6 (ko)
DE (1) DE69608681T8 (ko)
ES (1) ES2146403T3 (ko)
HK (1) HK1009570A1 (ko)
HU (1) HU225569B1 (ko)
MY (1) MY122363A (ko)
PL (1) PL180608B1 (ko)
TW (1) TW294872B (ko)
WO (1) WO1997030554A2 (ko)

Families Citing this family (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5754774A (en) * 1996-02-15 1998-05-19 International Business Machine Corp. Client/server communication system
US5898780A (en) * 1996-05-21 1999-04-27 Gric Communications, Inc. Method and apparatus for authorizing remote internet access
FI102923B1 (fi) * 1996-08-08 1999-03-15 Nokia Mobile Phones Ltd Tiedontulostusjärjestelmä, menetelmä tiedon tulostamiseksi sekä päätelaitteet tiedon tulostamiseksi
US6470398B1 (en) * 1996-08-21 2002-10-22 Compaq Computer Corporation Method and apparatus for supporting a select () system call and interprocess communication in a fault-tolerant, scalable distributed computer environment
US5931904A (en) * 1996-10-11 1999-08-03 At&T Corp. Method for reducing the delay between the time a data page is requested and the time the data page is displayed
US6401109B1 (en) * 1996-11-18 2002-06-04 International Business Machines Corp. Virtual socket for JAVA interprocess communication
US6553428B1 (en) 1996-11-18 2003-04-22 International Business Machines Corporation Distributed object instantiation of native objects in java
US6411996B1 (en) * 1997-06-30 2002-06-25 Sun Microsystems, Inc. Method and apparatus maintaining a to-be-visited site bookmark file
US5895471A (en) 1997-07-11 1999-04-20 Unwired Planet, Inc. Providing a directory of frequently used hyperlinks on a remote server
US6295291B1 (en) * 1997-07-31 2001-09-25 Nortel Networks Limited Setup of new subscriber radiotelephone service using the internet
US6035324A (en) * 1997-08-28 2000-03-07 International Business Machines Corporation Client-side asynchronous form management
US6070184A (en) * 1997-08-28 2000-05-30 International Business Machines Corporation Server-side asynchronous form management
JPH1185654A (ja) * 1997-09-12 1999-03-30 Matsushita Electric Ind Co Ltd 仮想wwwサーバ装置およびカメラ制御可能なwwwサーバ装置
JPH11112609A (ja) * 1997-10-06 1999-04-23 Toshiba Corp 通信システムにおける通信障害回復方法ならびに同方法がプログラムされ記録される記録媒体
US6567853B2 (en) * 1997-12-08 2003-05-20 International Business Machines Corporation Scalable I/O system for the efficient transfer of storage device data by a non-server reconnection
US20040107208A1 (en) * 1997-12-09 2004-06-03 Seet Siew Shon Method and apparatus for bookmarking telephone numbers for efficient access by wireless phone devices
US6065120A (en) * 1997-12-09 2000-05-16 Phone.Com, Inc. Method and system for self-provisioning a rendezvous to ensure secure access to information in a database from multiple devices
US6711166B1 (en) 1997-12-10 2004-03-23 Radvision Ltd. System and method for packet network trunking
US6170013B1 (en) * 1998-03-27 2001-01-02 Nortel Networks Limited Method and apparatus for controlling access to network information sources
US6148340A (en) * 1998-04-30 2000-11-14 International Business Machines Corporation Method and system for differencing container files
US6412015B1 (en) * 1998-06-24 2002-06-25 New Moon Systems, Inc. System and method for virtualizing and controlling input and output of computer programs
US7127493B1 (en) 1998-08-20 2006-10-24 Gautier Taylor S Optimizing server delivery of content by selective inclusion of optional data based on optimization criteria
US6397253B1 (en) * 1998-10-06 2002-05-28 Bull Hn Information Systems Inc. Method and system for providing high performance Web browser and server communications
US6338089B1 (en) * 1998-10-06 2002-01-08 Bull Hn Information Systems Inc. Method and system for providing session pools for high performance web browser and server communications
US6341312B1 (en) * 1998-12-16 2002-01-22 International Business Machines Corporation Creating and managing persistent connections
US6456603B1 (en) 1999-01-21 2002-09-24 Telefonaktiebolaget L M Ericsson (Publ) Method of supporting communications mobility in a telecommunications system
US7210147B1 (en) 1999-10-05 2007-04-24 Veritas Operating Corporation IP virtualization
WO2001026267A1 (en) * 1999-10-05 2001-04-12 Ejasent Inc. Virtual port multiplexing
US6324568B1 (en) * 1999-11-30 2001-11-27 Siebel Systems, Inc. Method and system for distributing objects over a network
US6708217B1 (en) 2000-01-05 2004-03-16 International Business Machines Corporation Method and system for receiving and demultiplexing multi-modal document content
US6983315B1 (en) 2000-01-18 2006-01-03 Wrq, Inc. Applet embedded cross-platform caching
US7240067B2 (en) * 2000-02-08 2007-07-03 Sybase, Inc. System and methodology for extraction and aggregation of data from dynamic content
JP2001243182A (ja) * 2000-02-29 2001-09-07 Nec Corp サーバシステム及びWebコンテンツとサーバシステムとの連動方法
US6990526B1 (en) * 2000-05-22 2006-01-24 Pointred Technologies, Inc. Method and apparatus for web caching
KR20020006722A (ko) * 2000-07-13 2002-01-26 권혁 웹페이지 재구성 방법 및 이를 이용한 웹페이지 제공방법
US20020038373A1 (en) * 2000-07-21 2002-03-28 John Border Method and system for improving network performance enhancing proxy architecture with gateway redundancy
US6941384B1 (en) 2000-08-17 2005-09-06 International Business Machines Corporation Methods, systems and computer program products for failure recovery for routed virtual internet protocol addresses
US6954784B2 (en) * 2000-08-17 2005-10-11 International Business Machines Corporation Systems, method and computer program products for cluster workload distribution without preconfigured port identification by utilizing a port of multiple ports associated with a single IP address
US6996617B1 (en) 2000-08-17 2006-02-07 International Business Machines Corporation Methods, systems and computer program products for non-disruptively transferring a virtual internet protocol address between communication protocol stacks
US6996631B1 (en) 2000-08-17 2006-02-07 International Business Machines Corporation System having a single IP address associated with communication protocol stacks in a cluster of processing systems
US7120697B2 (en) * 2001-05-22 2006-10-10 International Business Machines Corporation Methods, systems and computer program products for port assignments of multiple application instances using the same source IP address
US6947431B1 (en) 2000-08-23 2005-09-20 Radio Ip Software Inc. Wireless data communications with header suppression and reconstruction
JP3739260B2 (ja) * 2000-08-24 2006-01-25 株式会社日立製作所 情報配信システムおよびゲートウェイ装置
US7596784B2 (en) * 2000-09-12 2009-09-29 Symantec Operating Corporation Method system and apparatus for providing pay-per-use distributed computing resources
AU2001296993A1 (en) 2000-10-05 2002-04-15 Christopher Peiffer Connection management system and method
US7263550B1 (en) 2000-10-10 2007-08-28 Juniper Networks, Inc. Agent-based event-driven web server architecture
US6963917B1 (en) 2000-10-20 2005-11-08 International Business Machines Corporation Methods, systems and computer program products for policy based distribution of workload to subsets of potential servers
US6965930B1 (en) 2000-10-20 2005-11-15 International Business Machines Corporation Methods, systems and computer program products for workload distribution based on end-to-end quality of service
US7076518B1 (en) 2000-10-24 2006-07-11 Hewlett-Packard Development Comapny, L.P. System and method for linking a web server in a peripheral to a network through a host
US7068643B1 (en) * 2000-11-03 2006-06-27 Intervoice Limited Partnership Extensible interactive voice response
KR100451721B1 (ko) * 2000-12-30 2004-10-08 엘지전자 주식회사 이동통신 시스템에서의 프로세서간 정합 방법
US6961773B2 (en) 2001-01-19 2005-11-01 Esoft, Inc. System and method for managing application service providers
US7080120B2 (en) * 2001-01-19 2006-07-18 Digital Orchid, Inc. System and method for collaborative processing of distributed applications
US7325030B2 (en) * 2001-01-25 2008-01-29 Yahoo, Inc. High performance client-server communication system
US20020133598A1 (en) * 2001-03-16 2002-09-19 Strahm Frederick William Network communication
US7711831B2 (en) * 2001-05-22 2010-05-04 International Business Machines Corporation Methods, systems and computer program products for source address selection
US7165112B2 (en) * 2001-06-22 2007-01-16 Motorola, Inc. Method and apparatus for transmitting data in a communication system
US8001594B2 (en) * 2001-07-30 2011-08-16 Ipass, Inc. Monitoring computer network security enforcement
US8346848B2 (en) * 2001-08-16 2013-01-01 Juniper Networks, Inc. System and method for maintaining statefulness during client-server interactions
US7225260B2 (en) * 2001-09-28 2007-05-29 Symbol Technologies, Inc. Software method for maintaining connectivity between applications during communications by mobile computer terminals operable in wireless networks
WO2003032144A1 (fr) * 2001-10-05 2003-04-17 Matsushita Electric Industrial Co., Ltd. Systeme et procede de creation de donnees d'impression
US7103671B2 (en) * 2002-03-14 2006-09-05 Yahoo! Inc. Proxy client-server communication system
ITMI20020678A1 (it) * 2002-03-29 2003-09-29 Sirap Gema Spa Confezione per la conservazione sottovuoto o in atmosfera protettiva di alimenti suscettibili di rilasciare liquidi e/o aeriformi
US20040015591A1 (en) * 2002-07-18 2004-01-22 Wang Frank Xiao-Dong Collective TCP control for improved wireless network performance
US7152111B2 (en) 2002-08-15 2006-12-19 Digi International Inc. Method and apparatus for a client connection manager
US8176186B2 (en) 2002-10-30 2012-05-08 Riverbed Technology, Inc. Transaction accelerator for client-server communications systems
US7120666B2 (en) * 2002-10-30 2006-10-10 Riverbed Technology, Inc. Transaction accelerator for client-server communication systems
US20040187083A1 (en) * 2003-03-18 2004-09-23 Tracey Bryan D. System and method for reducing the size of wireless communications
US7493398B2 (en) * 2003-04-16 2009-02-17 Microsoft Corporation Shared socket connections for efficient data transmission
US20050050021A1 (en) 2003-08-25 2005-03-03 Sybase, Inc. Information Messaging and Collaboration System
US20050091226A1 (en) * 2003-10-23 2005-04-28 Yun Lin Persistent caching directory level support
US7441011B2 (en) * 2003-10-23 2008-10-21 Microsoft Corporation Truth on client persistent caching
US8010670B2 (en) * 2003-12-23 2011-08-30 Slipstream Data Inc. Meta-data based method for local cache utilization
US8676922B1 (en) 2004-06-30 2014-03-18 Google Inc. Automatic proxy setting modification
KR100684308B1 (ko) * 2004-08-25 2007-02-16 한국전자통신연구원 무선 접속 단말 장치 및 이를 이용하는 무선 접속 관리 방법
US7577749B1 (en) 2004-12-03 2009-08-18 Ux Ltd. Emulation of persistent HTTP connections between network devices
US7475154B2 (en) * 2005-02-24 2009-01-06 International Business Machines Corporation Splicing proxied web requests with callback for subsequent requests
US20060248194A1 (en) 2005-03-18 2006-11-02 Riverbed Technology, Inc. Connection forwarding
US20070115917A1 (en) * 2005-10-31 2007-05-24 Microsoft Corporation MTOM data transfer via TCP
US7738887B2 (en) * 2005-10-31 2010-06-15 Microsoft Corporation Voice instant messaging between mobile and computing devices
US7904563B2 (en) * 2006-03-31 2011-03-08 Microsoft Corporation Establishing and utilizing terminal server dynamic virtual channels
US8584199B1 (en) 2006-10-17 2013-11-12 A10 Networks, Inc. System and method to apply a packet routing policy to an application session
US8312507B2 (en) 2006-10-17 2012-11-13 A10 Networks, Inc. System and method to apply network traffic policy to an application session
US7979554B2 (en) * 2006-12-21 2011-07-12 International Business Machines Corporation Apparatus, system, and method for enabling conversational transactions in a service oriented architecture
US8812651B1 (en) * 2007-02-15 2014-08-19 Google Inc. Systems and methods for client cache awareness
US8260934B2 (en) * 2007-08-31 2012-09-04 Red Hat, Inc. Multiplex transport
US7899031B2 (en) * 2007-11-20 2011-03-01 Microsoft Corporation Locally terminating an established connection
US20090260023A1 (en) * 2008-04-11 2009-10-15 Hewlett-Parckard Development Commpany, Lp Multiplexing Reserved Ports
US8688799B2 (en) * 2011-06-30 2014-04-01 Nokia Corporation Methods, apparatuses and computer program products for reducing memory copy overhead by indicating a location of requested data for direct access
CN103136059A (zh) * 2011-11-24 2013-06-05 中兴通讯股份有限公司 一种内存区间相互隔离的程序之间的通讯方法及处理单元
US9118618B2 (en) 2012-03-29 2015-08-25 A10 Networks, Inc. Hardware-based packet editor
US9338225B2 (en) 2012-12-06 2016-05-10 A10 Networks, Inc. Forwarding policies on a virtual service network
WO2014144837A1 (en) 2013-03-15 2014-09-18 A10 Networks, Inc. Processing data packets using a policy based network path
US10038693B2 (en) 2013-05-03 2018-07-31 A10 Networks, Inc. Facilitating secure network traffic by an application delivery controller
US9942152B2 (en) 2014-03-25 2018-04-10 A10 Networks, Inc. Forwarding data packets using a service-based forwarding policy
US10268467B2 (en) 2014-11-11 2019-04-23 A10 Networks, Inc. Policy-driven management of application traffic for providing services to cloud-based applications
US20180324061A1 (en) * 2017-05-03 2018-11-08 Extrahop Networks, Inc. Detecting network flow states for network traffic analysis
US11063823B2 (en) 2019-06-19 2021-07-13 International Business Machines Corporation Inter-service data transportation through data fragmentation and socket replication

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0060599A1 (en) * 1981-03-09 1982-09-22 Wavin B.V. A plastics bag comprising venting means

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2511591B2 (ja) * 1990-10-29 1996-06-26 インターナショナル・ビジネス・マシーンズ・コーポレイション 無線光通信システムの動作方法および光通信システム
US5537417A (en) * 1993-01-29 1996-07-16 International Business Machines Corporation Kernel socket structure for concurrent multiple protocol access
US5446736A (en) * 1993-10-07 1995-08-29 Ast Research, Inc. Method and apparatus for connecting a node to a wireless network using a standard protocol
CA2150062A1 (en) * 1994-06-30 1995-12-31 Richard James Garrick Applications programming interface for distributed processing in networks
US5572528A (en) * 1995-03-20 1996-11-05 Novell, Inc. Mobile networking method and apparatus
US5581558A (en) * 1995-03-29 1996-12-03 Lucent Technologies Inc. Apparatus for bridging non-compatible network architectures

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0060599A1 (en) * 1981-03-09 1982-09-22 Wavin B.V. A plastics bag comprising venting means

Also Published As

Publication number Publication date
HU225569B1 (en) 2007-03-28
KR19980703862A (ko) 1998-12-05
CN1260937C (zh) 2006-06-21
JP3483892B2 (ja) 2004-01-06
CA2218153A1 (en) 1997-08-21
HUP9802083A3 (en) 1999-03-01
CZ354397A3 (cs) 1998-03-18
CN1184576A (zh) 1998-06-10
ES2146403T3 (es) 2000-08-01
WO1997030554A2 (en) 1997-08-21
JPH11514117A (ja) 1999-11-30
DE69608681T8 (de) 2006-11-16
TW294872B (en) 1997-01-01
MY122363A (en) 2006-04-29
EP0823173B1 (en) 2000-05-31
DE69608681D1 (de) 2000-07-06
WO1997030554A3 (en) 1997-10-23
US5867661A (en) 1999-02-02
ATE193629T1 (de) 2000-06-15
HUP9802083A2 (hu) 1998-12-28
PL322817A1 (en) 1998-02-16
EP0823173A2 (en) 1998-02-11
PL180608B1 (pl) 2001-03-30
CZ287957B6 (cs) 2001-03-14
CA2218153C (en) 2006-06-06
DE69608681T2 (de) 2000-11-23
HK1009570A1 (en) 1999-09-03

Similar Documents

Publication Publication Date Title
KR100289521B1 (ko) 통신링크를통해전송되는데이타를감소시키는방법및장치
KR100295003B1 (ko) 데이타캐싱방법및장치
KR100295730B1 (ko) 통신링크를통해전송되는데이타의감소방법및장치
KR100289520B1 (ko) 웹브라우저애플리케이션의성능향상방법및장치,클라이언트/서버시스템의성능향상방법및장치
KR970031564A (ko) 이더넷을 통한 아피씨(ipc)메시지 송수신 방법
CZ287679B6 (cs) Způsob zachycování dat přijatých od druhé aplikace, zařízení a počítačový programový produkt k jeho provádění

Legal Events

Date Code Title Description
PA0105 International application

Patent event date: 19971013

Patent event code: PA01051R01D

Comment text: International Patent Application

A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 19971231

Comment text: Request for Examination of Application

PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20000422

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20001228

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20010220

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20010221

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20031217

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20041228

Start annual number: 5

End annual number: 5

PR1001 Payment of annual fee

Payment date: 20060124

Start annual number: 6

End annual number: 6

PR1001 Payment of annual fee

Payment date: 20070205

Start annual number: 7

End annual number: 7

PR1001 Payment of annual fee

Payment date: 20080204

Start annual number: 8

End annual number: 8

PR1001 Payment of annual fee

Payment date: 20090129

Start annual number: 9

End annual number: 9

PR1001 Payment of annual fee

Payment date: 20091231

Start annual number: 10

End annual number: 10

FPAY Annual fee payment

Payment date: 20110110

Year of fee payment: 11

PR1001 Payment of annual fee

Payment date: 20110110

Start annual number: 11

End annual number: 11

LAPS Lapse due to unpaid annual fee
PC1903 Unpaid annual fee