KR100723320B1 - 인터넷 클라이언트-서버 멀티플렉서 - Google Patents

인터넷 클라이언트-서버 멀티플렉서 Download PDF

Info

Publication number
KR100723320B1
KR100723320B1 KR1020017005867A KR20017005867A KR100723320B1 KR 100723320 B1 KR100723320 B1 KR 100723320B1 KR 1020017005867 A KR1020017005867 A KR 1020017005867A KR 20017005867 A KR20017005867 A KR 20017005867A KR 100723320 B1 KR100723320 B1 KR 100723320B1
Authority
KR
South Korea
Prior art keywords
server
connection
client
data
segment
Prior art date
Application number
KR1020017005867A
Other languages
English (en)
Other versions
KR20010107955A (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 KR20010107955A publication Critical patent/KR20010107955A/ko
Application granted granted Critical
Publication of KR100723320B1 publication Critical patent/KR100723320B1/ko

Links

Images

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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • 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/14Multichannel or multilink protocols
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content

Landscapes

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

Abstract

본 발명에 따르면, 네트워크 클라이언트 대 서버를 멀티플렉싱하기 위한 장치, 방법 및 컴퓨터 프로그램 제품을 제공한다. 본 발명에 따른 장치는 복수의 서버를 복수의 클라이언트와 결합되는 인터넷에 결합시키는 인터페이스부내에서 구현된다. 본 발명의 "접속 풀링" 국면에 따르면, 인터페이스부는 서버와의 접속을 개방 및 유지하고, 접속을 개방 및 폐쇄함으로써 초래되는 처리 부하로부터 서버를 자유롭게 함으로써 서버에 액세스하는 클라이언트와의 접속의 개방 및 폐쇄를 취급한다. 본 발명의 "접속 분배" 국면에 따르면, 클라이언트로부터 수신되는 요청내의 경로명을 심사하여, 경로명에 따른 요청 정보를 호스팅하는 서버를 선택한다.

Description

인터넷 클라이언트-서버 멀티플렉서{INTERNET CLIENT-SERVER MULTIPLEXER}
본 발명은 대체로 인터넷 클라이언트-서버 애플리케이션에 관한 것으로, 더 구체적으로는, 인터넷을 통한 클라이언트들과 서버간 접속의 멀티플렉싱에 관한 것이다.
현대 경제에 있어서 신속한 정보 및 데이터 교환의 중요성은 간단히 말할 수 없다. 이러한 중요성은 기하급수적으로 증가하는 인터넷의 대중성으로 미루어 보아 알 수 있다. 상호 접속되어 있는 컴퓨터 네트워크의 월드 와이드 세트(world-wide set)인 인터넷은 증량되고 다양화된 정보에 전자적으로 액세스하기 위해 사용될 수 있다.
인터넷 상에 있는 정보에 액세스하는 하나의 방법이 월드 와이드 웹[www. 또는 "웹(web)": World Wide Web]으로서 알려져 있다. 웹은 분산형의 하이퍼미디어 시스템(hypermedia system)이며, 클라이언트 대 서버를 기반으로 하는 정보 제공 시스템으로서 기능한다. 웹을 통해 액세스할 수 있게 하는 정보는 "서버(server)"로서 알려져 있는 범용 컴퓨터 상에 "페이지(page)" 형태로 저장된다. 컴퓨터 사용자는 페이지의 일관된 자원 표시자[URL: uniform resource locator]를 지정함으로써, "클라이언트(client)"라고 칭하는 범용 컴퓨터를 사용하여 웹 페이지에 액세스할 수 있다. 도 1은 인터넷에 접속되어 있는 복수의 클라이언트와 복수의 서버를 도시하는 네트워크 블럭도이다.
클라이언트가 URL을 명시하는 경우, 도메인 이름(Domain name)이라 알려져 있는 URL 부분이 네트워크 어드레스로 번역되는 도메인 서버[DNS: domain server]로 전송된다. 네트워크 어드레스는 의도된 서버(intended server)의 인터넷 프로토콜[IP: Internet protocol] 어드레스를 지정한다. 클라이언트의 요청이 네트워크 어드레스를 갖는 서버로 전송된다. 서버는 URL에서의 경로명을 사용하여 클라이언트가 요청하는 웹 페이지를 찾아낸다. 그 후 웹 페이지의 사본은 사용자가 볼 수 있도록 클라이언트로 전송된다.
전술한 클라이언트 대 서버의 파라다임이 인터넷을 만족스럽게 서비스했다. 그러나, 이 파라다임에는 몇가지 문제점이 있다. 하나의 문제점이 서버 접속시의 부하이다.
서버는 소정의 일을 잘 수행하도록 설계된다. 서버는 통상적으로 파일 관리, 애플리케이션 처리, 데이터베이스 처리 등과 같은 일반적인 작업에 대해 최적화된 범용 기계이다. 서버는 네트워크 접속의 개방 및 폐쇄와 같은 스위칭 작업을 처리하기 위해서는 최적화되어 있지 않다. 소정의 부하 조건하에 있어서는, 이들 작업은 상당한 비율, 흔히 20%의 승수 및 때때로 50%까지 서버의 처리 자원을 소모하는 상당히 큰 오버헤드(overhead)를 나타낼 수 있다. 본 명세서에 있어서는 이 문제를 "접속 부하(connection loading)"라고 칭한다.
부하에 관해 더 설명하자면, 클라이언트 및 서버는 통상적으로 접속을 셋업하기 위해 세 개의 정보 패킷을 교환하여야 한다. 일단, 접속이 달성되면 클라이언트는 URL(페이지) 요청을 서버로 전송하고, URL 요청은 하나의 패킷으로 구성된다. 그 후 서버는 하나 이상의 패킷 응답을 클라이언트로 되전송한다. 일단, 요청 및 응답이 클라이언트 및 서버로부터 교환되면 클라이언트 및 서버 양쪽 모두가 그들의 각 접속을 폐쇄한다. 접속의 폐쇄는 추가적인 네 개의 정보 교환 패킷을 취한다. 상기한 바와 같이, 하나의 URL을 다운로드하는데 상당량의 오버헤드(즉, 7개의 패킷)가 포함되어 있다. 페이지는 통상적으로 복수개의 URL로 구성된다.
접속 부하와 관련된 추가적인 문제점들은 하기와 같다.
서버에 도달하는 각 패킷은 서버의 CPU를 인터럽트하여 그 패킷을 네트워크 인터페이스 카드[NIC: Network Interface Card]로부터 서버의 메인 메모리내로 이동시킨다. 그 결과, 서버의 CPU에 생산성의 손실이 생긴다. 따라서, 서버측에서의 소중한 CPU 시간의 낭비를 피하는 방법이 요청되고 있다. 그 결과, 동일한 자원이 더 많은 URL(페이지) 요청을 처리하는데 공급될 수 있다. 따라서, 이것은 서버의 URL 처리 능력을 개선한다.
전술한 바와 같이, 접속을 달성하기 위해서는 세 개의 패킷이 필요하다. 또한, 접속 달성을 위해서는 CPU/메모리에 관련된 상당량의 서버 자원을 모두 다 써버린다. 서버측에서 접속을 달성하기 위해서, 패킷은 이더넷의 지정 정보를 처리하는 드라이버 계층에 의해 처리될 필요가 있다. 드라이버 계층은, 추가의 처리를 위해 이 패킷을 IP 계층에 전송한다. IP 계층에서는 모든 IP(인터넷 프로토콜) 관련 처리가 취급된다. 그 후, 이 패킷이 TCP(Transmission Control Protocol)에 관련된 정보를 처리하는 TCP 계층으로 전송된다. TCP 계층은 상당량의 서버 자원을 소모하여 접속 테이블 등을 생성한다. 따라서, 접속 처리를 피함으로써 상당량의 CPU/메모리 자원을 절약하는 방법이 요청된다.
웹 서버는 처리될 각 인입하는 접속에 대해 스레드(thread)를 생성할 필요가 있다. 접속 및 URL 요청이 처리된 후 스레드가 폐쇄된다. 스레드는 프로세스(process)의 한 유형인 경량 프로세스[LWP: Light Weight Process]이다. 비록 스레드가 효과적이긴 하지만, 스레드의 생성과 파기에는 상당량의 CPU 및 메모리 자원이 요구된다. 따라서, 스레드 생성을 피하기 위해서는 상당량의 서버 자원이 보존될 수 있어, 다시 한번, 보다 많은 웹 요청을 처리하기 위해 사용될 수 있다.
하나 이상의 CPU를 갖는 서버는 SMP(Symmetric MultiProcessing) 시스템이라고 불리우고, 이들 시스템은 공통의 메모리 아키텍쳐를 갖는다. 또한, SMP 시스템은 복수개의 CPU를 관리하는 단일 운영 체제[OS: Operating System]를 갖는다. 단일 OS는 단일 네트워킹/프로토콜 스택을 암시한다. 복수개의 CPU가 커넬 프로토콜 스택(kernel protocol stack)을 갖는 데이터 구조에 액세스하는 경우, 하나 이상의 CPU가 그 데이터 구조 상에서 판독/기입할 수 있기 때문에 데이터 손실(data corruption)을 방지하는 것이 중요하다. 보호 코드는 SMP 시스템 상에 추가적인 패킷당 오버헤드를 부과한다.
최종적으로, 개개의 서버의 처리량은 제한적이다. 따라서, 고용량의 인터넷 서비스를 제공하기를 원하는 데이터 제공자는 복수개의 서버 상에 콘텐츠를 복사해 놓고 이들 서버들 사이에서 요청들을 분배하는 방식을 자주 이용하고 있다. 이러한 접근 방식은 중복 서버(replica server)들 각각에 대해 콘텐츠를 복사할 것을 요구한다. 심지어 빈번하게 액세스되지 않는 콘텐츠에 대해서도 중복된 복사가 이루어진다. 이것은 서버 자원의 낭비를 초래한다.
본 발명은 네트워크 클라이언트-서버 멀티플렉싱을 위한 시스템, 방법 및 컴퓨터 프로그램 제품을 제공한다. 바람직한 실시예에서, 본 발명은, 복수의 클라이언트가 접속되어 있는 인터넷에 복수의 서버를 접속시키는 인터페이스부 내에서 구현된다.
본 발명의 일 국면에 따르면, 본 발명의 방법은 클라이언트와 인터페이스부 사이의 접속을 개방하는 단계와; 인터페이스부와 서버 사이에 개방된 여분의 접속이 없는 경우, 인터페이스부와 서버 사이의 접속을 개방하는 단계와; 클라이언트가 이 접속을 통해 서버 상의 정보에 액세스할 수 있도록 허용하는 단계와; 인터페이스부와 서버 사이의 접속들을 개방하고 있는 한편 클라이언트와 인터페이스부 사이의 접속을 폐쇄하는 단계를 구비한다.
본 발명의 다른 국면에 따르면, 본 발명의 방법은 네트워크 어드레스 및 경로명을 사용하여 클라이언트로부터 요청을 수신하여 데이터를 검색하는 단계와; 경로명, 서버의 부하 및 서버의 상태 중 적어도 하나를 구비하는 사전정의된 정책의 함수로서 데이터를 저장하는 서버를 선택하는 단계와; 이전에 개방된 접속을 사용하여 서버로부터 데이터를 검색하는 단계와; 그 데이터를 클라이언트로 전송하는 단계를 구비한다.
본 발명의 하나의 잇점은 본 명세서에서 "접속 풀링(connection pooling)"이라고 칭하는 기술을 통하여 접속 부하에 대한 문제를 해결하는 것이다.
본 발명의 다른 잇점은 본 명세서에서 "접속 분배(connection distribution)"라고 칭하는 기술을 사용하여 내용 중복에 대한 문제를 해결하는 것이다.
본 발명의 또 다른 잇점은 본 명세서에서 "접속 멀티플렉싱(connection multiplexing)"이라고 칭하는 기술을 사용하여 서버 및 클라이언트로부터의 접속을 투명하게 이어준다는 것이다.
도 1은 인터넷에 접속되어 있는 복수의 클라이언트와 복수의 서버에 대한 네트워크를 도시하는 블럭도.
도 2는 본 발명의 바람직한 실시예에 따른 인터페이스부에 대한 네트워크 상태를 도시하는 블럭도.
도 3은 바람직한 실시예에 따른 본 발명의 접속 풀링 국면에 대한 동작을 도시하는 흐름도.
도 4는 클라이언트와 서버의 요청을 번역하여 접속을 멀티플렉싱하는 본 발명의 동작을 도시하는 흐름도.
도 5는 바람직한 실시예에 따른 본 발명의 접속 풀링의 국면을 도시하는 메 시지 흐름도.
도 6a 및 도 6b는 바람직한 실시예에 따른 도 5에 도시된 실시예에 있어서 본 발명에 의해 수행되는 확인 및 시퀀스 번호의 번역을 상세하게 도시하는 흐름도.
도 7은 바람직한 실시예에 따른 본 발명의 접속 분배의 특징에 대한 동작을 도시하는 흐름도.
도 8은 바람직한 실시예에 따른 본 발명의 접속 분배의 국면을 도시하는 메시지 흐름도.
도 9는 바람직한 실시예에 따른 도 8에 도시된 실시예에 있어서 본 발명에 의해 수행되는 확인 및 시퀀스 번호의 번역을 상세하게 도시하는 흐름도.
도 10은 본 발명이 구현될 수 있는 컴퓨터 시스템의 일 실시예를 도시하는 도면.
바람직한 실시예의 상세한 설명
본 발명의 특징들 및 잇점들은, 유사한 요소에는 유사한 참조 부호가 할당되어 있는 도면들과 연계한 이하의 상세한 설명을 통해 더욱 명백해질 것이다.
본 발명은 네트워크 클라이언트-서버 멀티플렉싱 멀티플렉싱을 위한 시스템, 방법, 및 컴퓨터 프로그램 제품에 관한 것이다.
도 2는 본 발명의 바람직한 실시예에 따른 인터페이스부(202)에 대한 네트워크 상태를 도시하는 도면이다. 바람직한 실시예에 있어서는, 인터페이스부는 서버 내부에 CPU를 구비한 지능형(intelligent) 네트워크 인터페이스 카드이다. 또한, 인터페이스부는 서버 외부에 설치하는 지능형 박스일 수 있는데, 이 경우, 인터페이스부는 하나 이상의 서버를 지원할 수 있다. 또한, 인터페이스부(202)는 부하 조정기(load balancer)일 수 있다. 밴드폭 관리기, 방화벽, 라우터, 스위치, 컴퓨터 시스템 또는 소정의 다른 네트워크 장치가 클라이언트와 서버 사이에 위치한다.
도 2를 참조하면, 복수의 클라이언트(C1, C2 및 C3)가 인터넷에 결합되고 복수의 서버(S1, S2 및 S3)가 인터페이스부(202)에 의해 인터넷에 결합된다. 서버(S1, S2 및 S3)를 집합적으로 "서버 팜(server farm)"이라고 칭한다. 서버 팜에 의한 모든 인터넷 트래픽이 인터페이스부(202)를 통과한다. 본 발명이 인터넷과 관련하여 기술되고 있지만, 다른 유형의 네트워크에서 역시 적용됨을 당업자라면 이해할 것이다.
본 발명의 일 국면에 따르면, 인터페이스부(202)는, 각 서버와의 하나 이상의 접속을 개방하고 클라이언트가 인터넷을 통하여 데이터에 반복적으로 액세스할 수 있도록 이들 접속을 유지함으로써, 클라이언트에 대한 접속을 반복적으로 개방 및 폐쇄함으로써 야기되는 다량의 처리 부하를 받는 서버(S1, S2 및 S3)에 대한 부하를 경감시킨다. 이하 이 기술은 "접속 풀링(connection pooling)"이라고 칭한다.
도 3은 바람직한 실시예에 따른 본 발명의 접속 풀링에 대한 동작을 도시하는 흐름도이다. 인터페이스부(202)가 보조하는 서버 팜 내의 서버들 중 하나에 클라이언트가 액세스를 요청하는 경우 이 처리가 개시된다. 단계(302)에 도시된 바와 같이, 인터페이스부와의 접속을 요청한 클라이언트 사이에서 접속이 개방되고, 인터페이스부(202)는 클라이언트의 요청을 수신하여 서버에 액세스한다. 단계(304)에 도시된 바와 같이, 인터페이스부(202)는 요청된 서버의 식별 정보(identity)를 판정한다. 일 실시예에 있어서는, 이 판정은 클라이언트 요청에 의해 지정되는 목적지 네트워크 어드레스를 검토함으로써 달성된다. 다른 실시예에 있어서는, 이 판정은 클라이언트 요청에 의해 지정되는 네트워크 어드레스 및 경로명을 검사함으로써 달성된다. 클라이언트 요청이 향해야 하는 서버의 식별 정보를 판정한 후, 단계(306)에 도시된 바와 같이 인터페이스부(202)는 이미 개방되어 있는 서버에 대해 접속의 여분이 있는지(즉, 미사용의 접속)의 여부를 판정한다. 개방되어 있는 서버에 대해 접속이 여분이 있는 경우 단계(310)로 진행된다. 개방되어 있는 서버에 대해 접속이 여분이 없는 경우 단계(308)에 도시된 바와 같이 인터페이스부(202)는 서버에 대한 접속을 개방한다. 그 후, 단계(310)에 도시되고 이하에 도 4에 대해서 보다 전반적으로 기술하는 바와 같이, 인터페이스부(202)는 클라이언트의 요청을 번역하고, 번역된 클라이언트의 요청을 서버로 전송한다. 단계(314)에 도시되고 이하에 더 기술되는 바와 같이, 서버의 응답이 번역되어 요청하는 클라이언트로 전송된다. 최종적으로, 단계(316)에 도시된 바와 같이 인터페이스부(202)는 클라이언트와의 접속을 폐쇄한다. 그러나, 인터페이스부(202)와 서버 사이의 접속이 단절된 것은 아니다. 서버와의 접속을 개방하고 있는 동안, 필요한 만큼 클라이언트와의 접속을 개방 및 폐쇄함으로써, 인터페이스부(202)는 인터넷을 통하여 지원되는 클라이언트에 관련된 거의 모든 접속 부하에 대한 서버의 문제를 없앤다.
도 4는 단계(310 및 314)에 도시된 바와 같이 클라이언트 및 서버의 요청을 번역하여 접속을 멀티플렉싱하는 본 발명의 동작을 도시하는 흐름도이다. 바람직한 실시예에 있어서는, 메시지 트래픽은 TCP/IP 패킷 형태이고, 프로토콜 수트(protocol suite)는 종래 기술에서 잘 알려져 있는 것이다. TCP/IP 프로토콜 수트는 텔렛(Telnet), 파일 전송 프로토콜[FTP: File Transfer Protocol], 전자 메일(e-mail) 및 하이퍼텍스트 전송 프로토콜[HTTP: Hyper-Text Transfer Protocol]과 같은 많은 애플리케이션을 지원한다. 그러나, 당업자가 본 명세서를 읽은 후 당업자에게 명백한 바와 같이, 본 발명의 개념은 또 다른 TCP/IP 애플리케이션에 동일하게 잘 적용된다.
각 TCP 패킷은 TCP 헤더 및 IP 헤더를 구비한다. IP 헤더는 32 비트의 소스 IP 어드레스 및 32 비트의 목적지 IP 어드레스를 구비한다. TCP 헤더는 16 비트의 소스 포트 번호 및 16 비트의 목적지 포트 번호를 구비한다. 소스 IP 어드레스 및 포트 번호는 집합적으로 소스 네트워크 어드레스라고 칭해지며, 패킷의 소스 인터페이스를 고유하게 식별한다. 마찬가지로, 목적지 IP 어드레스 및 포트 번호는 집합적으로 목적지 네트워크 어드레스라고 칭해지며, 패킷에 대한 목적지 인터페이스를 고유하게 식별한다. 패킷의 소스 및 목적지 네트워크 어드레스는 접속을 고유하게 식별한다. 또한 TCP 헤더는 32 비트의 시퀀스 번호(sequence number) 및 32 비트의 확인 번호(acknowledgement number)를 구비한다.
패킷의 TCP부는 세그먼트(segment)라고 칭한다. 세그먼트는 TCP 헤더 및 데이터를 구비한다. 시퀀스 번호는, 전송측 TCP로부터 수신측 TCP로의 데이터 문자열 내의 바이트를 식별한다. 세그먼트 내의 데이터의 첫번째 바이트가 수신측 TCP를 나타낸다. 교환되는 모든 바이트는 번호가 매겨지기 때문에, 확인 번호는, 그 확인의 전송자가 수신할 것으로 예측되는 다음 시퀀스 번호를 포함한다. 따라서, 이것은, 마지막으로 성공적으로 수신된 데이터 바이트의 시퀀스 번호 + 1이다. 체크섬(checksum)은 TCP 세그먼트, 즉 TCP 헤더 및 TCP 데이터를 커버한다. 이것은 송신자에 의해 계산되어 저장된 후, 수신자에 의해 검증되어야 하는 강제 필드(mandatory field)이다.
클라이언트로부터 의도된 서버로의 인바운드 패킷(inbound packet) 또는 서버로부터 클라이언트로의 아웃바운드 패킷(outbound packet)을 라우팅하기 위해서는, 인터페이스부(202)는 "네트워크 어드레스 번역(network address translation)"이라 알려져 있는 프로세스를 채택한다. 네트워크 어드레스 번역은 종래 기술에서 잘 알려져 있고, URL http://www.safety.net/RFC1631.txt.에서 발견할 수 있는 코멘트 요청[RFC: request for comments] 1631에 의해 명시된다.
그러나, 클라이언트와 서버 사이의 접속을 이음새없이 잇기(splice) 위해서는, 또한 본 발명은 이하에 "접속 멀티플렉싱(connection multiplexing)"이라고 칭하는 새로운 번역 기술을 채택한다. 이 기술에 따르면, 본 발명은 TCP 프로토콜 레벨에서 패킷의 시퀀스 번호 및 확인 번호를 수정함으로써 패킷을 번역한다. 이 기술의 확실한 잇점은 애플리케이션 계층이 필요없다는 것이다.
도 4를 참조하면, 패킷의 네트워크 어드레스는 단계(402)에 도시된 바와 같이 번역된다. 인바운드 패킷(즉, 클라이언트로부터 수신되는 패킷)의 경우에 있어서는, 패킷의 소스 네트워크 어드레스가 인터페이스부의 출력 포트의 어드레스로 변경되고, 목적지 네트워크 어드레스가 의도된 서버의 어드레스로 변경된다. 아웃바운드 패킷(즉, 서버로부터 수신되는 패킷)의 경우에 있어서는, 소스 네트워크 어드레스가 서버의 어드레스로부터 인터페이스부의 출력 포트의 어드레스로 변경되고, 목적지 어드레스가 인터페이스부의 어드레스로부터 요청하는 클라이언트의 어드레스로 변경된다. 또한 단계(404 및 406)에 도시되고 이하에 기술되는 바와 같이 패킷의 시퀀스 번호 및 확인 번호가 번역된다. 최종적으로, 단계(408)에 도시된 바와 같이 패킷의 체크섬이 이들 번역을 설명하기 위해 다시 계산된다.
도 5는 바람직한 실시예에 따른 본 발명의 접속 풀링에 대한 국면을 도시하는 메시지 흐름도이다. 도 5는 1개의 2개의 클라이언트(C1 및 C2)를 서버(S)에 접속하는 인터페이스부(202)를 도시한다. 우선, 흐름(502)으로 도시된 바와 같이 인터페이스부(202)는 클라이언트(C1)가 제공하는 네트워크 어드레스 1을 사용하여 클라이언트(C1)와의 접속을 개방한다. TCP/IP 프로토콜이 다단 핸드세이크(multi-stage handshake)를 채택하여 접속을 개방하기 때문에, 흐름선(502)이 양방향 흐름으로서 도시된다.
일단 접속이 개방되면, 흐름선(504)으로 도시된 바와 같이 인터페이스부(202)가 클라이언트(C1)로부터 경로명 /sales/forecast.html을 명시하는 GET 요청을 수신한다. 인터페이스부(202)와 서버(S) 사이에 개방된 여분의 접속이 없기 때문에, 인터페이스부(202)가 서버(S)와의 접속을 개방한다. 흐름선(506)으로 도시된 바와 같이, 인터페이스부(202)는, 이 요청을, 서버(S)를 명시하는 네트워크 어드레스 2에 매핑한다. 또한, 흐름선(508)으로 도시된 바와 같이 인터페이스부(202)는 그 GET 요청을 그 서버로 전송한다. 흐름선(510)으로 도시된 바와 같이, 서버(S)는 요청된 웹 페이지로 응답한다. 흐름선(512)으로 도시된 바와 같이, 인터페이스부(202)는 그 웹 페이지를 클라이언트(C1)에게 포워딩한다. 최종적으로, 흐름선(514)으로 도시된 바와 같이, 클라이언트(C1)와 인터페이스부(202) 사이의 접속이 폐쇄된다. TCP/IP 프로토콜에 따르면, 네트워크가 폐쇄되면 접속이 다단 프로세스(multi-stage process)를 포함할 수 있다. 따라서, 흐름선(514)은 양방향으로 도시되어 있다. 여기서 중요한 점은, 인터페이스부(202)는 서버(S)와의 접속을 폐쇄하지 않고, 오히려, 추가적인 데이터 흐름을 수용하기 위해 그 접속을 개방시켜 둔다는 것이다.
그 다음, 흐름선(516)으로 도시된 바와 같이 클라이언트(C2)가 제공하는 네트워크 어드레스 1을 사용하여 인터페이스부(202)와 클라이언트(C2) 사이의 접속이 개방된다. 그 다음, 흐름선(518)으로 도시된 바와 같이 인터페이스부(202)는 클라이언트(C2)로부터 웹 페이지 /sales/forecast.html을 명시하는 GET 요청을 수신한다. 인터페이스부(202)와 서버(S) 사이에 여분의 접속이 이미 개방되어 있기 때문에, 인터페이스부(202)가 추가적인 접속을 개방하는 처리 부하로 서버(S)의 부담을 가중시킬 필요가 없다. 인터페이스부(202)는 여분의 개방 접속을 사용할 뿐이다. 흐름선(520)으로 도시된 바와 같이, 인터페이스부(202)는 GET 요청을 서버(S)에 매핑하고, 서버(S)로 그 GET 요청을 포워딩한다. 흐름선(522)으로 도시된 바와 같이 인터페이스부(202)는 서버(S)로부터 응답을 수신하고, 흐름선(524)으로 도시된 바와 같이 서버(S)로부터 수신한 응답을 클라이언트(C2)로 포워딩한다. 최종적으로, 흐름선(526)으로 도시된 바와 같이 인터페이스부(202)는 클라이언트(C2)와의 접속을 폐쇄한다. 다시 한번, 인터페이스부(202)는 서버(S)와의 접속을 폐쇄하지 않고, 그 대신, 추가적인 데이터 흐름을 수용하기 위해 그 접속을 개방시켜 둔다.
흐름선(524)으로 도시된 바와 같이, 인터페이스부(202)가 클라이언트(C2)와의 접속을 폐쇄하게 되는 복수개의 시나리오가 있다. 예를 들어, 일단 클라이언트가 모든 요청된 데이터를 검색하고 나면 발생하는 FIN(종결) 명령을 클라이언트가 개시할 수 있다. 또한 클라이언트는 RST(리셋) 명령을 개시할 수 있다. 또한, 인터페이스부(202)와 클라이언트 사이의 접속을 폐쇄하는 것에 추가하여, RST 명령의 결과, 서버측의 접속을 순조롭게 유지하도록 복수의 정리작업(housekeeping)이 수행된다. 특히, TCP 프로토콜은, RST 명령이 올바른 SEQ(시퀀스) 번호를 가져 서버가 세그먼트를 수신하도록 보장한다. 그러나, RST 명령이 올바른 ACK(확인) 번호를 갖는다는 보장은 없다. 이 시나리오를 처리하기 위해서는, 인터페이스부(202)는 서버에 의해 전송되는 데이터의 바이트 및 클라이언트에 의해 확인되는 바이트를 계속 추적한다. 클라이언트가 서버의 모든 데이터를 아직 확인하지 않았다면, 인터페이스부(202)는 확인되지 않은 바이트를 계산하여, ACK 신호를 서버로 전송한다. 또한, 소정의 미결된 서버의 데이터가 방출되도록 허용하기 위해, 타임아웃 큐(timeout queue) 상에 서버측의 PCB가 위치할 수 있다.
또한, 비록 도 5에 도시하지는 않았지만, 또한 서버는 서버 자체와 인터페이스부(202) 사이의 접속을 폐쇄할 수 있다. 서버는 FIN 명령을 인터페이스부(202)로 전송할 것이다. 이 경우에 있어서는, 서버와 인터페이스부(202) 사이의 접속 및 인터페이스부(202)와 클라이언트 사이의 접속 양쪽 모두가 폐쇄된다.
본 발명의 또 다른 국면은 서버가 접속을 폐쇄하는 경우를 최소화함으로써 서버로부터 접속 처리의 오프로드(offload)를 최소화하는 것이다. 이하 기술하는 세 가지 경우가 있다.
(1) 프로토콜 버젼 HTTP/1.1이 사용된다. 이 경우에 있어서는, 명백하게 접속 유지(Keep-Alive header)가 필요치 않다. 초기화함으로써, 서버가 접속 개방을 유지한다. 클라이언트가 접속을 폐쇄한다. 본 발명은 서버측의 접속을 재사용함으로써 서버를 오프로드한다.
(2) 프로토콜 HTTP/1.0이 사용되고, 클라이언트가 "접속:유지(keep alive)" 헤더를 제공한다. 이 경우에 있어서는, 서버가 접속을 개방을 유지한다. 클라이언트가 접속을 폐쇄한다. 본 발명은 서버측의 접속을 재사용함으로써 서버를 오프로드한다.
(3) 프로토콜 HTTP/1.0이 사용되고, 클라이언트가 "접속:유지" 헤더를 제공하지 않는다. 이 경우에 있어서는, 하나의 GET 요청을 전체적으로 만족시킨 후 서버가 접속을 (본 발명을 사용하는 일없이) 정상적으로 폐쇄한다. 각 서버가 요청한 후 서버가 접속을 폐쇄하면, 서버는 인터페이스부(202)가 서버측의 접속을 재사용할 기회를 거부한다. 수많은 인터넷이 "접속:유지"를 사용지 않고 여전히 HTTP/1.0을 사용한다. 그 결과, 본 발명은 본 명세서에 있어서 서버측의 접속의 재사용 및 중요한 경우를 허용할 수 있다. 인터페이스부(202)는 GET 패킷을 검사하여 이 상태를 검출한다. 이 경우가 검출되는 경우, 인터페이스부(202)는 "접속:유지"를 GET 패킷내로 삽입한다. 이 단계가 클라이언트에게는 보이지 않게 이루어지기 때문에, 인터페이스부(202)가 서버측의 접속 상에서 "더해진 바이트(Bytes Added)"의 수를 지속적으로 추적해야 한다. 시퀀스 번호가 제1 바이트의 시퀀스 번호이기 때문에, "더해진 바이트"가 GET 패킷에 있어서의 시퀀스 번호에 영향을 미치지 않는다. 그러나, 인터페이스부(202)가 "더해진 바이트"를 클라이언트로부터 서버로의 차후의 패킷에 대한 시퀀스 번호에 더해야 한다. 결과적으로, 서버가 추가 바이트를 확인하지만, 이들 바이트가 더해지는 것을 알지 못하는 클라이언트로 확인을 전송하기 전, 인터페이스부는 이들 추가 바이트들을 빼야 한다.
상기한 바와 같이, 접속을 멀티플렉싱하는 것은 시퀀스 및 확인 번호를 조작함으로써 달성된다. 인터페이스부(202)가 수신한 세그먼트의 시퀀스 및 확인 번호는 수정되어 바이트 수신자가 기대하는 값으로 매핑된다. 클라이언트에 대해서는 데이터가 서버로부터 수신되도록 나타나고, 역으로 서버에 대해서는 데이터가 클라이언트로부터 수신되도록 나타난다. 예를 들어, "유입(Inflow)"이 인터페이스부(202)가 수신하는 세그먼트를 나타내고, "유출(Outflow)"이 대응하는 아웃바운드 세그먼트를 나타내며, 시퀀스 및 확인 번호는 다음 수학식 1 및 수학식 2에 따라 변경된다.
유출 시퀀스 번호 = 유입 시퀀스 번호 - 유입 개시 시퀀스 번호
+ 유출 개시 시퀀스 번호
유출 확인 번호 = 유입 확인 번호 - 유입 개시 확인 번호
+ 유출 개시 확인 번호
HTTP/1.0 패킷에 대해 "접속:유지" 헤더의 부가를 어드레싱하기 위해서는, 인터페이스부(202)가 접속의 적절한 한쪽(이 경우에 있어서 서버측) 상에서 "더해진 바이트"의 추적을 유지한다. 시퀀스 번호 및 확인 번호의 수학식 1 및 수학식 2가 다음과 같이 수학식 3 및 수학식 4로 변경된다.
유출 시퀀스 번호 = 유입 시퀀스 번호 - 유입 개시 시퀀스 번호
+ 유출 개시 시퀀스 번호 + 더해진 유출 바이트
유출 확인 번호 = 유입 확인 번호 - 유입 개시 확인 번호
+ 유출 개시 확인 번호 - 더해진 유입 바이트
이들 수학식을 사용하여 달성된 번역의 지정 실시예가 이하에 기술된다.
도 6a 및 도 6b는 바람직한 실시예에 따른 도 5에 도시된 실시예에 있어서 본 발명에 의해 수행되는 확인 및 시퀀스 번호의 번역을 상세하게 도시하는 흐름도이다. 도 6a 및 도 6b의 각 흐름에 대한 라벨은 T:S,A(L) 형태로, 여기서 T는 TCP 세그먼트 타입을 나타내고, S는 시퀀스 번호이며, A는 확인 번호이고, L은 길이 파라미터이다. 길이 파라미터는 TCP 세그먼트 내의 데이터의 바이트수를 말한다. 도 6a의 흐름은 도 5의 흐름(502 내지 514)에 대응한다.
흐름(602A, 602B 및 602C)은 흐름(502)에 대응하고, 클라이언트(C1)와 인터페이스부(202) 사이의 접속을 개방하는 하나의 방법을 나타낸다. 각각의 흐름은 TCP 세그먼트를 나타낸다. TCP 세그먼트(602A)에 있어서, TCP 헤더 내의 SYN 플래그가 설정되어, 클라이언트(C1)로부터의 새로운 접속 요청을 가리킨다. 클라이언트(C1)가 개시 시퀀스 번호 2000 및 확인 번호 2000을 확립한다. 흐름(602B)으로 도시된 바와 같이, 인터페이스부(202)가 개시 시퀀스 번호 4000을 명시하는 SYN ACK 세그먼트로 응답하고, 확인 번호를 2001까지 증가시킨다. 네트워크 내의 각 엔티티(예컨대, 클라이언트, 서버 및 인터페이스부)는, 종래 기술에서 잘 알려져 있는 바와 같이 그 자체의 고유한 시퀀스 번호 및/또는 확인 번호를 설정한다. 흐름(602C)으로 도시된 바와 같이, 클라이언트(C1)은 시퀀스 번호 2001을 명시하는 ACK 세그먼트로 응답하고, 확인 번호를 4001까지 증가시킨다. 그 후 흐름(604)으로 도시된 바와 같이, 클라이언트(C1)가 49 바이트의 길이를 명시하는 GET 세그먼트를 전송한다.
흐름(606A)으로 도시된 바와 같이, 인터페이스부(202)는 서버(S)와의 사이에 여분의 개방 접속이 존재하지 않음을 판정함에 따라, 1950의 개시 시퀀스 번호를 명시하는 SYN 세그먼트를 서버(S)로 전송한다. 흐름(606B)으로 도시된 바와 같이, 서버(S)는 개시 시퀀스 번호 6000을 명시하는 SYN ACK 세그먼트로 응답하고, 확인 번호를 1951까지 증가시킨다. 흐름(606C)으로 도시된 바와 같이, 인터페이스부(202)가 ACK 세그먼트를 응답한다. 흐름선(608)으로 도시된 바와 같이, 인터페이스부(202)는, 상기한 번역 수학식들에 따라 시퀀스 및 확인 번호를 수정한 후, 클라이언트(C1)로부터 서버(S)로 GET 세그먼트를 포워딩한다.
흐름(610)으로 도시된 바와 같이, 서버(S)가 시퀀스 번호 6001, 확인 번호 2000, 및 길이 999를 명시하는 요청된 데이터로 응답한다. 흐름선(612A)으로 도시된 바와 같이, 인터페이스부(202)는 RESP 세그먼트를 수신하고, 시퀀스 및 확인 번호를 번역하여, RESP 세그먼트를 클라이언트(C1)로 포워딩한다. 흐름(612B)으로 도시된 바와 같이, 클라이언트(C1)는 RESP ACK 세그먼트를 응답한다. 흐름(612C)으로 도시된 바와 같이, 인터페이스부(202)는 확인 및 시퀀스 번호를 수정하여, RESP ACK 세그먼트를 서버(S)로 포워딩한다.
흐름(614A, 614B, 614C 및 614D)으로 도시된 바와 같이, 그 후 클라이언트(C1)와 인터페이스부(202) 사이의 접속이 폐쇄된다. 그러나, 여기서 중요한 점은 인터페이스부(202)가 서버(S)와의 접속을 유지하고 있다는 점에 주목하자.
도 6b는 도 6a에 도시된 실시예의 연속적인 도면이다. 도 6b에 도시된 흐름은 도 5에 도시된 흐름(516 내지 526)에 대응한다. 흐름(616A, 616B 및 616C)은 흐름(516)에 대응하고, 클라이언트(C2)와 인터페이스부(202) 사이의 접속을 개방하는 하나의 방법을 나타낸다. TCP 세그먼터(618A)에 있어서, TCP 헤더 내의 SYN 플래그가 설정(set)되어, 클라이언트(C2)로부터의 새로운 접속 요청을 가리킨다. 클라이언트(C2)는 개시 시퀀스 번호 999 및 확인 번호 999를 확립했다. 인터페이스부(202)는 개시 시퀀스 번호 4999를 명시하는 SYN ACK 세그먼트로 응답하고, 확인 번호를 1000까지 증가(increment)시킨다. 흐름(616C)으로 도시된 바와 같이, 클라이언트(C2)는 시퀀스 번호 1000을 명시하는 ACK 세그먼트로 응답하고, 확인 번호를 5000까지 증가시킨다. 흐름(618)으로 도시된 바와 같이, 그 다음, 클라이언트(C2)는 50 바이트의 길이를 명시하는 GET 세그먼트를 전송한다.
인터페이스부(202)가 서버(S)와 여분의 개방된 접속이 존재는지를 판정하고, 존재한다면, 그 접속을 사용한다. 서버(S)와 새로운 접속을 개방할 필요는 없다. 인터페이스부가 이전에 개방된 서버(S)와의 접속을 사용하기 때문에, 인터페이스부(202)는 그 이전에 개방된 접속 상에서 이전의 교환 동안에 확립된 시퀀스 및 확인 번호에 따라 GET 세그먼트의 시퀀스 및 확인 번호를 번역한다. 이 실시예에 있어서, 인터페이스부(202)는 흐름(606)에서 확립된 개시 시퀀스 및 확인 번호를 사용하고, 가장 최근의 흐름[즉, 흐름(612C)]에서 사용한 시퀀스 및 확인 번호로 재개한다. 이에 따라, 흐름선(620)으로 도시된 바와 같이, 인터페이스부(202)는, 시퀀스 번호 2000, 확인 번호 7000, 및 길이 50과 함께 클라이언트(C2)로부터의 GET 세그먼트를 서버(S)로 포워딩한다.
흐름(622)으로 도시된 바와 같이, 서버(S)는, 시퀀스 번호 7000, 확인 번호 2050, 및 길이 500을 명시하는 요청된 데이터로 응답한다. 흐름선(624A)으로 도시된 바와 같이, 인터페이스부(202)는 RESP 세그먼트를 수신하고, 시퀀스 및 확인 번호를 번역하여, RESP 세그먼트를 클라이언트(C2)로 포워딩한다. 흐름(624B)으로 도시된 바와 같이, 클라이언트(C2)는 RESP ACK 세그먼트를 응답한다. 흐름(624C)으로 도시된 바와 같이, 인터페이스부(202)는 확인 및 시퀀스 번호를 수정하여, RESP ACK 세그먼트를 서버(S)로 포워딩한다.
흐름(624A, 624B, 624C 및 624D)으로 도시된 바와 같이, 그 후 클라이언트(C2)와 인터페이스부(202) 사이의 접속이 폐쇄된다. 여기서 중요한 점은, 인터페이스부(202)가 다시 서버(S)와의 접속을 유지한다는 것이다.
도 7은 바람직한 실시예에 따른 본 발명의 접속 분배 특징에 대한 동작을 도시하는 흐름도이다. 이 특징에 따르면, 인터페이스부(202)는 복수의 서버와의 접속을 유지하고, 클라이언트의 요청들을, 이들 클라이언트의 요청 내에 명시된 경로명에 기초하여 이들 서버들로 라우팅(routing)한다. 우선, 단계(702)에 도시된 바와 같이 인터페이스부(202)가 서버와의 접속을 개방한다. 그 다음, 클라이언트의 요청에 응답하여, 인터페이부(202)는, 단계(704)에 도시된 바와 같이, 클라이언트로의 접속을 개방하고, 경로명을 사용하여 데이터를 검색하라는 클라이언트의 요청을 수신한다. 단계(706)에 도시된 바와 같이, 인터페이스부(202)는 그 경로명이 명시하는 내용(content)을 호스팅하고 있는 서버를 선택한다. 대안적인 실시예에 있어서, 인터페이스부(202)는 서버의 부하 및 서버의 상태와 같은 다른 사전정의된 정책을 참조하여 적절한 서버를 선택한다. 인터페이스부(202)는 자신이 관여하는 서버의 데이터베이스 및 서버 팜을 관리 및 유지한다. 무엇보다도, 이 데이터베이스 내의 정보로는, 인터페이스부(202)가 인입하는 패킷을 올바른 서버로 향하도록 시키는 현재의 활성화된 정책들 및 규칙들이 포함된다. 네트워크 조건 및 희망하는 서비스에 따라, 이들 정책 및 규칙이 매우 신속하게 변경될 수 있다.
단계(708)에 도시된 바와 같이, 그 다음, 인터페이스부(202)는 그 요청을 번역하여, 번역된 요청을 선택된 서버로 전송한다. 이 번역은 상기 도 4와 관련하여 일반적으로 기술되고, 이하에서 보다 상세히 기술된다.
단계(710)에 도시된 바와 같이, 인터페이스부는 서버로부터의 응답을 수신한다. 단계(712)에 도시된 바와 같이, 그 후 인터페이스부(202)는 그 응답을 번역하여, 그 번역된 응답을 클라이언트에 전송한다. 단계(708)에서와 같이, 단계(712)의 번역이 이하에 상세히 기술된다. 최종적으로, 단계(714)에 도시된 바와 같이 인터페이스부(202)는 클라이언트와의 접속을 폐쇄한다.
도 8은 바람직한 실시예에 따른 본 발명의 접속 분배 국면을 도시하는 메시지 흐름도이다. 도 8은 클라이언트(C2)를 2개의 서버(S1 및 S2)에 접속하는 인터페이스부(202)를 도시한다. 이 예에서, 도 7의 단계(702)에 도시된 바와 같이, 서버(S1 및 S2)와 접속은 이전에 개방된 것으로 가정한다.
우선, 인터페이스부(202)는, 흐름(802)로 도시한 바와 같이, 클라이언트(C2)가 제공하는 네트워크 어드레스 1을 사용하여 클라이언트(C2)와의 접속을 개방한다. 흐름선(804)으로 도시된 바와 같이, 일단 접속이 개방되면 인터페이스부(202)는 클라이언트(C1)로부터 경로명 /sales/forecast.html을 명시하는 GET 요청을 수신한다. 인터페이스부(202)와 서버(S1) 사이에 여분의 접속이 개방되어 있기 때문에, 인터페이스부(202)는 서버(S1)와의 추가적인 접속을 개방하지 않는다.
인터페이스부(202)는 그 경로명을 사용하여 상기 GET 요청을 서버(S2)에 매핑한다. 예를 들어, 인터페이스부(202)는, 서버 팜 내의 각각의 경로명을, 대응하는 웹 페이지를 포함하는 서버에 매핑하는 테이블을 포함할 수 있다. 흐름선(806)으로 도시된 바와 같이, 인터페이스부(202)는 그 GET 요청을 서버(S1)로 포워딩한다. 흐름선(808)으로 도시된 바와 같이, 서버(S1)는 요청된 웹 사이트로 응답한다. 흐름선(810)으로 도시된 바와 같이, 인터페이스부(202)는 그 요청된 웹 사이트를 클라이언트(C2)로 포워딩한다. 본 발명의 접속 풀링 특징에 따르면, 인터페이스부(202)는 서버(S1)와의 접속을 폐쇄하는 것이 아니라, 추가의 데이터 흐름을 수용하기 위해 서버(S1)와의 접속을 개방된 상태로 유지한다.
그 다음, 흐름(812)으로 도시된 바와 같이, 추가적인 GET 요청이 클라이언트(C2)로부터 수신된다. 이 실시예에서는, 연속된 GET 요청들 사이에서 인터페이스부(202)와 클라이언트(C2) 사이의 접속이 폐쇄되었는지의 여부는 중요하지 않다. 또한, 이 실시예에서는 이 GET 요청이 이전의 GET 요청과 동일한 클라이언트로부터 발신되었는지의 여부도 역시 중요하지 않다. 중요한 것은, 비록 클라이언트로부터의 GET 요청이 이전의 GET 요청과 동일한 네트워크 어드레스(네트워크 어드레스 1)로 향하더라도, 이전의 요청과는 상이한 서버[서버(S2)]에 매핑된다는 것이다. 본 발명의 접속 멀티플렉싱 특징으로 인해, 이러한 방향변경(redirction)은 요청한 발신자에 인식되지 않는다(transparent).
인터페이스부(202)는 클라이언트(C2)로부터 그 GET 요청을 수신한다. GET 요청은 경로명 /products/new.html을 명시한다. 인터페이스부(202)는 이 경로명에 대응하는 웹 페이지가 서버(S2) 상에 존재하는지를 판정한다. 따라서, 비록 도 8에 도시된 GET 요청이 동일한 네트워크 어드레스를 명시하더라도, 이들의 경로명을 사용하여 상이한 서버에 매핑된다. 이 실시예는 본 발명의 "접속 분배" 국면을 도시한다.
인터페이스부(202)와 서버(S2) 사이에는 여분의 접속이 이미 개방되어 있기 때문에, 인터페이스부(202)가 추가적인 접속을 개방하는 처리 부하로 서버(S2)에 부담을 줄 필요가 없다. 인터페이스부(202)는, 여분의 개방된 접속을 사용할 뿐이다. 흐름선(816)으로 도시된 바와 같이, 인터페이스부(202)는 서버(S2)로부터 응답을 수신하여, 흐름선(818)으로 도시된 바와 같이, 수신된 응답을 클라이언트(C2)로 포워딩한다. 최종적으로, 흐름(820)으로 도시된 바와 같이, 인터페이스부(202)는 클라이언트(C2)와의 접속을 폐쇄한다. 다시 한번, 인터페이스부(202)는 서버(S2)와의 접속을 폐쇄하지는 않는다. 그 대신, 인터페이스부(202)는 추가적인 데이터 흐름을 수용하기 위해 접속을 개방해 둔다.
도 9는 바람직한 실시예에 따른 도 8에 도시된 실시예에 있어서 본 발명에 의해 수행되는 확인 및 시퀀스 번호의 번역을 상세하게 도시하는 흐름도이다. 도 9에 도시된 흐름은 도 8에 도시된 흐름(802 내지 820)에 대응한다.
흐름(902A, 902B 및 902C)은 흐름(802)에 대응하고, 클라이언트(C2)와 인터페이스부(202) 사이의 접속을 개방하는 한 방법을 나타낸다. 클라이언트(C2)는 개시 시퀀스 번호 999 및 확인 번호 999를 확립했다. 흐름(902B)으로 도시된 바와 같이, 인터페이스부(202)는 개시 시퀀스 번호 4999를 명시하는 SYN ACK 세그먼트로 응답하고, 확인 번호를 1000까지 증가시킨다. 흐름(902C)으로 도시된 바와 같이, 클라이언트(C2)는 시퀀스 번호 1000을 명시하는 ACK 세그먼트로 응답하고, 확인 번호를 5000까지 증가시킨다. 그 다음, 흐름(904)으로 도시된 바와 같이, 클라이언트(C2)는 50 바이트의 길이를 명시하는 GET 세그먼트를 전송한다.
서버와의 사이에 여분의 개방된 접속이 존재하기 때문에, 인터페이스부(202)는 새로운 접속을 개방하지 않고 그 접속을 사용하며, 그 접속을 통해 전송된 이전의 세그먼트로부터의 시퀀스 및 확인 번호를 사용하여 GET 세그먼트 내의 시퀀스 및 확인 번호를 수정한다. 이 실시예에서, 이들 파라미터는 각각 2000 및 7000이라고 가정한다. 이에 따라, 흐름선(906)으로 도시된 바와 같이, 인터페이스부(202)는 시퀀스 번호 2000, 확인 번호 7000, 및 길이 50을 사용하여 GET 세그먼트를 서버(S1)로 포워딩한다.
흐름(908)으로 도시된 바와 같이, 서버(S1)는 7000의 시퀀스 번호, 2050의 확인 번호 및 500의 길이를 명시하는 요청된 데이터로 응답한다. 흐름선(910A)으로 도시된 바와 같이, 인터페이스부(202)는 RESP 세그먼트를 수신하고, 시퀀스 및 확인 번호를 번역하여, RESP 세그먼트를 클라이언트(C2)로 포워딩한다. 흐름(910B)으로 도시된 바와 같이, 클라이언트(C2)는 RESP ACK 세그먼트로 응답한다. 흐름(910C)으로 도시된 바와 같이, 인터페이스부(202)는 확인 및 시퀀스 번호를 수정하여, RESP ACK 세그먼트를 서버(S1)로 포워딩한다.
그 후 인터페이스부(202)는 50 바이트의 길이를 명시하는 추가적인 GET 세그먼트를 클라이언트(C2)로부터 수신한다. 전술한 바와 같이, 인터페이스부(202)는 이 요청을 서버(S2)에 매핑한다. 서버와의 여분이 접속이 이미 개방되어 있기 때문에, 인터페이스부(202)는 그 접속을 사용하고, 그 접속을 통해 전송된 이전의 세그먼트로부터의 파라미터들을 사용하여 GET 세그먼트의 시퀀스 및 확인 파라미터를 번역한다. 이 실시예에 있어서는, 이들 파라미터가 각각 3000 및 4000이라고 가정한다. 따라서, 흐름선(914)으로 도시된 바와 같이, 인터페이스부(202)는 3000의 시퀀스 번호, 4000의 확인 번호 및 50의 길이를 사용하여 GET 세그먼트를 서버(S2)로 포워딩한다.
흐름(916)으로 도시된 바와 같이, 서버(S2)는 4000의 시퀀스 번호, 3050의 확인 번호 및 400의 길이를 명시하는 요청된 데이터로 응답한다. 흐름선(918A)으로 도시된 바와 같이, 인터페이스부(202)는 RESP 세그먼트를 수신하고, 시퀀스 및 확인 번호를 번역하여, RESP 세그먼트를 클라이언트(C2)로 포워딩한다. 흐름(918B)으로 도시된 바와 같이, 클라이언트(C2)는 RESP ACK 세그먼트를 응답한다. 흐름(918C)으로 도시된 바와 같이, 인터페이스부(202)는 확인 및 시퀀스 번호를 수정하여, RESP ACK 세그먼트를 서버(S2)로 포워딩한다. 최종적으로, 흐름(920A, 920B, 920C 및 920D)으로 도시된 바와 같이 인터페이스부(202)와 클라이언트(C2) 사이의 접속이 폐쇄된다.
본 발명은, 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합을 사용하여 구현될 수 있고, 컴퓨터 시스템 또는 다른 처리 시스템에서 구현될 수 있다. 사실, 일 실시예에 있어서 본 발명은 본 명세서에 기술된 기능을 수행할 수 있는 하나 이상의 컴퓨터 시스템에 관련된다. 도 10은 컴퓨터 시스템(1000)의 일 실시예를 도시한다. 컴퓨터 시스템(1000)은 프로세서(1004)와 같은 하나 이상의 프로세서를 구비한다. 프로세서(1004)는 통신 버스(1006)에 접속된다. 이 컴퓨터 시스템 실시예에 대해서 다양한 소프트웨어 실시예가 기술된다. 당업자에게는 본 명세서를 읽은 후 다른 컴퓨터 시스템 및/또는 컴퓨터 아키텍쳐를 사용하여 본 발명을 구현하는 방법이 명백할 것이다.
또한, 컴퓨터 시스템(1000)은 메인 메모리(1008), 바람직하게는 랜덤 액세스 메모리(RAM)를 구비하고, 제2 메모리(1010)를 구비할 수 있다. 제2 메모리(1010)는, 예를 들어 하드디스크 드라이브(1012) 및/또는 플로피디스크 드라이브, 자기 테이프 드라이브 및 광자기 드라이브 등과 같은 착탈가능한 저장 드라이브(1014)를 구비할 수 있다. 착탈가능한 저장 드라이브(1014)는 잘 알려진 방식으로 착탈가능한 저장부(1018)에 판독 및/또는 기록한다. 플로피 디스크, 자기 테이프 및 광자기 등과 같은 착탈가능한 저장부(1018)는 착탈가능한 저장 드라이브(1014)에 의해 판독 및 기록된다. 이해되는 바와 같이, 착탈가능한 저장부(1018)는 컴퓨터내에 저장된 컴퓨터 소프트웨어 및/또는 데이터를 갖는 컴퓨터 이용 가능 저장 매체를 구비한다.
또 다른 실시예에 있어서는, 제2 메모리(1010)는 컴퓨터 프로그램 또는 컴퓨터 시스템(1000)내로 로딩되는 다른 명령을 허용하는 다른 유사한 수단을 구비할 수 있다. 이러한 수단은, 예를 들어 착탈가능한 저장부(1022) 및 인터페이스(1020)를 구비할 수 있다. 이러한 수단의 예로서는 프로그램 카트리지 및 (비디오 게임 장치에서 발견되는 것과 같은) 카트리지 인터페이스, (EPROM 또는 PROM과 같은) 착탈가능한 메모리 칩 및 관련된 소켓, 및 다른 착탈가능한 저장부(1022) 및 소프트웨어와 착탈가능한 저장부(1018)로부터 컴퓨터 시스템(1000)으로 전송되는 데이터를 허용하는 인터페이스(1020)를 구비할 수 있다.
또한 컴퓨터 시스템(1000)은 통신 인터페이스(1024)를 구비할 수 있다. 통신 인터페이스(1024)는 소프트웨어 및 컴퓨터 시스템(1000)과 외부 장치 사이에서 전송되는 데이터를 허용한다. 통신 인터페이스(1024)의 예로서는 모뎀, [에더넷 카드(Ethernet card)와 같은] 네트워크 인터페이스, 통신 포트, PCMCIA 슬롯 및 카드 등을 구비할 수 있다. 소프트웨어 및 통신 인터페이스(1024)를 통해 전송되는 데이터는 신호 형태이고, 전자적(electonic), 전자기적(electromagnetic), 광(optical) 또는 통신 인터페이스(1024)에 의해 수신될 수 있는 다른 신호일 수 있다. 이들 신호(1026)는 채널(1028)을 통해 통신 인터페이스에 제공된다. 이 채널(1028)은 신호(1026)를 전송하고, 와이어 또는 케이블, 광섬유, 전화선, 셀룰러 폰 링크, RF 링크 및 다른 통신 채널을 사용하여 구현될 수 있다.
본 명세서에 있어서는, 용어 "컴퓨터 프로그램 매체" 및 "컴퓨터 사용 가능 매체"는, 일반적으로, 착탈가능한 저장 장치(1018), 하드디스크 드라이브(1012)에 설치된 하드디스크 및 신호(1026)와 같은 매체를 칭하기 위해 사용된다. 이들 컴퓨터 프로그램 제품은 소프트웨어를 컴퓨터 시스템(1000)에 제공하기 위한 수단이다.
컴퓨터 프로그램(또한, 컴퓨터 제어 논리라고도 칭함)은 메인 메모리 및/또는 제2 메모리(1010) 내에 저장된다. 또한, 컴퓨터 프로그램은 통신 인터페이스(1024)를 통해 수신될 수 있다. 컴퓨터 시스템이 동작 중일 때, 이러한 컴퓨터 프로그램은 컴퓨터 시스템(1000)이 본 명세서에 기술된 바와 같은 본 발명의 특징을 수행할 수 있게 한다. 특히, 컴퓨터 시스템이 동작 중일 때 컴퓨터 프로그램은 프로세서(1004)가 본 발명의 특징을 수행할 수 있게 한다. 따라서, 이러한 컴퓨터 프로그램은 컴퓨터 시스템(1000)에 대한 제어기를 나타낸다.
본 발명이 소프트웨어를 사용하여 구현되는 일 실시예에 있어서는, 소프트웨어가 컴퓨터 프로그램 제품에 저장될 수 있고, 이동 가능 저장 드라이브(1014), 하드 드라이브(1012) 또는 통신 인터페이스(1024)를 사용하여 컴퓨터 시스템(1000)내로 로딩될 수 있다. 프로세서(1004)에 의해 동작될 때, 제어 논리(소프트웨어)는 프로세서(1004)가 본 명세서에 기술된 바와 같은 본 발명의 기능을 수행하게 한다.
또 다른 실시예에 있어서는, 본 발명은 우선적으로, 예를 들어, 응용 주문형 집적 회로(ASIC)와 같은 하드웨어 구성 요소를 사용하여 하드웨어 내에서 구현된다. 본 명세서에 기술된 기능을 수행하기 위해 하드웨어 상태 기계(hardware state machine)의 구현은 당업자에게 명백할 것이다. 또 다른 실시예에 있어서는, 본 발명은 하드웨어 및 소프트웨어 양쪽 모두를 조합한 것을 사용하여 구현된다.
본 발명은, 접속 처리 오버헤드를 서버로부터 오프로드하기 위해 서버 팜 내의 서버들에 접속되는 인터페이스부(202)와 같은 인터페이스부 내에서 구현되는 경우를 기술한다. 그러나, 본 발명은 또한 클라이언트와 서버 사이의 네트워크 접속 경로 내에 있는 또 다른 종류의 장치 내에서도 적용될 수 있다. 네트워크 트래픽 흐름이 이러한 장치를 통과할 때, 이들 모두는 접속 처리를 오프로드하기 위해 본 발명을 적용할 기회를 갖는다. 이러한 장치의 몇가지 예로는 이하와 같다.
- 클라이언트 네트워크 접속을 서버 팜 내의 한 세트의 서버들 사이에 분배(국부적으로 또는 지리적으로 분산)하는 부하 조정기(Load Balancer). 본 발명은 부하 조정 기능과 용이하게 조합될 수 있다.
- 네트워크 트래픽 및 계량 패킷 흐름(meter packet flow)를 모니터링하는 밴드폭 관리자(Bandwidth manager). 이들 장치도 역시 본 발명을 사용할 수 있다.
- 방화벽(Firewall)은 패킷을 모니터링하고, 인증된 패킷만을 통과하도록 허용한다. 방화벽 내에 추가적인 특징을 제공하기 위해 본 발명이 사용될 수 있다.
- 라우터 및 스위치도 역시 네트워크 트래픽의 경로 내에 위치한다. 산업상의 추세는 이들 장치 내에 (부하 조정, 밴드폭 관리 및 방화벽 기능성과 같은) 추가적인 기능성을 통합하는 것이다. 따라서, 본 발명은 라우터내로 용이하게 결합될 수 있다.
상기 장치들 내로의 본 발명의 특정한 통합은 구현예마다 달라진다.
또한 본 발명은 네트워크 접속의 종단점인 컴퓨터 시스템 내에도 적용될 수 있다. 이 경우, 본 발명을 구현하기 위해 에드-온 카드(add-on card)가 사용되어, 컴퓨터 시스템 내의 메인 처리 요소를 오프로드할 수 있다.
결론
전술한 바람직한 실시예들은 당업자가 본 발명을 실시하거나 사용할 수 있도록 하기 위해 제공된 것이다. 이들 실시예에 대한 다양한 수정이 당업자에게는 명백할 것이다. 아울러, 본 명세서에 정의되는 일반적인 원리는 다른 실시예에도 적용될 수 있다. 따라서, 본 발명을 본 명세서에서 예시한 실시예로만 제한하기 위한 것이 아니며, 본 명세서에 개시되는 원리 및 신규한 특징과 일치하는 가장 넓은 범주에 따라야 한다.

Claims (43)

  1. 인터페이스부에 대응하는 네트워크 어드레스를 이용하여 클라이언트로부터 요청의 수신시에 상기 클라이언트와 상기 인터페이스부 사이의 접속을 개방하는 수단;
    상기 인터페이스부와 서버 사이에 여분의 접속(free connection)이 개방되어 있지 않은 경우 상기 인터페이스부와 상기 서버 사이의 접속을 개방하는 수단으로서, 상기 서버는 상기 네트워크 어드레스의 함수로서 선택되는 것인, 상기 인터페이스부와 상기 서버 사이의 접속을 개방하는 수단;
    상기 서버에 대응하는 경로명을 이용하여 데이터를 검색하라는 요청을 수신하기 위한 수단으로서, 확인 및 시퀀스 파라미터들을 갖는 GET 세그먼트를 수신하기 위한 수단을 포함하는 상기 데이터 검색 요청을 수신하기 위한 수단;
    상기 클라이언트가 상기 접속을 통해 상기 서버 상의 데이터에 투명하게 액세스하도록 허용하기 위한 수단으로서, 상기 데이터는 상기 경로명을 이용하여 상기 서버로부터 검색되고, 상기 허용하기 위한 수단은, 수정된 GET 세그먼트를 생성하기 위해 상기 확인 및 시퀀스 파라미터들을 수정하고 상기 수정된 GET 세그먼트 내에 "접속:유지(Connection: Keep-Alive)" 헤더를 삽입하기 위한 수단을 포함하는 것인, 상기 허용하기 위한 수단;
    상기 수정된 GET 세그먼트를 상기 서버에 전송하기 위한 수단;
    상기 "접속:유지(Connection: Keep-Alive)" 헤더를 상기 수정된 GET 세그먼트 내에 삽입함으로써 추가된 바이트 수를 설명하고 상기 클라이언트가 상기 데이터에 투명하게 액세스하도록 허용하기 위해 상기 서버로부터 수신된 상기 확인 및 시퀀스 파라미터들을 수정하기 위한 수단;
    상기 "접속:유지(Connection: Keep-Alive)" 헤더를 상기 수정된 GET 세그먼트 내에 삽입함으로써 추가된 바이트 수를 설명하고 상기 클라이언트가 상기 데이터에 투명하게 액세스하도록 계속 허용하기 위해 상기 수정된 GET 세그먼트에 후속하는 패킷을 상기 서버에 전송하기 이전에 상기 확인 및 시퀀스 파라미터들을 수정하기 위한 수단; 및
    상기 인터페이스부와 상기 서버 사이의 상기 접속을 계속 개방하고 있는 한편 상기 클라이언트와 상기 인터페이스부 사이의 상기 접속을 폐쇄하기 위한 수단
    을 포함하고,
    또 다른 클라이언트에 의한 상기 서버 상의 데이터에 대한 액세스 요청시에, 상기 또 다른 클라이언트는 상기 인터페이스부와 상기 서버 사이의 상기 접속을 재사용할 수 있는 것인, 장치.
  2. 제1항에 있어서,
    추가의 클라이언트와 상기 인터페이스부 사이의 접속을 개방하기 위한 수단과;
    상기 추가의 클라이언트가, 상기 추가의 클라이언트와 상기 인터페이스부 사이의 상기 접속, 및 상기 인터페이스부와 상기 서버 사이의 상기 접속을 통해, 상기 서버 상의 정보에 액세스할 수 있도록 허용하기 위한 수단을 더 포함하는 장치.
  3. 제1항에 있어서, 상기 허용하기 위한 수단은, 상기 데이터를 상기 클라이언트에 전송하기 위한 수단을 더 포함하는 것인, 장치.
  4. 제1항에 있어서, 상기 허용하기 위한 수단은,
    추가의 시퀀스 및 확인 파라미터들을 갖는 RESP 세그먼트를 수신하기 위한 수단과;
    수정된 RESP 세그먼트를 생성하기 위해 상기 추가의 파라미터들을 수정하기 위한 수단과;
    상기 수정된 RESP 세그먼트를 상기 클라이언트에 전송하기 위한 수단
    을 더 포함하는 것인, 장치.
  5. 제1항에 있어서, 상기 허용하기 위한 수단은,
    추가의 시퀀스 및 확인 파라미터들을 갖는 제1 RESP 세그먼트를 수신하기 위한 수단과;
    추가의 수정된 파라미터들을 생성하기 위해 상기 추가의 파라미터들을 수정하기 위한 수단과;
    상기 추가의 수정된 파라미터들을 갖는 제2 RESP 세그먼트를 상기 클라이언트에 전송하기 위한 수단
    을 더 포함하는 것인, 장치.
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 데이터를 저장하는 서버를 경로명에 기초하여 사전설정된 정책의 함수로서 선택하기 위한 수단과;
    상기 데이터를 저장하는 상기 서버를 상기 서버의 부하에 기초하여 사전설정된 정책의 함수로서 선택하기 위한 수단과;
    상기 데이터를 저장하는 상기 서버를 상기 서버의 상태에 기초하여 사전설정된 정책의 함수로서 선택하기 위한 수단과;
    제1 클라이언트로부터의 요청에 응답하여 확립된 상기 서버로의 앞서 개방된 접속을 식별하고, 상기 접속에서 사용될 시퀀스 및 식별번호들을 식별하기 위한 수단과;
    네트워크 어드레스와 경로명을 이용하여 데이터를 검색하라는 요청을 제2 클라이언트로부터 수신하기 위한 수단으로서, 상기 제2 클라이언트로부터의 요청은 시퀀스 및 확인 파라미터들을 갖는 GET 세그먼트를 포함하는 것인, 상기 제2 클라이언트로부터 수신하기 위한 수단과;
    이미 사용된 시퀀스 및 확인 번호들을 식별케하는 상기 정보에 기초하여 수정된 GET 세그먼트를 생성하기 위해 상기 GET 세그먼트 내의 상기 시퀀스 및 확인 파라미터들을 수정함으로써 상기 앞서 개방된 접속을 이용하여 상기 서버로부터 상기 데이터를 요청하고, 상기 수정된 GET 세그먼트를 상기 서버에 전송하기 위한 수단과;
    상기 서버로부터 상기 데이터를 수신하기 위한 수단과;
    상기 데이터를 상기 제2 클라이언트에 전송하기 위한 수단
    을 포함하는 장치.
  13. 제12항에 있어서, 상기 데이터를 상기 제2 클라이언트에 전송하기 위한 수단은, 수정된 시퀀스 및 확인 파라미터들을 생성하기 위해 상기 서버로부터의 수신시에 상기 데이터 내의 상기 시퀀스 및 확인 파라미터들을 수정하고, 상기 수정된 시퀀스 및 확인 파라미터들과 함께 상기 데이터를 상기 제2 클라이언트에 전송하기 위한 수단을 포함하는 것인, 장치.
  14. 제12항에 있어서, 상기 접속에서 사용될 시퀀스 및 식별번호들을 식별케하는 상기 정보는, 각각 시작 시퀀스 번호와 시작 확인 번호를 포함하는 것인, 장치.
  15. 제12항에 있어서, 상기 제2 클라이언트로부터 수신하기 위한 수단은, 상기 네트워크 어드레스를 이용하여 호스트로의 접속을 개방하라는 요청을 상기 제2 클라이언트로부터 수신하기 위한 수단과; 상기 경로명을 이용하여 데이터를 검색하라는 요청을 상기 제2 클라이언트로부터 수신하기 위한 수단을 포함하는 것인, 장치.
  16. 제12항에 있어서, 상기 네트워크 어드레스와 추가의 경로명을 이용하여 추가의 데이터를 검색하라는 추가의 요청을 수신하기 위한 수단과;
    상기 추가의 경로명의 함수로서 추가의 서버를 선택하기 위한 수단과;
    상기 추가의 서버로부터 상기 추가의 데이터를 검색하기 위한 수단
    을 더 포함하는, 장치.
  17. 제12항에 있어서, 상기 서버로부터 상기 데이터를 요청하기 위한 수단은,
    상기 수정된 GET 세그먼트 내에 "접속:유지" 헤더를 삽입하기 위한 수단과;
    상기 서버로부터 수신된 상기 확인 파라미터들로부터, 상기 수정된 GET 세그먼트 내에 "접속:유지" 헤더를 삽입함으로써 추가된 바이트수를 감산하기 위한 수단과;
    상기 수정된 GET 세그먼트에 후속하는 패킷을 상기 서버에 전송하기 이전에, 상기 수정된 GET 세그먼트 내에 상기 "접속:유지" 헤더를 삽입함으로써 추가된 바이트수를 상기 시퀀스 번호에 추가하기 위한 수단
    을 더 포함하는 것인, 장치.
  18. 제12항에 있어서, 상기 서버로부터 상기 데이터를 요청하기 위한 수단은,
    추가의 시퀀스 및 확인 파라미터들을 갖는 제1 RESP 세그먼트를 수신하기 위한 수단과;
    수정된 RESP 세그먼트를 생성하기 위해 상기 추가의 파라미터들을 수정하기 위한 수단과;
    상기 수정된 RESP 세그먼트를 상기 클라이언트에 전송하기 위한 수단
    을 더 포함하는 것인, 장치.
  19. 삭제
  20. 인터페이스부에 대응하는 네트워크 어드레스를 이용하여 클라이언트로부터 요청의 수신시에 상기 클라이언트와 상기 인터페이스부 사이의 접속을 개방하는 단계와;
    상기 인터페이스부와 서버 사이에 여분의 접속(free connection)이 개방되어 있지 않은 경우 상기 인터페이스부와 상기 서버 사이의 접속을 개방하는 단계로서, 상기 서버는 상기 네트워크 어드레스의 함수로서 선택되는 것인, 상기 인터페이스부와 상기 서버 사이의 접속을 개방하는 단계와;
    상기 서버에 대응하는 경로명을 이용하여 데이터를 검색하라는 요청을 수신하는 단계로서, 확인 및 시퀀스 파라미터들을 갖는 GET 세그먼트를 수신하는 단계를 포함하는 상기 데이터 검색 요청을 수신하는 단계와;
    상기 클라이언트가 상기 접속을 통해 상기 서버 상의 데이터에 투명하게 액세스하도록 허용하는 단계로서, 상기 데이터는 상기 경로명을 이용하여 상기 서버로부터 검색되고, 상기 허용하는 단계는, 수정된 GET 세그먼트를 생성하기 위해 상기 확인 및 시퀀스 파라미터들을 수정하고 상기 수정된 GET 세그먼트 내에 "접속:유지(Connection: Keep-Alive)" 헤더를 삽입하는 단계를 포함하는 것인, 상기 허용하는 단계와;
    상기 수정된 GET 세그먼트를 상기 서버에 전송하는 단계와;
    상기 "접속:유지(Connection: Keep-Alive)" 헤더를 상기 수정된 GET 세그먼트 내에 삽입함으로써 추가된 바이트 수를 보상하고 상기 클라이언트가 상기 데이터에 투명하게 액세스하도록 허용하기 위해 상기 서버로부터 수신된 상기 확인 및 시퀀스 파라미터들을 수정하는 단계와;
    상기 "접속:유지(Connection: Keep-Alive)" 헤더를 상기 수정된 GET 세그먼트 내에 삽입함으로써 추가된 바이트 수를 보상하고 상기 클라이언트가 상기 데이터에 투명하게 액세스하도록 계속 허용하기 위해 상기 수정된 GET 세그먼트에 후속하는 패킷을 상기 서버에 전송하기 이전에 상기 확인 및 시퀀스 파라미터들을 수정하는 단계와;
    상기 인터페이스부와 상기 서버 사이의 상기 접속을 계속 개방하고 있는 한편 상기 클라이언트와 상기 인터페이스부 사이의 상기 접속을 폐쇄하는 단계와;
    상기 서버 상의 데이터에 대한 액세스를 시도하는 또 다른 클라이언트에 응답하여, 상기 인터페이스부와 상기 서버 사이의 상기 접속을 재사용하는 단계
    를 포함하는, 방법
  21. 제20항에 있어서,
    추가의 클라이언트와 상기 인터페이스부 사이의 접속을 개방하는 단계와;
    상기 추가의 클라이언트가, 상기 추가의 클라이언트와 상기 인터페이스부 사이의 상기 접속, 및 상기 인터페이스부와 상기 서버 사이의 상기 접속을 통해, 상기 서버 상의 정보에 액세스할 수 있도록 허용하는 단계를 더 포함하는 방법.
  22. 제20항에 있어서, 상기 허용하는 단계는, 상기 데이터를 상기 클라이언트에 전송하는 단계를 더 포함하는 것인, 방법.
  23. 제20항에 있어서, 상기 허용하는 단계는,
    추가의 시퀀스 및 확인 파라미터들을 갖는 RESP 세그먼트를 수신하는 단계와;
    수정된 RESP 세그먼트를 생성하기 위해 상기 추가의 파라미터들을 수정하는 단계와;
    상기 수정된 RESP 세그먼트를 상기 클라이언트에 전송하는 단계
    를 더 포함하는 것인, 방법.
  24. 제20항에 있어서, 상기 허용하는 단계는,
    추가의 시퀀스 및 확인 파라미터들을 갖는 제1 RESP 세그먼트를 수신하는 단계와;
    추가의 수정된 파라미터들을 생성하기 위해 상기 추가의 파라미터들을 수정하는 단계와;
    상기 추가의 수정된 파라미터들을 갖는 제2 RESP 세그먼트를 상기 클라이언트에 전송하는 단계
    를 더 포함하는 것인, 방 법.
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 제1 클라이언트로부터의 요청에 응답하여 서버로의 접속을 개방하는 단계로서, 상기 서버는 경로명, 상기 서버의 부하, 및 상기 서버의 상태 중 적어도 하나를 포함하는 사전정의된 정책의 함수로서 선택되는 것인, 상기 서버로의 접속을 개방하는 단계와;
    상기 접속에서 데이터 수신에 사용된 접속 및 시퀀스 및 확인 번호를 식별하는 단계와;
    제2 클라이언트로부터 데이터를 검색하라는 요청을 수신하는 단계로서, 상기 요청은 시퀀스 및 확인 파라미터들을 포함하는 것인, 상기 제2 클라이언트로부터 데이터 검색 요청을 수신하는 단계와;
    상기 접속에 사용된 시퀀스 및 확인 번호들을 식별케하는 정보를 이용하여 상기 시퀀스와 상기 확인 파라미터들을 수정함으로써, 상기 접속을 이용하여 상기 서버로부터 상기 데이터를 요청하는 단계와;
    상기 서버로부터 데이터를 수신하는 단계와;
    상기 데이터를 상기 제2 클라이언트에 전송하는 단계
    를 포함하는, 방법.
  32. 제31항에 있어서, 상기 제2 클라이언트로부터 데이터 검색 요청을 수신하는 상기 단계는,
    네트워크 어드레스를 이용하여 호스트로의 접속을 개방하라는 요청을 상기 제2 클라이언트로부터 수신하는 단계와;
    경로명을 이용하여 데이터를 검색하라는 요청을 상기 제2 클라이언트로부터 수신하는 단계를 포함하는 것인, 방법.
  33. 제32항에 있어서, 상기 네트워크 어드레스와 추가의 경로명을 이용하여 추가의 데이터를 검색하라는 추가의 요청을 수신하는 단계와;
    상기 추가의 경로명의 함수로서 추가의 서버를 선택하는 단계와;
    상기 추가의 서버로부터 상기 추가의 데이터를 검색하는 단계
    를 더 포함하는 방법.
  34. 제31항에 있어서, 상기 제2 클라이언트로부터 데이터 검색 요청을 수신하는 상기 단계는, 시퀀스와 확인 파라미터들을 갖는 제1 GET 세그먼트를 수신하는 단계를 더 포함하고,
    상기 요청하는 단계는, 수정된 GET 세그먼트를 생성하기 위해 상기 파라미터들을 수정하고, 상기 수정된 GET 세그먼트를 상기 서버에 전송하는 단계를 포함하는 것인, 방법.
  35. 제34항에 있어서, 상기 서버로부터 상기 데이터를 요청하는 단계는,
    상기 수정된 GET 세그먼트 내에 "접속:유지" 헤더를 삽입하는 단계와;
    상기 서버로부터 수신된 상기 확인 파라미터들로부터, 상기 수정된 GET 세그먼트 내에 상기 "접속:유지" 헤더를 삽입함으로써 추가된 바이트수를 감산하는 단계와;
    상기 수정된 GET 세그먼트에 후속하는 패킷을 상기 서버에 전송하기 이전에, 상기 수정된 GET 세그먼트 내에 상기 "접속:유지" 헤더를 삽입함으로써 추가된 바이트수를 상기 시퀀스 번호에 추가하는 단계
    를 더 포함하는 것인, 방법.
  36. 제34항에 있어서,
    추가 시퀀스와 확인 파라미터들을 갖는 제1 RESP 세그먼트를 수신하는 단계와;
    추가의 수정된 파라미터들을 생성하기 위해 상기 추가의 파라미터들을 수정하는 단계와;
    상기 추가의 수정된 파라미터들을 갖는 제2 RESP 세그먼트를 상기 제2 클라이언트에 전송하는 단계
    를 더 포함하는 방법.
  37. 제33항에 있어서, 추가의 시퀀스와 확인 파라미터들을 갖는 제1 RESP 세그먼트를 수신하는 단계와;
    추가의 수정된 파라미터들을 생성하기 위해 상기 추가의 파라미터들을 수정하는 단계와;
    상기 추가의 수정된 파라미터들을 갖는 제2 RESP 세그먼트를 상기 제2 클라이언트에 전송하는 단계
    를 더 포함하는, 방법.
  38. 제31항에 있어서, 상기 제2 클라이언트로부터 데이터 검색 요청을 수신하는 상기 단계는, 시퀀스 및 확인 파라미터들을 갖는 제1 GET 세그먼트를 수신하는 단계를 포함하고, 상기 검색은 수정된 파라미터들을 생성하기 위해 상기 파라미터들을 수정하고, 상기 수정된 파라미터들을 갖는 제2 GET 세그먼트를 상기 서버에 전송하는 단계를 포함하는 것인, 방법.
  39. 제31항에 있어서, 상기 접속에서 데이터를 수신하는데 사용된 상기 시퀀스 및 확인 번호들은 각각 시작 시퀀스 번호 및 시작 확인 번호인 것인, 방법.
  40. 제31항에 있어서, 상기 데이터를 상기 제2 클라이언트에 전송하는 단계는, 수정된 시퀀스 및 확인 파라미터들을 생성하기 위해 상기 서버로부터의 수신시에 상기 데이터 내의 상기 시퀀스 및 확인 파라미터들을 수정하고, 상기 시퀀스 및 확인 파라미터들과 함께 상기 데이터를 상기 제2 클라이언트에 전송하는 단계를 포함하는 것인, 방법.
  41. TCP/IP 패킷을 통해 서버로부터 데이터를 요청하는 제1 클라이언트에 응답하여, 상기 제1 클라이언트와 인터페이스부 사이의 접속을 개방하기 위한 수단으로서, 상기 TCP/IP 패킷은 IP 헤더와 TCP 헤더를 갖는 GET 세그먼트이고, 상기 IP 헤더는 소스 어드레스와 목적지 어드레스를 포함하며, 상기 TCP 헤더는 시퀀스 번호와 확인 번호를 포함하고, 상기 인터페이스부는 상기 제1 클라이언트와 상기 서버 사이에 위치하는 것인, 상기 제1 클라이언트와 인터페이스부 사이의 접속을 개방하기 위한 수단;
    상기 인터페이스부와 서버 사이에 여분의 접속이 개방되어 있지 않은 경우, 상기 인터페이스부와 상기 서버 사이의 접속을 개방하기 위한 수단;
    수정된 GET 세그먼트를 생성하기 위해 상기 IP 헤더 및 TCP 헤더를 수정하기 위한 수단을 포함하며 상기 제1 클라이언트가 상기 접속을 통해 상기 서버 상의 데이터에 투명하게 액세스하도록 허용하기 위한 수단으로서, 상기 수정된 GET 세그먼트는 "접속:유지(Connection: Keep-Alive)" 헤더를 포함하며, 상기 허용하기 위한 수단은 상기 클라이언트가 상기 데이터에 투명하게 액세스하도록 상기 서버로부터 수신된 상기 확인 및 시퀀스 파라미터들을 수정하기 위한 수단을 포함하는 것인, 상기 허용하기 위한 수단;
    상기 인터페이스부와 상기 서버간의 상기 접속을 계속 개방하고 있는 한편, 상기 제1 클라이언트와 상기 인터페이스 유닛 사이의 상기 접속을 폐쇄하기 위한 수단을 포함하고,
    제2 클라이언트는 상기 인터페이스부와의 접속을 확립할 때 상기 인터페이스부와 상기 서버간의 상기 접속을 재사용할 수 있는 것인, 장치.
  42. TCP/IP 패킷을 통해 서버로부터 데이터를 요청하는 제1 클라이언트에 응답하여 상기 제1 클라이언트와 인터페이스부 사이의 접속을 개방하는 단계로서, 상기 TCP/IP 패킷은 IP 헤더와 TCP 헤더를 갖는 GET 세그먼트이고, 상기 IP 헤더는 소스 어드레스와 목적지 어드레스를 포함하며, 상기 TCP 헤더는 시퀀스 번호와 확인 번호를 포함하고, 상기 인터페이스부는 상기 제1 클라이언트와 상기 서버 사이에 위치하는 것인, 상기 제1 클라이언트와 인터페이스부 사이의 접속을 개방하는 단계와;
    상기 인터페이스부와 서버 사이에 여분의 접속이 개방되어 있지 않은 경우, 상기 인터페이스부와 상기 서버 사이의 접속을 개방하는 단계와;
    수정된 GET 세그먼트를 생성하기 위해 상기 IP 헤더 및 TCP 헤더를 수정하는 것을 포함하며 상기 제1 클라이언트가 상기 접속을 통해 상기 서버 상의 데이터에 투명하게 액세스하도록 허용하는 단계로서, 상기 수정된 GET 세그먼트는 "접속:유지(Connection: Keep-Alive)" 헤더를 포함하며, 상기 허용하는 단계는 상기 클라이언트가 상기 데이터에 투명하게 액세스하도록 상기 서버로부터 수신된 상기 확인 및 시퀀스 파라미터들을 수정하는 단계를 포함하는 것인, 상기 허용하는 단계와;
    상기 인터페이스부와 상기 서버간의 상기 접속을 계속 개방하고 있는 한편, 상기 제1 클라이언트와 상기 인터페이스 유닛 사이의 상기 접속을 폐쇄하는 단계
    를 포함하고,
    제2 클라이언트는 상기 인터페이스부와의 접속을 확립할 때 상기 인터페이스부와 상기 서버간의 상기 접속을 재사용할 수 있는 것인, 장치.
  43. 제1 클라이언트로부터의 요청에 응답하여 서버로의 접속을 개방하고, 상기 접속을 통해 데이터를 전송하는데 사용되는 시퀀스 및 확인 번호들을 확립하는 단계와;
    네트워크 어드레스와 경로명을 이용하여 데이터를 검색하라는 요청을 제2 클라이언트로부터 수신하는 단계로서, 상기 제2 클라이언트로부터의 요청은 시퀀스 및 확인 파라미터들을 포함하는 것인, 상기 제2 클라이언트로부터 수신하는 단계와;
    상기 접속에 사용된 상기 확립된 시퀀스 및 확인 번호들에 기초하여 상기 시퀀스 및 상기 확인 파라미터들을 수정함으로써 상기 접속을 이용하여 상기 서버로부터 상기 데이터를 요청하는 단계와;
    수정된 시퀀스 및 확인 파라미터들을 생성하기 위해 상기 서버로부터 수신된 상기 데이터 내의 시퀀스 및 확인 파라미터들을 수정하는 단계와;
    상기 수정된 시퀀스 및 확인 파라미터들과 함께 상기 데이터를 상기 제2 클라이언트에 전송하는 단계
    를 포함하는, 방법.
KR1020017005867A 1998-11-10 1999-11-10 인터넷 클라이언트-서버 멀티플렉서 KR100723320B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/188,709 US6411986B1 (en) 1998-11-10 1998-11-10 Internet client-server multiplexer
US09/188,709 1998-11-10

Publications (2)

Publication Number Publication Date
KR20010107955A KR20010107955A (ko) 2001-12-07
KR100723320B1 true KR100723320B1 (ko) 2007-05-31

Family

ID=22694205

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017005867A KR100723320B1 (ko) 1998-11-10 1999-11-10 인터넷 클라이언트-서버 멀티플렉서

Country Status (6)

Country Link
US (2) US6411986B1 (ko)
EP (4) EP2439896B1 (ko)
JP (1) JP4312962B2 (ko)
KR (1) KR100723320B1 (ko)
AU (1) AU1613300A (ko)
WO (1) WO2000028433A2 (ko)

Families Citing this family (199)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6957346B1 (en) 1999-06-15 2005-10-18 Ssh Communications Security Ltd. Method and arrangement for providing security through network address translations using tunneling and compensations
US6721780B1 (en) 1999-11-09 2004-04-13 Fireclick, Inc. Predictive pre-download of network objects
US6789119B1 (en) * 1999-11-24 2004-09-07 Webex Communication, Inc. Emulating a persistent connection using http
US7117263B1 (en) * 2000-02-01 2006-10-03 Hewlett-Packard Development Company, L.P. Apparatus and method for processing requests from an external queue in a TCP/IP-based application system
US6725272B1 (en) 2000-02-18 2004-04-20 Netscaler, Inc. Apparatus, method and computer program product for guaranteed content delivery incorporating putting a client on-hold based on response time
US6912578B1 (en) * 2000-02-25 2005-06-28 Sun Microsystems, Inc. Method and apparatus for improving utilization of a resource on a shared client
US7343413B2 (en) 2000-03-21 2008-03-11 F5 Networks, Inc. Method and system for optimizing a network by independently scaling control segments and data flow
US8380854B2 (en) 2000-03-21 2013-02-19 F5 Networks, Inc. Simplified method for processing multiple connections from the same client
US7441263B1 (en) 2000-03-23 2008-10-21 Citibank, N.A. System, method and computer program product for providing unified authentication services for online applications
JP2001285400A (ja) * 2000-03-29 2001-10-12 Kddi Corp トラヒック統計情報収集方法
US6671725B1 (en) * 2000-04-18 2003-12-30 International Business Machines Corporation Server cluster interconnection using network processor
US9800608B2 (en) 2000-09-25 2017-10-24 Symantec Corporation Processing data flows with a data flow processor
US8010469B2 (en) 2000-09-25 2011-08-30 Crossbeam Systems, Inc. Systems and methods for processing data flows
US20110213869A1 (en) * 2000-09-25 2011-09-01 Yevgeny Korsunsky Processing data flows with a data flow processor
US20110219035A1 (en) * 2000-09-25 2011-09-08 Yevgeny Korsunsky Database security via data flow processing
US9525696B2 (en) 2000-09-25 2016-12-20 Blue Coat Systems, Inc. Systems and methods for processing data flows
US20070192863A1 (en) * 2005-07-01 2007-08-16 Harsh Kapoor Systems and methods for processing data flows
US20100042565A1 (en) * 2000-09-25 2010-02-18 Crossbeam Systems, Inc. Mezzazine in-depth data analysis facility
US20020165947A1 (en) * 2000-09-25 2002-11-07 Crossbeam Systems, Inc. Network application apparatus
US20110214157A1 (en) * 2000-09-25 2011-09-01 Yevgeny Korsunsky Securing a network with data flow processing
US7562147B1 (en) * 2000-10-02 2009-07-14 Microsoft Corporation Bi-directional HTTP-based reliable messaging protocol and system utilizing same
FR2814827B1 (fr) * 2000-10-02 2003-01-10 Amadeus Developement Company Unite de multiplexage, systeme et procede de communication dans un reseau informatique
US20020042839A1 (en) * 2000-10-10 2002-04-11 Christopher Peiffer HTTP multiplexor/demultiplexor
US7055028B2 (en) * 2000-10-10 2006-05-30 Juniper Networks, Inc. HTTP multiplexor/demultiplexor system for use in secure transactions
US7801978B1 (en) * 2000-10-18 2010-09-21 Citrix Systems, Inc. Apparatus, method and computer program product for efficiently pooling connections between clients and servers
US6697206B2 (en) * 2000-12-19 2004-02-24 Imation Corp. Tape edge monitoring
US6850982B1 (en) * 2000-12-19 2005-02-01 Cisco Technology, Inc. Methods and apparatus for directing a flow of data between a client and multiple servers
US7124189B2 (en) * 2000-12-20 2006-10-17 Intellisync Corporation Spontaneous virtual private network between portable device and enterprise network
US8266677B2 (en) * 2000-12-20 2012-09-11 Intellisync Corporation UDP communication with a programmer interface over wireless networks
US7340530B2 (en) * 2001-01-17 2008-03-04 International Business Machines Corporation Methods, for providing data from network secure communications in a cluster computing environment
US7269784B1 (en) 2001-01-22 2007-09-11 Kasriel Stephane Server-originated differential caching
US20020120743A1 (en) * 2001-02-26 2002-08-29 Lior Shabtay Splicing persistent connections
JP5229109B2 (ja) * 2001-03-27 2013-07-03 富士通株式会社 パケット中継処理装置
US20020143946A1 (en) * 2001-03-28 2002-10-03 Daniel Crosson Software based internet protocol address selection method and system
US7185063B1 (en) 2001-06-22 2007-02-27 Digital River, Inc. Content delivery network using differential caching
JP2003006347A (ja) * 2001-06-22 2003-01-10 Denno:Kk 採点システム
JP2003030018A (ja) * 2001-07-13 2003-01-31 Sony Corp データ通信装置および方法、データ通信システム、情報処理装置および方法、記録媒体、並びにプログラム
US7774492B2 (en) * 2001-07-26 2010-08-10 Citrix Systems, Inc. System, method and computer program product to maximize server throughput while avoiding server overload by controlling the rate of establishing server-side net work connections
US7092997B1 (en) 2001-08-06 2006-08-15 Digital River, Inc. Template identification with differential caching
US7188214B1 (en) 2001-08-07 2007-03-06 Digital River, Inc. Efficient compression using differential caching
FI20011651A (fi) 2001-08-15 2003-02-16 Nokia Corp Palveluklusterin kuormituksen tasapainoittaminen
US7287258B1 (en) * 2001-08-31 2007-10-23 International Business Machines Corporation Thread consistency support system and method
US7363286B2 (en) * 2001-10-29 2008-04-22 International Business Machines Corporation File system path alias
US6976085B1 (en) * 2001-11-20 2005-12-13 Cisco Technology, Inc. Methods and apparatus for inserting data into a communications session
US7720997B1 (en) * 2001-12-19 2010-05-18 Cisco Technology, Inc. Path selection system
EP1326476B1 (en) * 2002-01-08 2013-03-13 Alcatel Lucent Network, network-unit, method, and processor program product for exchanging packet signals via pooled connection
US7298746B1 (en) 2002-02-11 2007-11-20 Extreme Networks Method and system for reassembling and parsing packets in a network environment
US7584262B1 (en) 2002-02-11 2009-09-01 Extreme Networks Method of and system for allocating resources to resource requests based on application of persistence policies
US7321926B1 (en) 2002-02-11 2008-01-22 Extreme Networks Method of and system for allocating resources to resource requests
US7447777B1 (en) * 2002-02-11 2008-11-04 Extreme Networks Switching system
US7814204B1 (en) 2002-02-11 2010-10-12 Extreme Networks, Inc. Method of and system for analyzing the content of resource requests
US7296051B1 (en) 2002-02-19 2007-11-13 Digital River, Inc. Predictive predownload of templates with delta encoding
US7487261B1 (en) 2002-02-22 2009-02-03 Digital River, Inc. Delta caching service
US7929447B2 (en) * 2002-03-05 2011-04-19 Sony Corporation Method of flow control for data transported using isochronous packets over an IEEE 1394-2000 serial bus network
US7296074B2 (en) * 2002-03-20 2007-11-13 Scientific-Atlanta, Inc. Media on demand session re-use
US7490162B1 (en) 2002-05-15 2009-02-10 F5 Networks, Inc. Method and system for forwarding messages received at a traffic manager
US7089565B2 (en) * 2002-05-23 2006-08-08 International Business Machines Corporation Software architecture for providing a connection handle association
WO2004006115A1 (en) * 2002-07-02 2004-01-15 Netscaler, Inc System, method and computer program product to avoid server overload by controlling http denial of service (dos) attacks
US7616638B2 (en) 2003-07-29 2009-11-10 Orbital Data Corporation Wavefront detection and disambiguation of acknowledgments
US8233392B2 (en) 2003-07-29 2012-07-31 Citrix Systems, Inc. Transaction boundary detection for reduction in timeout penalties
US8270423B2 (en) 2003-07-29 2012-09-18 Citrix Systems, Inc. Systems and methods of using packet boundaries for reduction in timeout prevention
US7630305B2 (en) 2003-07-29 2009-12-08 Orbital Data Corporation TCP selective acknowledgements for communicating delivered and missed data packets
US7774484B1 (en) 2002-12-19 2010-08-10 F5 Networks, Inc. Method and system for managing network traffic
JP4108486B2 (ja) * 2003-01-08 2008-06-25 Necインフロンティア株式会社 Ipルータ、通信システム及びそれに用いる帯域設定方法並びにそのプログラム
JP4173517B2 (ja) * 2003-03-05 2008-10-29 インテリシンク コーポレイション コンピューティング・ネットワークとリモート装置との間のバーチャル・プライベート・ネットワーク
WO2004107131A2 (en) 2003-05-28 2004-12-09 Caymas Systems, Inc. Policy based network address translation
US8437284B2 (en) 2003-07-29 2013-05-07 Citrix Systems, Inc. Systems and methods for additional retransmissions of dropped packets
US8432800B2 (en) 2003-07-29 2013-04-30 Citrix Systems, Inc. Systems and methods for stochastic-based quality of service
US8238241B2 (en) 2003-07-29 2012-08-07 Citrix Systems, Inc. Automatic detection and window virtualization for flow control
US8285881B2 (en) * 2003-09-10 2012-10-09 Broadcom Corporation System and method for load balancing and fail over
US9614772B1 (en) 2003-10-20 2017-04-04 F5 Networks, Inc. System and method for directing network traffic in tunneling applications
US7978716B2 (en) 2003-11-24 2011-07-12 Citrix Systems, Inc. Systems and methods for providing a VPN solution
US8041821B2 (en) * 2003-11-26 2011-10-18 International Business Machines Corporation Connection pool management
US8572249B2 (en) 2003-12-10 2013-10-29 Aventail Llc Network appliance for balancing load and platform services
US20100211626A1 (en) * 2004-01-12 2010-08-19 Foundry Networks, Inc. Method and apparatus for maintaining longer persistent connections
GB0410151D0 (en) * 2004-05-07 2004-06-09 Zeus Technology Ltd Load balancing & traffic management
US7757074B2 (en) 2004-06-30 2010-07-13 Citrix Application Networking, Llc System and method for establishing a virtual private network
US8739274B2 (en) 2004-06-30 2014-05-27 Citrix Systems, Inc. Method and device for performing integrated caching in a data communication network
US8495305B2 (en) 2004-06-30 2013-07-23 Citrix Systems, Inc. Method and device for performing caching of dynamically generated objects in a data communication network
KR20070058445A (ko) * 2004-07-02 2007-06-08 스트라스바흐, 인코포레이티드 웨이퍼 처리 방법 및 시스템
JP2008507929A (ja) 2004-07-23 2008-03-13 サイトリックス システムズ, インコーポレイテッド プライベートネットワークへの遠隔アクセスを安全にする方法およびシステム
US7808906B2 (en) 2004-07-23 2010-10-05 Citrix Systems, Inc. Systems and methods for communicating a lossy protocol via a lossless protocol using false acknowledgements
US8224966B2 (en) * 2004-08-24 2012-07-17 Cisco Technology, Inc. Reproxying an unproxied connection
US7657940B2 (en) * 2004-10-28 2010-02-02 Cisco Technology, Inc. System for SSL re-encryption after load balance
US8458467B2 (en) 2005-06-21 2013-06-04 Cisco Technology, Inc. Method and apparatus for adaptive application message payload content transformation in a network infrastructure element
US7987272B2 (en) 2004-12-06 2011-07-26 Cisco Technology, Inc. Performing message payload processing functions in a network element on behalf of an application
US7810089B2 (en) 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US8700695B2 (en) 2004-12-30 2014-04-15 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP pooling
US8706877B2 (en) 2004-12-30 2014-04-22 Citrix Systems, Inc. Systems and methods for providing client-side dynamic redirection to bypass an intermediary
CA2591905A1 (en) * 2004-12-30 2006-07-13 Citrix Systems, Inc. Systems and methods for providing client-side acceleration techniques
US8549149B2 (en) 2004-12-30 2013-10-01 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing
US8954595B2 (en) 2004-12-30 2015-02-10 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP buffering
US7581005B2 (en) * 2005-01-20 2009-08-25 Citrix Systems, Inc. Systems and methods for preserving transport layer protocol options
US8077632B2 (en) * 2005-01-20 2011-12-13 Citrix Systems, Inc. Automatic LAN/WAN port detection
US8255456B2 (en) 2005-12-30 2012-08-28 Citrix Systems, Inc. System and method for performing flash caching of dynamically generated objects in a data communication network
US9118717B2 (en) * 2005-02-18 2015-08-25 Cisco Technology, Inc. Delayed network protocol proxy for packet inspection in a network
US20060212521A1 (en) * 2005-03-17 2006-09-21 Nadeem Malik Asynchronous transactions action buttons over communication mediums
US8418233B1 (en) 2005-07-29 2013-04-09 F5 Networks, Inc. Rule based extensible authentication
CA2614364C (en) 2005-08-11 2016-09-27 Contextweb, Inc. Method and system for placement and pricing of internet-based advertisements or services
US8533308B1 (en) 2005-08-12 2013-09-10 F5 Networks, Inc. Network traffic management through protocol-configurable transaction processing
US8301839B2 (en) 2005-12-30 2012-10-30 Citrix Systems, Inc. System and method for performing granular invalidation of cached dynamically generated objects in a data communication network
US7921184B2 (en) 2005-12-30 2011-04-05 Citrix Systems, Inc. System and method for performing flash crowd caching of dynamically generated objects in a data communication network
US20090012903A1 (en) * 2006-01-26 2009-01-08 Contextweb, Inc. Online exchange for internet ad media
US8565088B1 (en) 2006-02-01 2013-10-22 F5 Networks, Inc. Selectively enabling packet concatenation based on a transaction boundary
US8108525B2 (en) 2006-08-03 2012-01-31 Citrix Systems, Inc. Systems and methods for managing a plurality of user sessions in a virtual private network environment
KR100837434B1 (ko) * 2006-09-29 2008-06-12 삼성전자주식회사 클라이언트와 서버 간의 인터페이스를 수행하는 매개장치및 그의 인터페이스방법
US7664857B2 (en) * 2007-01-26 2010-02-16 Citrix Systems, Inc. Systems and methods of using an IP ID field for automatic WAN/LAN detection
US9106606B1 (en) 2007-02-05 2015-08-11 F5 Networks, Inc. Method, intermediate device and computer program code for maintaining persistency
JP2008226127A (ja) * 2007-03-15 2008-09-25 Toshiba Corp 分散処理におけるメッセージングの高信頼化装置及び高信頼化方法
US20080273472A1 (en) * 2007-05-03 2008-11-06 Adrian Bashford Ethernet resource management
US8073046B2 (en) * 2007-06-14 2011-12-06 Zoran Corporation Fast training equalization of a signal by using adaptive-iterative algorithm with main path phase correction
US8806053B1 (en) 2008-04-29 2014-08-12 F5 Networks, Inc. Methods and systems for optimizing network traffic using preemptive acknowledgment signals
US9832069B1 (en) 2008-05-30 2017-11-28 F5 Networks, Inc. Persistence based on server response in an IP multimedia subsystem (IMS)
EP2329444A4 (en) * 2008-07-22 2011-11-09 Contextweb Inc NEW MODIFIED INSERT SYSTEM TO INTERFACE WITH INTERNET ADVERTISING STOCK EXCHANGE
US9130846B1 (en) 2008-08-27 2015-09-08 F5 Networks, Inc. Exposed control components for customizable load balancing and persistence
US7958247B2 (en) * 2008-10-14 2011-06-07 Hewlett-Packard Development Company, L.P. HTTP push to simulate server-initiated sessions
US8566444B1 (en) 2008-10-30 2013-10-22 F5 Networks, Inc. Methods and system for simultaneous multiple rules checking
US10157280B2 (en) 2009-09-23 2018-12-18 F5 Networks, Inc. System and method for identifying security breach attempts of a website
US8868961B1 (en) 2009-11-06 2014-10-21 F5 Networks, Inc. Methods for acquiring hyper transport timing and devices thereof
US10721269B1 (en) 2009-11-06 2020-07-21 F5 Networks, Inc. Methods and system for returning requests with javascript for clients before passing a request to a server
US9313047B2 (en) 2009-11-06 2016-04-12 F5 Networks, Inc. Handling high throughput and low latency network data packets in a traffic management device
US9141625B1 (en) 2010-06-22 2015-09-22 F5 Networks, Inc. Methods for preserving flow state during virtual machine migration and devices thereof
US10015286B1 (en) 2010-06-23 2018-07-03 F5 Networks, Inc. System and method for proxying HTTP single sign on across network domains
US8875220B2 (en) * 2010-07-01 2014-10-28 Raytheom Company Proxy-based network access protection
US8908545B1 (en) 2010-07-08 2014-12-09 F5 Networks, Inc. System and method for handling TCP performance in network access with driver initiated application tunnel
US8347100B1 (en) 2010-07-14 2013-01-01 F5 Networks, Inc. Methods for DNSSEC proxying and deployment amelioration and systems thereof
US9083760B1 (en) 2010-08-09 2015-07-14 F5 Networks, Inc. Dynamic cloning and reservation of detached idle connections
US8630174B1 (en) 2010-09-14 2014-01-14 F5 Networks, Inc. System and method for post shaping TCP packetization
US8886981B1 (en) 2010-09-15 2014-11-11 F5 Networks, Inc. Systems and methods for idle driven scheduling
US8463909B1 (en) 2010-09-15 2013-06-11 F5 Networks, Inc. Systems and methods for managing server resources
US8804504B1 (en) 2010-09-16 2014-08-12 F5 Networks, Inc. System and method for reducing CPU load in processing PPP packets on a SSL-VPN tunneling device
US8688926B2 (en) 2010-10-10 2014-04-01 Liqid Inc. Systems and methods for optimizing data storage among a plurality of solid state memory subsystems
WO2012058486A2 (en) 2010-10-29 2012-05-03 F5 Networks, Inc. Automated policy builder
US8880666B2 (en) * 2010-10-29 2014-11-04 At&T Intellectual Property I, L.P. Method, policy request router, and machine-readable hardware storage device to select a policy server based on a network condition to receive policy requests for a duration
WO2012058643A2 (en) 2010-10-29 2012-05-03 F5 Networks, Inc. System and method for on the fly protocol conversion in obtaining policy enforcement information
US8627467B2 (en) 2011-01-14 2014-01-07 F5 Networks, Inc. System and method for selectively storing web objects in a cache memory based on policy decisions
US10135831B2 (en) 2011-01-28 2018-11-20 F5 Networks, Inc. System and method for combining an access control system with a traffic management system
US9246819B1 (en) 2011-06-20 2016-01-26 F5 Networks, Inc. System and method for performing message-based load balancing
US9270766B2 (en) 2011-12-30 2016-02-23 F5 Networks, Inc. Methods for identifying network traffic characteristics to correlate and manage one or more subsequent flows and devices thereof
US9680925B2 (en) 2012-01-09 2017-06-13 At&T Intellectual Property I, L. P. Methods and apparatus to route message traffic using tiered affinity-based message routing
US10230566B1 (en) 2012-02-17 2019-03-12 F5 Networks, Inc. Methods for dynamically constructing a service principal name and devices thereof
US9172753B1 (en) 2012-02-20 2015-10-27 F5 Networks, Inc. Methods for optimizing HTTP header based authentication and devices thereof
US9231879B1 (en) 2012-02-20 2016-01-05 F5 Networks, Inc. Methods for policy-based network traffic queue management and devices thereof
US10097616B2 (en) 2012-04-27 2018-10-09 F5 Networks, Inc. Methods for optimizing service of content requests and devices thereof
US10375155B1 (en) 2013-02-19 2019-08-06 F5 Networks, Inc. System and method for achieving hardware acceleration for asymmetric flow connections
US10187317B1 (en) 2013-11-15 2019-01-22 F5 Networks, Inc. Methods for traffic rate control and devices thereof
WO2015164079A1 (en) * 2014-04-25 2015-10-29 Cisco Technology, Inc. Managing sequence values with added headers in computing devices
US10114784B2 (en) 2014-04-25 2018-10-30 Liqid Inc. Statistical power handling in a scalable storage system
US9848067B2 (en) * 2014-04-25 2017-12-19 Cisco Technology, Inc. Managing sequence values with added headers in computing devices
US10467166B2 (en) 2014-04-25 2019-11-05 Liqid Inc. Stacked-device peripheral storage card
US10015143B1 (en) 2014-06-05 2018-07-03 F5 Networks, Inc. Methods for securing one or more license entitlement grants and devices thereof
US10180889B2 (en) * 2014-06-23 2019-01-15 Liqid Inc. Network failover handling in modular switched fabric based data storage systems
US11838851B1 (en) 2014-07-15 2023-12-05 F5, Inc. Methods for managing L7 traffic classification and devices thereof
US10122630B1 (en) 2014-08-15 2018-11-06 F5 Networks, Inc. Methods for network traffic presteering and devices thereof
US9653124B2 (en) 2014-09-04 2017-05-16 Liqid Inc. Dual-sided rackmount storage assembly
US10362107B2 (en) 2014-09-04 2019-07-23 Liqid Inc. Synchronization of storage transactions in clustered storage systems
US10182013B1 (en) 2014-12-01 2019-01-15 F5 Networks, Inc. Methods for managing progressive image delivery and devices thereof
US10389652B2 (en) * 2014-12-19 2019-08-20 International Business Machines Corporation Connection pool management
US11895138B1 (en) 2015-02-02 2024-02-06 F5, Inc. Methods for improving web scanner accuracy and devices thereof
US10198183B2 (en) 2015-02-06 2019-02-05 Liqid Inc. Tunneling of storage operations between storage nodes
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US10019388B2 (en) 2015-04-28 2018-07-10 Liqid Inc. Enhanced initialization for data storage assemblies
US10108422B2 (en) 2015-04-28 2018-10-23 Liqid Inc. Multi-thread network stack buffering of data frames
US10191691B2 (en) 2015-04-28 2019-01-29 Liqid Inc. Front-end quality of service differentiation in storage system operations
US11350254B1 (en) 2015-05-05 2022-05-31 F5, Inc. Methods for enforcing compliance policies and devices thereof
US10505818B1 (en) 2015-05-05 2019-12-10 F5 Networks. Inc. Methods for analyzing and load balancing based on server health and devices thereof
US20170085500A1 (en) * 2015-09-18 2017-03-23 Pluribus Networks, Inc. Streamlined processing in a network switch of network packets in a spliced connection
US20170118293A1 (en) * 2015-10-26 2017-04-27 Trilliant Networks, Inc. Method and system for efficient task management
US11757946B1 (en) 2015-12-22 2023-09-12 F5, Inc. Methods for analyzing network traffic and enforcing network policies and devices thereof
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US10797888B1 (en) 2016-01-20 2020-10-06 F5 Networks, Inc. Methods for secured SCEP enrollment for client devices and devices thereof
US11178150B1 (en) 2016-01-20 2021-11-16 F5 Networks, Inc. Methods for enforcing access control list based on managed application and devices thereof
US10255215B2 (en) 2016-01-29 2019-04-09 Liqid Inc. Enhanced PCIe storage device form factors
US10791088B1 (en) 2016-06-17 2020-09-29 F5 Networks, Inc. Methods for disaggregating subscribers via DHCP address translation and devices thereof
US11294839B2 (en) 2016-08-12 2022-04-05 Liqid Inc. Emulated telemetry interfaces for fabric-coupled computing units
CN109844722B (zh) 2016-08-12 2022-09-27 利奇得公司 分解式结构交换计算平台
US11880326B2 (en) 2016-08-12 2024-01-23 Liqid Inc. Emulated telemetry interfaces for computing units
US11063758B1 (en) 2016-11-01 2021-07-13 F5 Networks, Inc. Methods for facilitating cipher selection and devices thereof
US10505792B1 (en) 2016-11-02 2019-12-10 F5 Networks, Inc. Methods for facilitating network traffic analytics and devices thereof
US11496438B1 (en) 2017-02-07 2022-11-08 F5, Inc. Methods for improved network security using asymmetric traffic delivery and devices thereof
US10791119B1 (en) 2017-03-14 2020-09-29 F5 Networks, Inc. Methods for temporal password injection and devices thereof
US10812266B1 (en) 2017-03-17 2020-10-20 F5 Networks, Inc. Methods for managing security tokens based on security violations and devices thereof
US10931662B1 (en) 2017-04-10 2021-02-23 F5 Networks, Inc. Methods for ephemeral authentication screening and devices thereof
WO2018200761A1 (en) 2017-04-27 2018-11-01 Liqid Inc. Pcie fabric connectivity expansion card
US10972453B1 (en) 2017-05-03 2021-04-06 F5 Networks, Inc. Methods for token refreshment based on single sign-on (SSO) for federated identity environments and devices thereof
US10795842B2 (en) 2017-05-08 2020-10-06 Liqid Inc. Fabric switched graphics modules within storage enclosures
US11343237B1 (en) 2017-05-12 2022-05-24 F5, Inc. Methods for managing a federated identity environment using security and access control data and devices thereof
US11122042B1 (en) 2017-05-12 2021-09-14 F5 Networks, Inc. Methods for dynamically managing user access control and devices thereof
WO2018210139A1 (zh) * 2017-05-18 2018-11-22 苏州欧普照明有限公司 无线网络节点的配置方法、装置及系统
US11122083B1 (en) 2017-09-08 2021-09-14 F5 Networks, Inc. Methods for managing network connections based on DNS data and network policies and devices thereof
US11483394B2 (en) * 2018-02-08 2022-10-25 Forcepoint Llc Delayed proxy-less network address translation decision based on application payload
US11658995B1 (en) 2018-03-20 2023-05-23 F5, Inc. Methods for dynamically mitigating network attacks and devices thereof
US11044200B1 (en) 2018-07-06 2021-06-22 F5 Networks, Inc. Methods for service stitching using a packet header and devices thereof
US10660228B2 (en) 2018-08-03 2020-05-19 Liqid Inc. Peripheral storage card with offset slot alignment
US10585827B1 (en) 2019-02-05 2020-03-10 Liqid Inc. PCIe fabric enabled peer-to-peer communications
WO2020219801A1 (en) 2019-04-25 2020-10-29 Liqid Inc. Multi-protocol communication fabric control
EP3959604A4 (en) 2019-04-25 2023-01-18 Liqid Inc. MACHINE TEMPLATES FOR DEDICATED COMPUTING UNITS
US11199855B2 (en) 2019-08-20 2021-12-14 Lisandro Chacin System and method for lube cost control on heavy machinery
US11442776B2 (en) 2020-12-11 2022-09-13 Liqid Inc. Execution job compute unit composition in computing clusters

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998022886A1 (en) * 1996-11-20 1998-05-28 Intel Corporation Performance optimizations for computer networks using http

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5774670A (en) * 1995-10-06 1998-06-30 Netscape Communications Corporation Persistent client state in a hypertext transfer protocol based client-server system
US5918013A (en) 1996-06-03 1999-06-29 Webtv Networks, Inc. Method of transcoding documents in a network environment using a proxy server
US6182139B1 (en) * 1996-08-05 2001-01-30 Resonate Inc. Client-side resource-based load-balancing with delayed-resource-binding using TCP state migration to WWW server farm
US5774660A (en) * 1996-08-05 1998-06-30 Resonate, Inc. World-wide-web server with delayed resource-binding for resource-based load balancing on a distributed resource multi-node network
US5787470A (en) * 1996-10-18 1998-07-28 At&T Corp Inter-cache protocol for improved WEB performance
US5941988A (en) 1997-01-27 1999-08-24 International Business Machines Corporation Session and transport layer proxies via TCP glue
US6173322B1 (en) * 1997-06-05 2001-01-09 Silicon Graphics, Inc. Network request distribution based on static rules and dynamic performance data
US6774670B1 (en) * 2002-12-30 2004-08-10 Actel Corporation Intra-tile buffer system for a field programmable gate array

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998022886A1 (en) * 1996-11-20 1998-05-28 Intel Corporation Performance optimizations for computer networks using http

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
1020017005867 - 692280

Also Published As

Publication number Publication date
EP2439896A3 (en) 2013-06-19
EP2439896A2 (en) 2012-04-11
KR20010107955A (ko) 2001-12-07
JP2002529856A (ja) 2002-09-10
EP2439897A2 (en) 2012-04-11
US20020147822A1 (en) 2002-10-10
EP1129412B1 (en) 2018-03-28
US6954780B2 (en) 2005-10-11
EP2159990B1 (en) 2018-07-18
WO2000028433A3 (en) 2000-08-31
EP2439896B1 (en) 2019-01-09
WO2000028433A2 (en) 2000-05-18
EP2159990A1 (en) 2010-03-03
US20020059428A1 (en) 2002-05-16
AU1613300A (en) 2000-05-29
EP1129412A2 (en) 2001-09-05
EP2439897B1 (en) 2020-06-10
EP1129412A4 (en) 2009-04-01
JP4312962B2 (ja) 2009-08-12
EP2439897A3 (en) 2013-06-19
US6411986B1 (en) 2002-06-25

Similar Documents

Publication Publication Date Title
KR100723320B1 (ko) 인터넷 클라이언트-서버 멀티플렉서
US11916993B2 (en) System providing faster and more efficient data communication
US9148493B2 (en) Apparatus, method and computer program product for efficiently pooling connections between clients and servers
US8484319B2 (en) Content delivery network (CDN) content server request handling mechanism with metadata framework support
US7490162B1 (en) Method and system for forwarding messages received at a traffic manager
US7228562B2 (en) Stream server apparatus, program, and NAS device

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
N231 Notification of change of applicant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130502

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140508

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150416

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160419

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170420

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180510

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190517

Year of fee payment: 13