KR20010107955A - 인터넷에서 사용되는 클라이언트 대 서버 멀티플렉서 - Google Patents

인터넷에서 사용되는 클라이언트 대 서버 멀티플렉서 Download PDF

Info

Publication number
KR20010107955A
KR20010107955A KR1020017005867A KR20017005867A KR20010107955A KR 20010107955 A KR20010107955 A KR 20010107955A KR 1020017005867 A KR1020017005867 A KR 1020017005867A KR 20017005867 A KR20017005867 A KR 20017005867A KR 20010107955 A KR20010107955 A KR 20010107955A
Authority
KR
South Korea
Prior art keywords
server
segment
connection
client
modified
Prior art date
Application number
KR1020017005867A
Other languages
English (en)
Other versions
KR100723320B1 (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

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 계층으로 그 패킷을 전송한다. 그후, 이 패킷이 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) 중 각 하나에 대해 중복 서버 전체에서 중복되는, 빈번하게 액세스되는 내용을 요구한다. 이것은 서버 자원의 낭비를 나타낸다.
본 발명은 일반적으로 인터넷에서 사용되는 클라이언트 대 서버 어플리케이션에 관한 것으로, 특히 인터넷을 통하여 클라이언트와 서버 사이의 접속을 멀티플렉싱하는 장치 및 방법에 관한 것이다.
도 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부는 세그먼트라고 칭한다. 세그먼트는 TCP 헤더 및 데이터를 구비한다. 시퀀스 번호는 전송 TCP로부터 수신 TCP로의 데이터의 문자열에 있어서의바이트이고, 세그먼트 표시에 있어서 데이터의 제1 바이트와 동일하다. 교환되는 모든 바이트가 넘버링되기 때문에, 확인 번호는 수신이 기대되는 확인의 송신자의 다음 시퀀스 번호를 포함한다. 따라서, 이것은 시퀀스 번호에 성공적으로 수신된 데이터의 최종 바이트 중 1을 더한 것이다. 체크섬(checksum)은 TCP 세그먼트, 즉 TCP 헤더 및 TCP 데이터를 커버한다. 이것은 계산되어 송신자에 의해 저장된 후 수신자에 의해 검증되어야 하는 필수 필드(mandatory field)이다.
클라이언트로부터 의도된 서버로의 인바운드 패킷(inbound packet)의 경로 또는 서버로부터 클라이언트로의 아웃바운드 패킷(outbound packet)의 경로를 성공적으로 결정하기 위해서는, 인터페이스부(202)는 "네트워크 어드레스 번역(network address translation)"으로 알려져 있는 프로세스를 채택한다. 네트워크 어드레스 번역은 종래 기술에서 잘 알려져 있고, URLhttp://www.safety.net/RFC1631.txt.에서 발견할 수 있는 코멘트를 위한 요구[RFC: request for comments] 1631에 의해 지정된다.
그러나, 클라이언트와 서버 사이의 접속을 이음새없이 스플라이스(splice)하기 위해서는, 또한 본 발명은 이하에 "접속 멀티플렉싱(connection multiplexing)"이라고 칭하는 새로운 번역 기술을 채택한다. 이 기술에 따르면, 본 발명은 TCP 프로토콜 레벨에서 패킷의 시퀀스 번호 및 확인 번호를 수정함으로써 패킷을 번역한다. 이 기술의 확실한 잇점은 어플리케이션 계층이 필요없다는 것이다.
도 4를 참조하면, 패킷의 네트워크 어드레스는 단계(402)에 도시된 바와 같이 번역된다. 인바운드 패킷(즉, 클라이언트로부터 수신되는 패킷)의 경우에 있어서는, 패킷의 발신원 네트워크 어드레스가 인터페이스부의 출력 포트의 어드레스로 변경되고, 목적지 네트워크 어드레스가 의도된 서버의 어드레스로 변경된다. 아웃바운드 패킷(즉, 서버로부터 수신되는 패킷)의 경우에 있어서는, 발신원 네트워크 어드레스가 서버의 어드레스로부터 인터페이스부의 출력 포트의 어드레스로 변경되고, 목적지 어드레스가 인터페이스부의 어드레스로부터 요구하는 클라이언트의 어드레스로 변경된다. 또한 단계(404 및 406)에 도시되고 이하에 기술되는 바와 같이 패킷의 시퀀스 번호 및 확인 번호가 번역된다. 최종적으로, 단계(408)에 도시된 바와 같이 패킷의 체크섬이 이들 번역을 설명하기 위해 다시 계산된다.
도 5는 바람직한 실시예에 따른 본 발명의 접속 풀링에 대한 국면을 도시하는 메시지 흐름도이다. 도 5는 1개의 서버(S)에 대해 2개의 클라이언트(C1 및 C2)를 접속하는 인터페이스부(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)는 네트워크 어드레스 2에 서버(S)를 지정하는 이 요구를 매핑한다. 또한, 흐름선(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)에 GET 요구를 매핑하고, 서버(S)로 그 GET 요구를 진행시킨다. 흐름선(522)으로 도시된 바와 같이 인터페이스부(202)는 서버(S)로부터 응답을 수신하고, 흐름선(524)으로 도시된 바와 같이 서버(S)로부터 수신한 응답을 클라이언트(C2)로 진행시킨다. 최종적으로, 흐름선(526)으로 도시된 바와 같이 인터페이스부(202)는 클라이언트(C2)와의 접속을 폐쇄한다. 일단, 인터페이스부(202)는 다시 서버(S)와의 접속을 폐쇄하지 않는다. 사실, 인터페이스부(202)는 접속을 개방하고 있는 동안 추가적인 데이터 흐름을 조정한다.
흐름선(524)으로 도시된 바와 같이, 그 결과 인터페이스부(202)가 클라이언트(C2)와의 접속을 폐쇄하는 복수개의 시나리오가 있다. 예를 들어, 일단 모든 요구된 데이터를 검색한 클라이언트를 발생시키는 FIN(종결) 명령을 개시할 수 있다. 또한 클라이언트는 RST(리셋) 명령을 개시할 수 있다. 또한, 인터페이스부(202)와 클라이언트 사이의 접속을 폐쇄하면, RST 명령이 수행되는 복수의 정리 작업(housekeeping) 동작으로 되어 서버측의 접속을 순조롭게 유지한다. 특히, TCP 프로토콜은 RST 명령이 올바른 SEQ(시퀀스) 번호를 갖기 때문에 서버가 세그먼트를 수신하는 것을 보증한다. 그러나, RST 명령이 올바른 ACK(확인) 번호를 갖는지 보증하지는 못한다. 이 시나리오를 처리하기 위해서는, 인터페이스부(202)는 서버에 의해 전송되는 데이터의 바이트 및 클라이언트에 의해 확인되는 바이트의 추적을 유지한다. 클라이언트가 서버의 모든 데이터를 아직 확인하지 않았다면, 인터페이스부(202)는 비확인된 바이트를 계산하여, ACK 신호를 서버로 전송한다. 또한, 서버측의 PCB가 일시 중지된 큐(timeout queue) 상에 위치될 수 있어 소정의 미결된 서버의 데이터가 드레인으로 전송될 수 있다.
또한, 비록 도 5에 도시하지는 않았지만, 또한 서버는 서버 자체와 인터페이스부(202) 사이의 접속을 폐쇄할 수 있다. 서버는 FIN 명령을 인터페이스부(202)로전송한다. 이 경우에 있어서는, 서버와 인터페이스부(202)와의 접속 및 인터페이스부(202)와 클라이언트 사이의 접속 양쪽 모두가 폐쇄된다.
본 발명의 또 다른 국면은 서버가 접속을 폐쇄하는 경우를 최소화함으로써 서버로부터 접속 처리의 오프로드(offload)를 최소화하는 것이다. 이하 기술하는 세 가지 경우가 있다.
(1) 프로토콜 버젼 HTTP/1.1이 사용된다. 이 경우에 있어서는, 명백하게 킵 얼라이브 헤더(Keep-Alive header)가 필요치 않다. 초기화함으로써, 서버가 접속 개방을 유지한다. 클라이언트가 접속을 폐쇄한다. 본 발명은 서버측의 접속을 재사용함으로써 서버를 오프로드한다.
(2) 프로토콜 HTTP/1.0이 사용되고, 클라이언트가 "접속: 킵 얼라이브" 헤더를 제공한다. 이 경우에 있어서는, 서버가 접속을 개방을 유지한다. 클라이언트가 접속을 폐쇄한다. 본 발명은 서버측의 접속을 재사용함으로써 서버를 오프로드한다.
(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)에 있어서는, 클라이언트(C1)로부터 새로운 접속 요구를 지시하는 TCP 헤더에서의 SYN 플래그가 설정된다. 클라이언트(C1)가 2000의 개시 시퀀스 번호 및 2000의 확인 번호를 달성한다. 흐름(602B)으로 도시된 바와 같이, 인터페이스부(202)가 4000의 개시 시퀀스 번호를 지정하고, 확인 번호를 2001로 증가시키는 SYN ACK 세그먼트를 응신한다. 네트워크내의 각 엔티티(예컨대, 클라이언트, 서버 및 인터페이스부)는 종래 기술에서 잘 알려져 있는 바와 같이 그 자체의 독창적인 시퀀스 번호 및/또는 확인 번호를 설정한다. 흐름(602C)으로 도시된 바와 같이, 클라이언트(C1)가 2001의 시퀀스 번호를 지정하고, 확인 번호를 4001로 증가시키는 ACK 세그먼트를 응신한다. 그후 흐름(604)으로 도시된 바와 같이 클라이언트(C1)가 49 바이트의 길이를 지정하는 GET 세그먼트를 전송한다.
흐름(606A)으로 도시된 바와 같이, 인터페이스부(202)가 서버(S)와 여분의 개방 접속이 존재하지 않음을 판정함에 따라 SYN 세그먼트를 1950의 개시 시퀀스 번호를 지정하는 서버(S)로 전송한다. 흐름(606B)으로 도시된 바와 같이, 서버(S)가 6000의 개시 시퀀스 번호를 지정하고, 확인 번호를 1951로 증가시키는 SYN ACK 세그먼트를 응신한다. 흐름(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 헤더에 있어서 클라이언트(C2)로부터 새로운 접속 요구를 지시하는 SYN 플래그가 설정된다. 클라이언트(C2)는 999의 개시 시퀀스 번호 및 999의 확인 번호를 달성한다. 인터페이스부(202)는 4999의 개시 시퀀스 번호를 지정하고, 확인 번호를 1000으로 증가시키는 SYN ACK 세그먼트를 응신한다. 흐름(616C)으로 도시된 바와 같이, 클라이언트(C2)는 1000의 시퀀스 번호를 지정하고, 확인 번호를 5000으로 증가시키는ACK 세그먼트를 응신한다. 흐름(618)으로 도시된 바와 같이, 그후 클라이언트(C2)는 50 바이트의 길이를 지정하는 GET 세그먼트를 전송한다.
인터페이스부(202)가 서버(S)와 여분의 개방 접속이 존재하지 않음을 결정함에 따라 인터페이스부는 그 접속을 사용한다. 서버(S)와 새로운 접속을 개방할 필요는 없다. 인터페이스부가 서버(S)와 이전에 개방된 접속을 사용하기 때문에, 인터페이스부(202)는 이전에 개방된 접속 상에서 이전에 교환하는 동안 달성되는 시퀀스 및 확인 번호에 따른 GET 세그먼트의 시퀀스 및 확인 번호를 번역한다. 이 실시예에 있어서는, 인터페이스부(202)는 흐름(606)에서 달성되는 개시 시퀀스 및 확인 번호를 사용하고, 가장 최근의 흐름[즉, 흐름(612C)]에서 사용한 시퀀스 및 확인 번호로 다시 점유시킨다. 이에 따라, 흐름선(620)으로 도시된 바와 같이 인터페이스부(202)는 2000의 시퀀스 번호, 7000의 확인 번호 및 50의 길이를 갖는 GET 세그먼트를 클라이언트(C2)로부터 서버(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)는 복수의 서버와의 접속을 유지하고, 클라이언트의 요구를 클라이언트의 요구로 지정된 경로명에 기초하여 이들 서버로 경로짓는다. 우선, 단계(702)에 도시된 바와 같이 인터페이스부(202)가 서버와의 접속을 개방한다. 다음에, 단계(704)에 도시된 바와 같이 클라이언트의 요구에 응답하여 인터페이스부(202)는 클라이언트로의 접속을 개방하고, 클라이언트로부터 요구를 수신하여 경로명을 사용하는 데이터를 검색한다. 단계(706)에 도시된 바와 같이, 인터페이스부(202)는 경로명이 지정하는 내용을 호스팅하는 서버를 선택한다. 이와 다른 실시예에 있어서는, 인터페이스부(202)는 서버의 부하 및 서버의 상태와 같은 다른 사전정의된 정책을 상담하여 적절한 서버를 선택한다. 인터페이스부(202)는 그러한 서버의 데이터베이스 및 서버 팜을 관리 및 유지한다. 다른 사전정의된 정책 중에 있어서는, 이 데이터베이스의 정보는 인터페이스부(202)가 수신 패킷을 올바른 서버로 향하게 할 수 있는 현재 활성화된 정책들 및 규칙들을 구비한다. 네트워크 조건 및 소망하는 서비스에 따르면, 이들 정책 및 규칙이 매우 신속하게 변경될 수 있다.
단계(708)에 도시된 바와 같이, 그후 인터페이스부(202)는 요구를 번역하여, 번역된 요구를 선택된 서버로 전송한다. 이 번역은 일반적으로 상기 도 4에 대해서 기술되고, 이하 보다 상세히 기술된다.
단계(710)에 도시된 바와 같이, 인터페이스부는 서버로부터 응답을 수신한다. 단계(712)에 도시된 바와 같이, 그후 인터페이스부(202)는 그 응답을 번역하여, 클라이언트 상으로 그 번역된 응답을 전송한다. 단계(708)에서와 같이, 단계(712)의 번역이 이하에 상세히 기술된다. 최종적으로, 단계(714)에 도시된 바와 같이 인터페이스부(202)는 클라이언트와의 접속을 폐쇄한다.
도 8은 바람직한 실시예에 따른 본 발명의 접속 분배 국면을 도시하는 메시지 흐름도이다. 도 8은 두 개의 서버(S1 및 S2)에 클라이언트(C2)를 접속하는 인터페이스부(202)를 도시한다. 도 7에 도시된 단계(702)에 도시된 바와 같이, 이 실시예에 있어서는 서버(S1 및 S2)와 이전에 개방된 접속임을 가정한다.
우선, 인터페이스부(202)는 클라이언트(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)가 서버(S)와의 접속을 폐쇄하기보다는 접속을 개방하고 있는 동안 추가적인 데이터 흐름을 수정한다.
다음에, 흐름(812)으로 도시된 바와 같이 추가적인 GET 요구가 클라이언트(C2)로부터 수신된다. 이 실시예에서는 인터페이스부(202)와 클라이언트(C2) 사이의 접속이 연속적인 GET 요구 사이에서 폐쇄되었는지 여부가 중요하지 않다. 또한, 이 실시예에서는 이 GET 요구가 이전의 GET 요구와 동일한 클라이언트로부터 발신되었는지 여부가 중요하지 않다. 이것은 비록 클라이언트로부터의 GET 요구가 이전의 GET 요구와 동일한 네트워크 어드레스(네트워크 어드레스 1)로 향하더라도, 이전의 요구와는 상이한 서버[서버(S2)]에 매핑된다는 것을 의미한다. 본 발명의 접속을 멀티플렉싱하는 특징에 기인하고, 이 방향 변경은 요구한 발신자를 명백하게 한다.
인터페이스부(202)는 클라이언트(C2)로부터 GET 요구를 수신한다. GET 요구는 경로명 /products/new.html을 지정한다. 인터페이스부(202)는 이 경로명에 대응하고 서버(S2) 상에 상주하는 웹 페이지를 결정한다. 이에 따라, 비록 도 8에 도시된 GET 요구가 동일 네트워크 어드레스를 지정하더라도, 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의 개시 시퀀스 번호를 지정하고, 확인 번호를 1000으로 증가시키는 SYN ACK 세그먼트를 응신한다. 흐름(902C)으로 도시된 바와 같이, 클라이언트(C2)는 1000의 시퀀스 번호를 지정하고, 확인 번호를 5000으로 증가시키는 ACK 세그먼트를 응신한다. 흐름(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)는 서버 팜에 있어서 서버 세트 사이의 클라이언트 네트워크 접속을 분배(국부적 또는 지리적 분배)한다. 본 발명은 부하 조정 기능과 용이하게 조합될 수 있다.
- 밴드폭 관리자(Bandwidth manager)는 네트워크 트래픽 및 계량 패킷 흐름(meter packet flow)를 모니터링한다. 또한 이들 장치는 본 발명을 사용할 수 있다.
- 방화벽(Firewall)은 패킷을 모니터링하고, 인증된 패킷만을 통과하도록 허가한다. 본 발명은 방화벽내에 추가적인 특징을 제공하기 위해 사용될 수 있다.
- 또한 라우터 및 스위치가 네트워크 트래픽의 경로에 위치된다. 산업상의 추세는 이들 장치내에 (부하 조정, 밴드폭 관리 및 방화벽 기능성과 같은) 추가적인 기능성을 집적화하는 것이다. 따라서, 본 발명은 라우터내로 용이하게 결합될 수 있다.
상기 장치의 각 장치내로 본 발명의 지정한 집적은 지정한 구현이다.
또한 본 발명은 네트워크 접속의 종단점인 컴퓨터 시스템내에 적용될 수 있다. 이 경우에 있어서, 부가 카드(add-on card)는 본 발명을 구현하기 위해 사용될 수 있기 때문에, 컴퓨터 시스템내에 주처리 요소를 오프로드한다.
결론
상기한 바람직한 실시예는 당업자가 본 발명을 실시하거나 사용할 수 있도록 하기 위해 제공된다. 당업자에게는 이들 실시예에 대한 여러가지 수정이 용이하게 명백해질 것이고, 본 명세서에 정의되는 일반적인 원리는 독창적인 기능을 사용하는 일없이 다른 실시예에 적용될 수 있다. 따라서, 본 발명은 본 명세서에 도시되는 실시예로 제한되는 경향은 없지만, 본 명세서에 개시되는 원리 및 새로운 특징과 일치하는 가장 넓은 범주에 일치된다.
본 발명은 네트워크 클라이언트 대 서버를 멀티플렉싱하기 위한 시스템, 방법 및 컴퓨터 프로그램 제품을 제공한다. 바람직한 실시예에 있어서는, 본 발명은 복수의 서버를 인터넷에 결합하고, 다시 인터넷에 결합되어 있는 복수의 클라이언트에 접속하는 인터페이스부내에 구현된다.
본 발명의 일 국면에 따르면, 본 발명의 방법은 클라이언트와 인터페이스부 사이의 접속을 개방하는 단계와; 인터페이스부와 서버 사이에 개방된 여분의 접속이 없는 경우, 인터페이스부와 서버 사이의 접속을 개방하는 단계와; 클라이언트가 이 접속을 통해 서버 상의 정보에 액세스할 수 있는 단계와; 인터페이스부와 서버 사이의 접속들을 개방하고 있는 동안 클라이언트와 인터페이스부 사이의 접속을 폐쇄하는 단계를 구비한다.
본 발명의 다른 국면에 따르면, 본 발명의 방법은 네트워크 어드레스 및 경로명을 사용하여 클라이언트로부터 요구를 수신하여 데이터를 검색하는 단계와; 경로명, 서버의 부하 및 서버의 상태 중 적어도 하나를 구비하는 사전정의된 정책 기능으로서 데이터를 저장하는 서버를 선택하는 단계와; 이전에 개방된 접속을 사용하여 서버로부터 데이터를 검색하는 단계와; 그 데이터를 클라이언트로 전송하는 단계를 구비한다.
본 발명의 하나의 잇점은 본 명세서에서 "접속 풀링(connection pooling)"이라고 칭하는 기술을 통하여 접속 부하에 대한 문제를 해결하는 것이다.
본 발명의 다른 잇점은 본 명세서에서 "접속 분배(connection distribution)"라고 칭하는 기술을 사용하여 내용 중복에 대한 문제를 해결하는 것이다.
본 발명의 또 다른 잇점은 본 명세서에서 "접속 멀티플렉싱(connection multiplexing)"이라고 칭하는 기술을 사용하여 서버와 클라이언트의 접속 정책을 명백하게 하는 것이다.

Claims (38)

  1. 클라이언트와 인터페이스부 사이의 접속을 개방하는 수단과;
    상기 인터페이스부와 서버 사이에 여분의 접속이 개방되어 있지 않은 경우, 상기 인터페이스부와 상기 서버 사이의 접속을 개방하는 수단과;
    상기 클라이언트가 상기 접속들을 통해 상기 서버 상의 정보에 액세스할 수 있도록 허가하는 수단과;
    상기 인터페이스부와 상기 서버 사이의 상기 접속을 개방하고 있는 동안, 상기 클라이언트와 상기 인터페이스부 사이의 상기 접속을 폐쇄하는 수단을 포함하는 장치.
  2. 제1항에 있어서, 추가적인 클라이언트와 상기 인터페이스부 사이의 접속을 개방하는 수단과; 상기 추가적인 클라이언트가 상기 추가적인 클라이언트와 상기 인터페이스부 사이의 상기 접속 및 상기 인터페이스부와 상기 서버 사이의 상기 접속을 통해 상기 서버 상의 정보에 액세스할 수 있도록 허가하는 수단을 더 포함하는 장치.
  3. 제1항에 있어서, 상기 클라이언트와 상기 인터페이스부 사이의 상기 접속을 개방하는 상기 수단은 상기 인터페이스부에 대응하는 네트워크 어드레스를 사용하여 접속을 개방하기 위해 요구를 수신하는 수단과; 상기 서버에 대응하는 경로명을사용하여 데이터를 검색하기 위해 요구를 수신하는 수단을 포함하는 것인 장치.
  4. 제3항에 있어서, 상기 추가적인 클라이언트와 상기 인터페이스부 사이의 상기 접속을 개방하는 상기 수단은 상기 네트워크 어드레스의 기능으로서 상기 서버를 선택하는 수단을 포함하는 것인 장치.
  5. 제4항에 있어서, 상기 액세스 허가 수단은 상기 경로명을 사용하여 상기 서버로부터 상기 데이터를 검색하는 수단을 포함하는 것인 장치.
  6. 제5항에 있어서, 상기 액세스 허가 수단은 상기 데이터를 상기 클라이언트로 전송하는 수단을 더 포함하는 것인 장치.
  7. 제5항에 있어서, 데이터를 검색하기 위해 요구를 수신하는 상기 수신 수단은 시퀀스 및 확인 파라미터들을 갖는 GET 세그먼트를 수신하는 수단을 포함하고, 상기 검색 수단은 상기 파라미터들을 수정하여 수정된 GET 세그먼트를 생성하는 수단과; 상기 수정된 GET 세그먼트를 상기 서버로 전송하는 수단을 포함하는 것인 장치.
  8. 제7항에 있어서, 상기 검색 수단은 "접속:킵 얼라이브(Connection:Keep-Alive)" 헤더를 상기 수정된 GET 세그먼트내로 삽입하는 수단과; 상기 서버로부터수신되는 상기 확인 파라미터로부터 상기 "접속:킵 얼라이브" 헤더를 상기 수정된 GET 세그먼트내로 삽입함으로써 더해지는 바이트의 수를 빼는 수단과; 상기 수정된 GET 세그먼트에 후속하는 패킷을 상기 서버로 전송하기 이전의 상기 시퀀스 번호에 상기 "접속:킵 얼라이브" 헤더를 상기 수정된 GET 세그먼트내로 삽입함으로써 더해지는 바이트의 수를 더하는 수단을 더 포함하는 것인 장치.
  9. 제7항에 있어서, 상기 검색 수단은 추가적인 시퀀스 및 확인 파라미터들을 갖는 RESP 세그먼트를 수신하는 수단과; 상기 추가적인 파라미터들을 수정하여 수정된 RESP 세그먼트를 생성하는 수단과; 상기 수정된 RESP 세그먼트를 상기 클라이언트로 전송하는 수단을 더 포함하는 것인 장치.
  10. 제5항에 있어서, 데이터를 검색하기 위해 요구를 수신하는 상기 수신 수단은 시퀀스 및 확인 파라미터들을 갖는 제1 GET 세그먼트를 수신하는 수단을 포함하고, 상기 검색 수단은 상기 파라미터들을 수정하여 수정된 파라미터들을 생성하는 수단과; 상기 수정된 파라미터들을 갖는 제2 GET 세그먼트를 상기 서버로 전송하는 수단을 포함하는 것인 장치.
  11. 제7항에 있어서, 상기 검색 수단은 추가적인 시퀀스 및 확인 파라미터들을 갖는 제1 RESP 세그먼트를 수신하는 수단과; 상기 추가적인 파라미터들을 수정하여 추가적인 수정된 파라미터들을 생성하는 수단과; 상기 추가적인 수정된 파라미터들을 갖는 제2 RESP 세그먼트를 상기 클라이언트로 전송하는 수단을 더 포함하는 것인 장치.
  12. 데이터를 검색하기 위해 네트워크 어드레스 및 경로명을 사용하여 클라이언트로부터 요구를 수신하는 수단과;
    상기 경로명, 상기 서버의 부하 및 상기 서버의 상태 중 적어도 하나를 구비하는 사전정의된 정책들의 기능으로서 상기 데이터를 저장하고 있는 서버를 선택하는 수단과;
    이전에 개방된 접속을 사용하여 상기 서버로부터 상기 데이터를 수신하는 수단과;
    상기 데이터를 상기 클라이언트로 전송하는 수단을 포함하는 장치.
  13. 제12항에 있어서, 상기 수신 수단은 호스트로의 접속을 개방하기 위해 상기 네트워크 어드레스를 사용하여 상기 클라이언트로부터 요구를 수신하는 수단과; 데이터를 검색하기 위해 상기 경로명을 사용하여 상기 클라이언트로부터 요구를 수신하는 수단을 포함하는 것인 장치.
  14. 제12항에 있어서, 추가적인 데이터를 검색하기 위해 상기 네트워크 어드레스 및 추가적인 경로명을 사용하여 추가적인 요구를 수신하는 수단과; 상기 추가적인 경로명의 기능으로서 추가적인 서버를 선택하는 수단과; 상기 추가적인 서버로부터상기 추가적인 데이터를 검색하는 수단을 더 포함하는 장치.
  15. 제12항에 있어서, 데이터를 검색하기 위해 요구를 수신하는 상기 수신 수단은 시퀀스 및 확인 파라미터들을 갖는 제1 GET 세그먼트를 수신하는 수단을 포함하고, 상기 검색 수단은 상기 파라미터들을 수정하여 수정된 GET 세그먼트를 생성하는 수단과; 상기 수정된 GET 세그먼트를 상기 서버로 전송하는 수단을 포함하는 것인 장치.
  16. 제15항에 있어서, 상기 검색 수단은 "접속:킵 얼라이브" 헤더를 상기 수정된 GET 세그먼트내로 삽입하는 수단과; 상기 서버로부터 수신되는 상기 확인 파라미터로부터 상기 "접속:킵 얼라이브" 헤더를 상기 수정된 GET 세그먼트내로 삽입함으로써 더해지는 바이트의 수를 빼는 수단과; 상기 수정된 GET 세그먼트에 후속하는 패킷을 상기 서버로 전송하기 이전의 상기 시퀀스 번호에 상기 "접속:킵 얼라이브" 헤더를 상기 수정된 GET 세그먼트내로 삽입함으로써 더해지는 바이트의 수를 더하는 수단을 더 포함하는 것인 장치.
  17. 제15항에 있어서, 상기 검색 수단은 추가적인 시퀀스 및 확인 파라미터들을 갖는 제1 RESP 세그먼트를 수신하는 수단과; 상기 추가적인 파라미터들을 수정하여 수정된 RESP 세그먼트를 생성하는 수단과; 상기 수정된 RESP 세그먼트를 상기 클라이언트로 전송하는 수단을 더 포함하는 것인 장치.
  18. 제12항에 있어서, 데이터를 검색하기 위해 요구를 수신하는 상기 수신 수단은 시퀀스 및 확인 파라미터들을 갖는 제1 GET 세그먼트를 수신하는 수단을 포함하고, 상기 검색 수단은 상기 파라미터들을 수정하여 수정된 파라미터들을 생성하는 수단과; 상기 수정된 파라미터를 갖는 제2 GET 세그먼트를 상기 서버로 전송하는 수단을 포함하는 것인 장치.
  19. 제15항에 있어서, 상기 검색 수단은 추가적인 시퀀스 및 확인 파라미터들을 갖는 제1 RESP 세그먼트를 수신하는 수단과; 상기 추가적인 파라미터들을 수정하여 추가적인 수정된 파라미터들을 생성하는 수단과; 상기 추가적인 수정된 파라미터들을 갖는 제2 RESP 세그먼트를 상기 클라이언트로 전송하는 수단을 더 포함하는 것인 장치.
  20. 클라이언트와 인터페이스부 사이의 접속을 개방하는 단계와;
    상기 인터페이스부와 서버 사이에 여분의 접속이 개방되어 있지 않은 경우, 상기 인터페이스부와 상기 서버 사이의 접속을 개방하는 단계와;
    상기 클라이언트가 상기 접속을을 통해 상기 서버 상의 정보에 액세스할 수 있도록 허가하는 단계와;
    상기 인터페이스부와 상기 서버 사이의 상기 접속을 개방하고 있는 동안, 상기 클라이언트와 상기 인터페이스부 사이의 상기 접속을 폐쇄하는 단계를 포함하는방법.
  21. 제20항에 있어서, 추가적인 클라이언트와 상기 인터페이스부 사이의 접속을 개방하는 단계와; 상기 추가적인 클라이언트가 상기 추가적인 클라이언트와 상기 인터페이스부 사이의 상기 접속 및 상기 인터페이스부와 상기 서버 사이의 상기 접속을 통해 상기 서버 상의 정보에 액세스할 수 있도록 허가하는 단계를 더 포함하는 것인 방법.
  22. 제20항에 있어서, 상기 클라이언트와 상기 인터페이스부 사이의 상기 접속을 개방하는 상기 단계는 상기 인터페이스부에 대응하는 네트워크 어드레스를 사용하여 접속을 개방하기 위해 요구를 수신하는 단계와; 상기 서버에 대응하는 경로명을 사용하여 데이터를 검색하기 위해 요구를 수신하는 단계를 포함하는 것인 방법.
  23. 제22항에 있어서, 상기 추가적인 클라이언트와 상기 인터페이스부 사이의 상기 접속을 개방하는 상기 단계는 상기 네트워크 어드레스의 기능으로서 상기 서버를 선택하는 단계를 포함하는 것인 방법.
  24. 제23항에 있어서, 상기 액세스 허가 단계는 상기 경로명을 사용하여 상기 서버로부터 상기 데이터를 검색하는 단계를 포함하는 것인 방법.
  25. 제24항에 있어서, 상기 액세스 허가 단계는 상기 데이터를 상기 클라이언트로 전송하는 단계를 더 포함하는 것인 방법.
  26. 제24항에 있어서, 데이터를 검색하기 위해 요구를 수신하는 상기 수신 단계는 시퀀스 및 확인 파라미터들을 갖는 GET 세그먼트를 수신하는 단계를 포함하고, 상기 검색 단계는 상기 파라미터들을 수정하여 수정된 GET 세그먼트를 생성하는 단계와; 상기 수정된 GET 세그먼트를 상기 서버로 전송하는 단계를 포함하는 것인 방법.
  27. 제26항에 있어서, 상기 검색 단계는 "접속:킵 얼라이브" 헤더를 상기 수정된 GET 세그먼트내로 삽입하는 단계와; 상기 서버로부터 수신되는 상기 확인 파라미터로부터 상기 "접속:킵 얼라이브" 헤더를 상기 수정된 GET 세그먼트내로 삽입함으로써 더해지는 바이트의 수를 빼는 단계와; 상기 수정된 GET 세그먼트에 후속하는 패킷을 상기 서버로 전송하기 이전의 상기 시퀀스 번호에 상기 "접속:킵 얼라이브" 헤더를 상기 수정된 GET 세그먼트내로 삽입함으로써 더해지는 바이트의 수를 더하는 단계를 더 포함하는 것인 방법.
  28. 제26항에 있어서, 상기 검색 단계는 추가적인 시퀀스 및 확인 파라미터들을 갖는 RESP 세그먼트를 수신하는 단계와; 상기 추가적인 파라미터들을 수정하여 수정된 RESP 세그먼트를 생성하는 단계와; 상기 수정된 RESP 세그먼트를 상기 클라이언트로 전송하는 단계를 더 포함하는 것인 방법.
  29. 제24항에 있어서, 데이터를 검색하기 위해 요구를 수신하는 상기 수신 단계는 시퀀스 및 확인 파라미터들을 갖는 제1 GET 세그먼트를 수신하는 단계를 포함하고, 상기 검색 단계는 상기 파라미터들을 수정하여 수정된 파라미터들을 생성하는 단계와; 상기 수정된 파라미터들을 갖는 제2 GET 세그먼트를 상기 서버로 전송하는 단계를 포함하는 것인 방법.
  30. 제26항에 있어서, 상기 검색 단계는 추가적인 시퀀스 및 확인 파라미터들을 갖는 제1 RESP 세그먼트를 수신하는 단계와; 상기 추가적인 파라미터들을 수정하여 추가적인 수정된 파라미터들을 생성하는 단계와; 상기 추가적인 수정된 파라미터들을 갖는 제2 RESP 세그먼트를 상기 클라이언트로 전송하는 단계를 더 포함하는 것인 방법.
  31. 데이터를 검색하기 위해 네트워크 어드레스 및 경로명을 사용하여 클라이언트로부터 요구를 수신하는 단계와;
    상기 경로명, 상기 서버의 부하 및 상기 서버의 상태 중 적어도 하나를 구비하는 사전정의된 정책들의 기능으로서 상기 데이터를 저장하고 있는 서버를 선택하는 단계와;
    이전에 개방된 접속을 사용하여 상기 서버로부터 상기 데이터를 수신하는 단계와;
    상기 데이터를 상기 클라이언트로 전송하는 단계를 포함하는 방법.
  32. 제31항에 있어서, 상기 수신 단계는 호스트로의 접속을 개방하기 위해 상기 네트워크 어드레스를 사용하여 상기 클라이언트로부터 요구를 수신하는 단계와; 데이터를 검색하기 위해 상기 경로명을 사용하여 상기 클라이언트로부터 요구를 수신하는 단계를 포함하는 것인 방법.
  33. 제31항에 있어서, 추가적인 데이터를 검색하기 위해 상기 네트워크 어드레스 및 추가적인 경로명을 사용하여 추가적인 요구를 수신하는 단계와; 상기 추가적인 경로명의 기능으로서 추가적인 서버를 선택하는 단계와; 상기 추가적인 서버로부터 상기 추가적인 데이터를 검색하는 단계를 더 포함하는 방법.
  34. 제31항에 있어서, 데이터를 검색하기 위해 요구를 수신하는 상기 수신 단계는 시퀀스 및 확인 파라미터들을 갖는 제1 GET 세그먼트를 수신하는 단계를 포함하고, 상기 검색 단계는 상기 파라미터들을 수정하여 수정된 GET 세그먼트를 생성하는 단계와; 상기 수정된 GET 세그먼트를 상기 서버로 전송하는 단계를 포함하는 것인 방법.
  35. 제34항에 있어서, 상기 검색 단계는 "접속:킵 얼라이브" 헤더를 상기 수정된GET 세그먼트내로 삽입하는 단계와; 상기 서버로부터 수신되는 상기 확인 파라미터로부터 상기 "접속:킵 얼라이브" 헤더를 상기 수정된 GET 세그먼트내로 삽입함으로써 더해지는 바이트의 수를 빼는 단계와; 상기 수정된 GET 세그먼트에 후속하는 패킷을 상기 서버로 전송하기 이전의 상기 시퀀스 번호에 상기 "접속:킵 얼라이브" 헤더를 상기 수정된 GET 세그먼트내로 삽입함으로써 더해지는 바이트의 수를 더하는 단계를 더 포함하는 것인 방법.
  36. 제34항에 있어서, 상기 검색 단계는 추가적인 시퀀스 및 확인 파라미터들을 갖는 제1 RESP 세그먼트를 수신하는 단계와; 상기 추가적인 파라미터들을 수정하여 수정된 RESP 세그먼트를 생성하는 단계와; 상기 수정된 RESP 세그먼트를 상기 클라이언트로 전송하는 단계를 더 포함하는 것인 방법.
  37. 제31항에 있어서, 데이터를 검색하기 위해 요구를 수신하는 상기 수신 단계는 시퀀스 및 확인 파라미터들을 갖는 제1 GET 세그먼트를 수신하는 단계를 포함하고, 상기 검색 단계는 상기 파라미터들을 수정하여 수정된 파라미터들을 생성하는 단계와; 상기 수정된 파라미터를 갖는 제2 GET 세그먼트를 상기 서버로 전송하는 단계를 포함하는 것인 방법.
  38. 제34항에 있어서, 상기 검색 단계는 추가적인 시퀀스 및 확인 파라미터들을 갖는 제1 RESP 세그먼트를 수신하는 단계와; 상기 추가적인 파라미터들을 수정하여추가적인 수정된 파라미터들을 생성하는 단계와; 상기 추가적인 수정된 파라미터들을 갖는 제2 RESP 세그먼트를 상기 클라이언트로 전송하는 단계를 더 포함하는 것인 방법.
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 true KR20010107955A (ko) 2001-12-07
KR100723320B1 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100837434B1 (ko) * 2006-09-29 2008-06-12 삼성전자주식회사 클라이언트와 서버 간의 인터페이스를 수행하는 매개장치및 그의 인터페이스방법

Families Citing this family (198)

* 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
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

Family Cites Families (9)

* 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
US5852717A (en) 1996-11-20 1998-12-22 Shiva Corporation Performance optimizations for computer networks utilizing HTTP
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100837434B1 (ko) * 2006-09-29 2008-06-12 삼성전자주식회사 클라이언트와 서버 간의 인터페이스를 수행하는 매개장치및 그의 인터페이스방법

Also Published As

Publication number Publication date
EP2439896A3 (en) 2013-06-19
EP2439896A2 (en) 2012-04-11
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
KR100723320B1 (ko) 2007-05-31
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) 인터넷 클라이언트-서버 멀티플렉서
US12021914B2 (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
US7333990B1 (en) Dynamic reverse proxy
US7565533B2 (en) Systems and methods for providing object integrity and dynamic permission grants
EP2158546B1 (en) Providing enhanced data retrieval from remote locations
US7213071B2 (en) Quality of service improvements for network transactions
CN112243013A (zh) 一种实现跨域资源缓存的方法、系统、服务器和存储介质
MacLarty et al. Policy-based content delivery: an active network approach
US8499023B1 (en) Servlet-based grid computing environment using grid engines and switches to manage resources
CN113419878B (zh) 一种数据操作方法和装置
US8656477B2 (en) Server system, communication method, computer, program and recording medium
KR20040096809A (ko) 임베디드 운영체제를 갖는 프락시/캐시 서버를 이용한인터넷 서비스 제공 시스템과 그를 이용한 서비스 제공방법

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