KR101201002B1 - Http 요청-응답 전송을 이용하는 분산형 시스템에서http 응답을 전송하기 위한 방법 및 컴퓨터 프로그램제품 - Google Patents

Http 요청-응답 전송을 이용하는 분산형 시스템에서http 응답을 전송하기 위한 방법 및 컴퓨터 프로그램제품 Download PDF

Info

Publication number
KR101201002B1
KR101201002B1 KR1020050110671A KR20050110671A KR101201002B1 KR 101201002 B1 KR101201002 B1 KR 101201002B1 KR 1020050110671 A KR1020050110671 A KR 1020050110671A KR 20050110671 A KR20050110671 A KR 20050110671A KR 101201002 B1 KR101201002 B1 KR 101201002B1
Authority
KR
South Korea
Prior art keywords
response
http
flow
service
request
Prior art date
Application number
KR1020050110671A
Other languages
English (en)
Other versions
KR20060081335A (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 KR20060081335A publication Critical patent/KR20060081335A/ko
Application granted granted Critical
Publication of KR101201002B1 publication Critical patent/KR101201002B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • 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/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/14Session management
    • H04L67/142Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer And Data Communications (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

단일 요청에 대응하는 전체 응답의 부분들이 HTTP 응신 흐름을 통해 송신될 수 있게 하기 위해, 통신을 위한 HTTP 응신 흐름을 연 채로 두기 위한 실시예들이 제공된다. 전체 응답의 여러 부분이 대응하는 서비스측 종단점에서 이용가능해 지면, 서비스는 메시지들을 적절하게 캡슐화하여 그들을 요청측 종단점(requesting endpoint)에 송신한다. 응답의 수신자 또는 요청측 종단점은 그 후 응답의 이용가능한 부분을 판독할 수 있고, 임베딩(embed)된 부분을 적절하게 디코딩(decode)하며, 적절한 때에 이들을 자유롭게 처리할 수 있다. 따라서, 응답의 몇몇 부분들에 대해서 오직 하나의 요청만이 생성되기 때문에, 오직 요청측 종단점에 대한 오직 하나의 인증 및/또는 검증을 요청하기 위해 가치있는 시스템 자원이 보존된다.
Figure R1020050110671
HTTP 응신 흐름, 종단점, 인증, 검증, 디코딩

Description

HTTP 요청-응답 전송을 이용하는 분산형 시스템에서 HTTP 응답을 전송하기 위한 방법 및 컴퓨터 프로그램 제품{BULK TRANSMISSION OF MESSAGES USING A SINGLE HTTP REQUEST}
도 1a는 본 발명의 실시예들에 따른, 확장된 HTTP 응신 흐름을 이용하는 메시지 교환 패턴을 예시하는 도면.
도 1b는 본 발명의 실시예들에 따른, 2개의 확장된 HTTP 응신 흐름을 이용하는 분산형 시스템 내의 종단점들 간의 양방향 통신 세션(two-way communication session)을 예시하는 도면.
도 2 및 3은 본 발명의 실시예들에 따른, 복수의 서로 다른 부분으로 HTTP 응답을 전송하는 것에 대한 예시적인 흐름도.
도 4는 본 발명을 위해 적절한 동작 환경을 제공하는 예시적인 시스템을 예시하는 도면.
<도면의 주요 부분에 대한 부호의 설명>
100: 분산형 시스템
115: 요청 메시지
120: HTTP 요청 흐름
145: 서비스측 종단점
150: 전체 응답
본 발명은 일반적으로 HTTP 요청-응답형 통신을 이용하는 컴퓨팅 시스템들 간의 메시지 전송에 관한 것이다. 보다 구체적으로, 본 발명은 복수의 상이한 부분으로 종단점들 사이에 HTTP 응답을 전송하는 것을 제공함으로써, 다른 방식으로는 불가능할 수 있는 환경에서 대응하는 HTTP 요청을 검증 및 인증하는 것에 관련된 가치있는 시스템 자원을 보호하고 요청자에게 양방향 통신을 제공한다.
컴퓨터 네트워크는 하나의 컴퓨터 또는 장치(이후 "컴퓨팅 시스템"으로 언급됨)가 전자 메시지를 이용하여 네트워크를 통해 다른 컴퓨팅 시스템과 통신하게 함으로써, 정보를 전달하고 정보에 액세스하는 능력을 강화시켜왔다. 컴퓨팅 시스템들 간에 전자 메시지를 전송할 때, 전자 메시지는 종종 전자 메시지 내의 데이터에 대해 동작[예를 들어, 패킷화, 라우팅, 흐름 제어 등]을 수행하는 프로토콜 스택(protocol stack)을 통해 전달될 것이다. OSI 모델(Open System Interconnect)은 이러한 프로토콜 스택을 구현하기 위한 네트워킹 프레임워크(networking framework)의 일례이다.
OSI 모델은 전자 메시지를 전송하기 위한 동작들을 몇 개의 분리된 "계층"으로 분할하며, 이 계층 각각은 데이터 전송 프로세스에의 특정한 동작들을 수행하도록 지정된다. 프로토콜 스택들은 잠재적으로 각각의 계층들을 구현할 수 있지만, 수많은 프로토콜 스택들은 네트워크를 통해 데이터를 전송하는 데 이용되는 선택된 계층만을 구현한다. 예를 들어, 컴퓨팅 시스템으로부터 데이터가 전송될 때, 데이터는 애플리케이션 계층에서 생성되어 중간 하위 계층으로 전달된 후 네트워크로 전달된다. 컴퓨팅 장치에서 네트워크로부터 데이터가 수신되면, 데이터는 물리 계층으로 입수되어 상위 중간 계층들로 전달된 후 마지막으로 애플리케이션 계층에 수신된다. 최상위 계층인 애플리케이션 계층은 애플리케이션 및 최종 사용자 프로세스를 지원할 책임이 있다. 대부분의 프로토콜 스택에 의해 통합되는 또 다른 계층은 전송 계층이다. 전송 계층의 일례는 TCP(Transmission Control Protocol)이다.
분산형 시스템(예를 들어, 웹 서비스 환경)에서, 서비스 및 서비스에 대한 요청은 주로 HTTP를 이용하여 전송된다. HTTP는 애플리케이션 계층과 OSI 모델의 다른 하위 계층 사이에서, 분산형 시스템 환경 내에서 콘텐츠를 용이하게 전송할 수 있도록 동작한다. 대부분의 네트워크 프로토콜들과 마찬가지로, HTTP는 클라이언트-서버 모델을 이용한다. 보다 구체적으로, 클라이언트 컴퓨터 시스템(본원에서는 이후 "클라이언트" 또는 "요청측" 종단점으로 언급됨)이 접속을 열고, 요청 흐름을 통해 서버(본원에서는 이후 "서버" 또는 "서비스측" 종단점으로 언급됨)에 요청 메시지를 송신한다. 그 후 서버는 주로 요청된 자원을 포함하는 응답 메시지를 HTTP 통신의 응신 흐름을 통해 반환한다. 응답을 전달한 후, 서버는 접속을 닫고, HTTP를 무상태 프로토콜(stateless protocol)[즉, 트랜잭션(transaction)들 사이에 어떤 접속 정보도 유지하고 있지 않음]로 만든다.
HTTP가 무상태이기 때문에, HTTP 인증은 사용자가 로그인 및/또는 로그아웃하는 세션의 개념을 지원하지 않는다. 따라서, HTTP를 통해 전송된 콘텐츠에 액세스하기 위한 각각의 요청(즉, HTTP 요청)은 적절한 HTTP 인증 정보를 포함해야 한다. 이에 따라, 인증 정보를 처리하고 서비스측 종단점에서 수신된 각각의 요청에 대한 클라이언트를 검증하는 것에 관련된 엄청난 량의 오버헤드가 존재한다.
예를 들어, 전형적으로 HTTP 프로토콜은 특정 헤더를 통해 각각의 HTTP 요청과 함께 공급되는 인증 정보를 제공하는데, 이것은 전형적으로 인증형 및 자격 증명서의 포맷이다. 클라이언트가 이러한 자격 증명서를 획득하고 전송하는 방식은 다음과 같다. 클라이언트가 인증을 요구하는 웹사이트 또는 다른 서비스에 처음으로 액세스하려고 시도할 때, 서비스는 전형적으로 요청된 콘텐츠 또는 정보를 제공하길 거절하고 클라이언트에게 몇몇 형태의 챌린지(challenge)뿐만 아니라 HTTP 에러 메시지(예를 들어, 권한 없음 메시지)를 반환할 것이다. 클라이언트가 이 메시지를 수신하면, 서비스 자원에 액세스하기 위한 적절한 자격 증명서를 이용하여 챌린지에 적절히 응답할 필요가 있을 것이다. 예를 들어, 챌린지를 수신한 클라이언트는 사용자 이름 및/또는 비밀번호를 요청하는 팝업 다이얼로그 상자(popup dialog box)를 사용자에게 나타낼 수 있다. 이와 달리, 또는 이에 관련하여, 챌린지는 토큰[예를 들어, X.509, 커베로스(Kerberos) 또는 다른 유사한 토큰(들)]과 같은 몇몇의 다른 유형의 자격 증명서를 요청할 수 있다. 또한, 다른 유형의 챌린지들도 또한 적용가능할 수 있다.
챌린지의 유형에 상관없이, 사용자(또는 경우에 따라서는 클라이언트)가 (예 를 들어, 올바른 비밀번호를 타이핑해 넣음으로써) 적절한 자격 증명서를 제공하면, 클라이언트는 서버에게 본래 HTTP 요청을 전송할 수 있지만, 이것은 이제 헤더 레벨의 인수(argument)로서 자격 증명서를 포함하는 허가 헤더를 추가할 수 있다. 서비스가 포함된 자격 증명서를 획득하고 유효한 콘텐츠를 반환하면, 클라이언트는 전형적으로 이러한 자격 증명서를 캐싱(cache)하고, 같은 서비스 또는 같은 콘텐츠에 관련된 파생 서비스에 대한 각각의 새로운 요청에 그들을 재전송한다.
대용량 파일 전송 또는 처리하는데 상대적으로 장시간이 걸리는 요청 동안[예를 들어, 론 프로세스(loan process)], 전체 파일을 전송하거나 전체 요청을 처리하기 위한 몇몇의 요청들이 생성된다. 이는 대체로 HTTP의 성질 때문이며, 여기서 어느 데이터도 요청에 대응하는 응신 흐름을 거쳐 송신하지 않고는 클라이언트에게 송신될 수 없다는 점에서, 클라이언트는 어드레스로 불러낼 수 없다고 간주된다. 따라서, 처리하는데 시간이 걸리는 대용랑 파일 및 전체 요청에 대해서, 클라이언트는 인증 정보를 포함하는 요청을 계속 송신해야 하고, 서비스는 계속적으로 이러한 인증 신분 증명서를 처리하고 전체 요청에 대한 적절한 부분들을 그들이 이용가능할 때마다 반환해야 한다.
각각의 요청에 대한 이 계속적인 인증 및 검증 프로세스는 다르게 활용(예를 들어, 전체 응답을 처리)될 수 있는 가치있는 시스템 자원을 이용한다. 마찬가지로, 방화벽의 강도에 관련된 계속되는 요청의 프로세싱도 또한 가치있는 시스템 자원을 이용한다. 이에 따라, 전체 응답 중 부분이 이용가능해질 때마다 그들을 클라이언트에게 송신하기 위해, HTTP 통신의 응신 흐름을 연 채로 둘 필요가 있다. 다른 말로, 전체 응답의 복수 개의 부분에 대한 수개의 요청들을 송수신할 필요없이, 그러한 부분들을 송수신할 수 있을 필요가 있다.
상기에 언급한 현재의 HTTP 요청-응답형 통신의 결점 및 단점은 본 발명의 실시예들을 통해 극복된다. 예를 들어, 본 발명은 검증에 관련된 가치있는 시스템 자원들 및 대응하는 HTTP 요청을 보호하기 위해, 복수 개의 서로 다른 부분들로 HTTP 응답을 전송하는 것을 제공한다.
분산형 시스템 내의 종단점들 간에 통신을 구축하기 위해 HTTP 요청 흐름을 통해 요청 메시지를 송신하는 실시예가 제공된다. 응답의 제1 부분은 제1 기간에 대응하는 HTTP 응신 흐름을 통해 수신된다. 응답의 추가적인 부분들을 수신하기 위해 HTTP 응신 흐름을 연 채로 둔다. 또 다른 요청 메시지를 송신하지 않고, 응답의 제2 부분이 제1 기간과 다른 제2 기간에 HTTP 응신 흐름을 통해 수신된다.
분산형 시스템 내의 종단점들 간에 통신을 구축하기 위해 HTTP 요청 흐름을 통해 요청 메시지를 수신하는 다른 실시예가 제공된다. 응답의 제1 부분은 제1 기간에 대응하는 HTTP 응신 흐름을 통해 수신된다. 또 다른 요청 메시지를 수신하지 않고, 응답의 제2 부분이 제1 기간과 다른 제2 기간에 HTTP 응신 흐름을 통해 송신된다.
본 발명의 추가적인 특징 및 이점은 다음 설명에 제시되고, 부분적으로 설명으로부터 명백해지거나, 본 발명의 구현에 의해 알려질 것이다. 본 발명의 특징 및 이점은 첨부된 청구항에 자세히 지적된 수단 및 조합에 의해 실현 및 획득될 수 있다. 본 발명의 이러한 및 다른 특징들은 다음의 설명, 첨부된 청구항으로부터 보다 완벽히 투명해지거나, 이후에 제시된 바와 같은 본 발명의 구현에 의해 알려질 것이다.
상기 언급된 및 본 발명의 다른 이점 및 특징들이 획득될 수 있는 방식을 설명하기 위해, 앞서 간략하게 설명된 본 발명에 대한 보다 자세한 설명이 첨부된 도면들 내에 예시된 특정 실시예들을 참조하여 제시될 것이다. 이러한 도면들은 오직 본 발명의 전형적인 실시예들만을 나타내며 본 발명의 영역을 제한하도록 의도된 것이 아님을 이해하고, 본 발명은 첨부된 도면들을 이용하는 추가적인 명세 및 세부설명으로 설명 및 기술될 것이다.
본 발명은 가치있는 시스템 자원을 보호하기 위해, 종단점들 사이의 HTTP 응답을 복수의 서로 다른 부분으로 전송하기 위한 방법, 시스템 및 컴퓨터 프로그램 제품으로 확장된다. 본 발명의 실시예들은 다음에 보다 상세하게 설명되는 다양한 컴퓨터 하드웨어를 포함하는 특수 목적 또는 범용 컴퓨터를 포함할 수 있다.
메시지 또는 전체 응답의 부분들이 HTTP 응신 흐름을 거쳐 송신될 수 있게 하기 위해, 본 발명은 통신을 위한 HTTP 응신 흐름을 연 채로 두는 것을 제공한다. 대응하는 서비스측 종단점에서 전체 응답의 여러 부분이 이용가능해질 때마다, 서비스는 메시지를 적절하게 캡슐화하고 그들을 요청측 종단점에 송신한다. 캡슐화는 전형적으로 각각의 서비스에 대해 사적(private)이며, 본 발명에서 그것의 구체적인 세부사항은 중요하지 않다. 그러나 그럼에도 불구하고, 응답의 단편 또는 부 분을 판독하고 캡슐화된 메시지의 경계를 결정하기 위한 일치된 방식이 존재한다는 것은 중요하다. 따라서, 한 요청의 결과로서, 사실상 응답은 각각 요청 전체의 단편으로서 오는 전체 응답의 부분들의 스트림이다.
응답의 수신자 또는 요청측 종단점은 그 후 응답의 이용가능한 부분을 판독할 수 있고 임베딩(embed)된 부분을 적절하게 디코딩하며, 적절한 때에 이들을 자유롭게 처리할 수 있다. 따라서, 완전한 HTTP 응답을 수신하지 않았더라도, 요청측 종단점은 수신한 임베딩된 부분 또는 메시지 각각에 기초하여 동작을 시작할 수 있다. 이외에, 응답의 몇몇 부분들에 대해서 단지 하나의 요청만이 생성되기 때문에, 요청측 종단점에 대한 오직 하나의 인증 및/또는 검증만을 요청하기 위한 가치있는 시스템 자원만이 보존된다.
도 1a는 상술된 이로운 실시예들의 일부를 예시한다. 제시된 바와 같이, 분산형 시스템(100)은 요청측 종단점(165), 및 몇몇의 서비스 모듈(147, 150, 155, 160)을 포함할 수 있는 서비스측 종단점(145)을 포함한다. 일 실시예에서, 요청측 종단점(165)은 HTTP 요청 흐름(120)을 통해 요청 메시지(115)를 송신하여 서비스측 종단점(145)과의 통신을 구축한다. 요청 메시지(115)는 전형적으로 요청측 종단점(165)을 인증하기 위한 적절한 자격 증명서를 포함할 것이다. 이외에, 인증하는 다른 방식들도 본 발명에 이용가능하다. 예를 들어, 요청측 종단점은 공유 비밀, 또는 요청 메시지(115)를 인증하기 위한 다른 방식을 구축할 수 있다. 이외에, 또한 임의의 잘 알려진 유형의 자격 증명서(예를 들어, 토큰, 공유 비밀, 암호화 등)도 본 발명에 이용가능하다. 따라서, 인증하기 위한 임의의 특정 방식 및/또는 본 원에 설명된 자격 증명서의 유형은 단지 예시적인 목적으로 이용됐을 뿐, 본 발명의 영역을 한정하거나 다른 방식으로 좁히기 위한 것은 아니다.
적어도 요청측 종단점(165)이 적절하게 인증되면(후술된 바와 같이 종단점들이 캡슐화된 포맷을 지지하고 그것에 동의하면), 전체 응답(150)의 부분(135, 140)들은 그들이 이용가능해질 때마다 서비스측 종단점(145)으로부터 요청측 종단점(165)으로 송신될 수 있다. 예를 들어, 우선 응답(150)의 제1 부분이 제1 기간에 HTTP 응신 흐름(125)을 거쳐 송신되고, 응답(150)의 제2 부분(140)이 제2 기간에 이용가능해진 때에, 요청측 종단점(165)이 HTTP 응신 흐름(125)을 연 채로 두고 있다면, 그 제2 부분은 HTTP 응신 흐름(125)을 거쳐 송신될 수 있다.
통신을 위한 임의의 유형의 실제 교환 이전에, 2개의 종단점(165, 145)이 HTTP 응신 흐름(125)을 위해 응신 흐름을 연 채로 두는 것을 지원함을 보증하기 위한 예시적인 실시예가 제공된다. 이러한 검증은 2개의 종단점(165, 145)이 통신 동안 응신 흐름(125)을 연 채로 두기 위한 소정 유형의 엔코딩에 동의하게 한다. 따라서, 부분(135, 140)의 패키지화는 전형적으로 요청측 종단점(165) 및 서비스측 종단점(145)에게 사적이다. 또한, 동의는 사실상 동적일 수 있으며, 종단점(165, 145)들은 개별적인 통신 동안 상이한 유형의 엔코딩에 동의할 수 있다. 이외에, 엔코딩은 미리결정될 수 있으며, 이러한 경우에는 엔코딩에 대한 검증 및 동적인 동의가 불필요하다.
캡슐화 표준에 대한 동의의 일례는 메시지의 헤더 부분, 예를 들어, XML 문서(eXtensible Markup Language document)를 이용한다. 이 예에서, 다음에 보다 상세하게 설명된 바와 같은, 하나 이상의 이벤트들이 발생하기 전까지, 서비스측 종단점(145)은 "종료 메시지" 헤더를 포함하지 않는 부분(135, 140)들을 HTTP 응신 흐름(125)을 거쳐 계속 송신할 수 있다. 그러나 그럼에도 불구하고, 서로 다른 부분(135, 140)들이 모두 전체 응답(150)의 부분임을 요청측 종단점(165)이 이해하도록, 메시지의 본문이 엔코딩될 필요가 있다.
전체 응답(150)의 부분(135, 140)들은 부정의(arbitrary) 데이터이며, 즉 그들은 비록 같은 응답 내에 있어도 크기 및 데이터형이 다양할 수 있다. 예를 들어, 하나의 부분(135)은 스트리밍된 데이터인 반면 또 다른 부분(140)은 단일 메시지일 수 있다. 또한, 다른 데이터형 및 포맷들도 본 발명에서 이용가능하다. 따라서, 메시지의 임의의 특정 유형 또는 포매팅들은 단지 예시적인 목적으로 이용됐을 뿐, 명시적으로 언급되지 않는 한, 본 발명의 영역을 한정하거나 다른 방식으로 좁히기 위한 것은 아니다.
상술된 바와 같이, HTTP 응답-응신 통신의 응신 흐름(125)을 연 채로 두길 원하는 몇몇 이점 및 이유가 존재할 수 있다. 예를 들어, 완전한 응신을 만드는데는 시간이 걸리지만 응신의 단편이 조기에 이용가능할 때, 서비스측 종단점(145)은 요청측 종단점(165)에게 2개 이상의 응답이 송신되길 원할 수 있다. 요청측 종단점(165)이 서비스측 종단점(145)으로부터 아이템(item)을 구매하길 원하는 경우가 이런 것이다. 요청 메시지(115)의 수신시에, 초기에 서비스측 종단점(145)은 요청 메시지(115)가 수신된 요청측 종단점(145)을 향해 있는 제1 부분(145)을 전송할 수 있다. 그 후, 서비스측 종단점(145)은 이어서 신용 카드 또는 다른 개인적인 정보 를 검증하고, 개인적인 정보를 확인하는 전체 응답(150)의 제2 부분(140)을 요청측 종단점(165)에 송신할 수 있다. 제품이 최종적으로 사용자에게 발송되면, 서비스측 종단점(145)은 아이템이 발송되었음을 나타내는 전체 응답(150)의 다음 부분(135, 140)을 요청측 종단점(165)에 송신할 수 있다. 추적정보 또는 기타 정보와 같은 응답(150)의 임의의 다른 다음 부분(135, 140)이 서비스측 종단점(145)에 이용가능해지면, 정보의 부분(135, 140)으로서 송신될 수 있다.
HTTP 응신 흐름(125)을 연 채로 두는 또 다른 이유는, 완전한 응답(150)이 서비스 모듈 A-C(160, 155, 150)와 같은 서로 다른 소스(source)들로부터 오는 메시지들의 조합일 수 있기 때문이다. 마찬가지로, 요청(115)도 서로 다른 서비스 모듈 A-C(160, 155, 150)로부터의 요청의 집합일 수 있다. 어느 경우에서든, 서비스측 종단점(145)은 몇몇의 서비스 모듈(160, 155, 150)로부터 정보를 획득하거나 모을 수 있다. 예를 들어, 단일 서버(147)는 다른 서비스 모듈(160, 155, 150)로부터 제공된 서비스들을 이용하고, 이들을 전체 응답(150)의 부분(135, 140)으로서 포함할 수 있다. 예를 들어, 상기 주어진 예에서, 서비스측 종단점(145)은 서비스 모듈 A(160)을 통해 신용 카드 정보 또는 다른 개인적인 정보를 검증하고, 서비스 모듈 B(155)로부터 발송 상태를 수신하고, 서비스 모듈 C(150)로부터 추적 정보를 검색(retrieve)할 수 있다. 정보의 이러한 부분들이 이용가능해지면, 서버(147)는 다양한 부분(135, 140)들에 대해 프록시 또는 라우터로 동작하여, 상술된 바와 같이 HTTP 응신 흐름(125)을 거쳐 그들을 전송한다.
상술된 바와 같이, 서버(147)가 서비스측 종단점(145) 내의 다양한 모듈 (160, 155, 150)로부터의 정보를 검색하는 방법을 어떻게 아는지는 다양할 수 있다. 예를 들어, 엔코딩에 대한 적절한 동의가 있으면, 요청측 종단점(145)은 예를 들어 다양한 서비스 모듈(160, 155, 150)로부터의 검색을 위해 서로 다른 부분(135, 140) 또는 서비스들을 식별하는 요청 메시지(115) 내에 종단점 참조들의 집합을 송신할 수 있다. 서버(147)는 그 후 다양한 서비스 모듈(160, 155, 150)로의 적절한 문의(inquiry)들을 만들고, 서비스 모듈(160, 155, 150)이 적절한 응답을 처리 및 역 송신할 때마다, 서버(147)는 HTTP 응신 흐름(125)을 거쳐 전체 응답(150)의 부분(130, 145)으로 이들을 송신할 수 있다.
이와 달리(또는 심지어 어떻게든지 이와 관련하여), 서버(147)로 향해 있는 단일 요청 메시지(115)는, 다양한 부분(130, 145)들이 서비스측 종단점(145) 내의 다양한 서비스 모듈(160, 155, 150)로부터 필요로 됨을 인식하고, 적절한 때에 그들을 자동으로 검색할 수 있다. 전체 응답(150)의 부분들을 식별하고 검색하기 위한 다른 프로세스들 또한 본 발명에 이용가능하다. 서비스측 종단점(145) 내에 오직 3개의 서비스 모듈(160, 155, 150)만이 도시되어 있지만, 임의의 개수의 서비스 또는 서비스 모듈(160, 155,150)들이 본 발명에서 이용가능하다는 것도 명심하자. 따라서, 본원에 설명된 바와 같은 서비스 모듈(160, 155, 150), 서비스측 종단점(145) 또는 임의의 특정 개수의 서비스 모듈(160, 155, 150)을 참조하는 임의의 특정 설명은 단지 예시적인 목적으로 이용됐을 뿐, 명확하게 주장되지 않는 한 본 발명의 영역을 한정하거나 다른 방식으로 좁히기 위한 것은 아니다.
HTTP 통신의 응신 흐름(125)을 연 채로 두는 또 다른 이유는, 한정된 버퍼 공간으로 장치 또는 종단점(165, 145)을 수용하거나 버퍼링되지 않은 통신들을 지원하기 위해서일 수 있다. 이 실시예에서, 응답이 대용량 데이터 세트이고 종단점들이 전체 데이터 세트를 메모리 내에 버퍼링하지 않으려 할 때, 전체 응답의 보다 작은 부분(135, 140)들이 HTTP 응신 흐름을 거쳐 주기적으로 또는 비동기적으로 송신되고 버퍼링을 피하기 위해 즉시 처리될 수 있다. 이러한 것은 스트리밍 오디오 또는 비디오의 경우에서 또는 한정된 시스템 자원을 구비한 시스템에 대해서 바람직할 수 있다.
언제든지 요청측 종단점(165)은 표준 HTTP 프로토콜에 따라 서비스측 종단점(145)과의 접속 또는 통신을 끊을 수 있음을 명심하자. 예를 들어, 이 접속 차단은 너무 많은 정보가 전달되었다는 것 및/또는 실패됐다는 것의 표현일 수 있다. 마찬가지로, 서비스측 종단점(145)은 전체 응답(150)의 부분(135, 140)들의 생성 또는 캡슐화를 중지하고 본래 요청(115)을 종료시킬 수 있는 능력을 갖는다. 따라서, 통신 내의 종단점(165) 또는 종단점(145) 중 하나는 그들 임의대로 전형적인 메커니즘 세트 내의 상호작용을 끊을 수 있는 능력을 갖는다. 즉, 접속을 끊거나 HTTP 응신 흐름(125)을 닫기 위한 새로운 HTTP 메커니즘이 요구되지 않는다.
단일 응답(150) 내에 캡슐화된 메시지들[전체 응답(150)의 부분(135, 140)임]의 전체적인 실시예 이외에, 제어 메시지(105)를 통해 종단점(165, 145) 간의 통신을 관리하는 다른 실시예들이 제공된다. 제어 메시지(105)는 양 종단점(165, 145)이 캡슐화된 스트림 상호작용과 같은 것을 관리하는 것을 돕는 하나 이상의 메시지 집합일 수 있다. 각각의 제어 메시지(105)는 HTTP 전송 모델에 꼭 맞는 요청 -응답 메시지 쌍으로 모델링될 수 있다. 전형적으로 제어 메시지들은 HTTP 응신 흐름(125)을 통해 응답(150)을 생성하는 것과는 다른 HTTP 요청을 이용하여 전송(110)되어야 함을 명심하자. 초기 통신 단계에서는 초기 요청 메시지(115)가 제어 정보를 포함할 수 있지만, 추가적인 제어 정보(105)는 또 다른 요청-응답 전송(110)을 통해 송신될 필요가 있을 것이다.
제어 메시지(105)는 또한 그들이 요청측 종단점(165)과 서비스측 종단점(145) 간의 특정한 통신을 식별하는 한, 다른 유형의 통신 전송(110)을 거쳐 과도하게 송신될 수 있다. 또한, 전송 메시지(105)를 다양한 전송(110)을 통해 서비스측 종단점(145)에 송신하기 위한 다른 프로세스 및 전송들도 또한 본 발명에 이용가능하다. 따라서, 서비스측 종단점(145)에 제어 메시지(105)를 송신하기 위한 프로세스 또는 특정 전송에 대한 임의의 특정 이용은 단지 예시적인 목적으로 이용됐을 뿐, 명확하게 주장되지 않는 한 본 발명의 영역을 한정하거나 다른 방식으로 좁히기 위한 것은 아니다.
본 발명에 이용가능한 몇몇 유형의 제어 메시지(105)가 존재한다. 예를 들어, 하나의 제어 메시지(105)는 "벌크(bulk)에 알맞은가" 메시지일 수 있다. 이 제어 메시지(105)는 종단점이 스트리밍된 벌크 응답(150)을 수용할 수 있는지를 판정하는 데 이용된다. 즉, 이러한 제어 메시지(105)는, 이러한 통신이 특정 종단점(165, 145)에 의해 전송되는지 및 어떤 유형의 캡슐화가 이용되는지를 판정하기 위해, 통신을 구축하는 초기 단계에 이용될 수 있다. 또 다른 제어 메시지(105)는 "보류" 메시지일 수 있으며, 여기서 요청측 종단점(165)은 요청(150)의 캡슐화된 부 분(135, 140)들의 수신을 일시적으로 중지하길 원한다. 또 다른 제어 메시지(105)는 "재개" 메시지일 수 있으며, 여기서 요청측 종단점(165)은 요청(150)의 캡슐화된 메시지를 다시 수신하기 시작하길 원한다. 또 다른 제어 메시지(105)는 "핑(ping)"일 수 있으며, 여기서 하나의 종단점(165, 145)은 다른 종단점(165, 145)이 여전히 동작중이라고 판정하길 원한다.
다른 제어 메시지(105)는 "다중화 개시(multiplex initiation)" 메시지를 포함할 수 있다. 이 특정 제어 메시지(105)는, 중간매체 라우터 또는 프록시로서 기꺼이 동작하는 서비스측 종단점(145)[및 보다 구체적으로 서버(147)]이 종단점 참조의 집합을 전달하게 한다. 따라서, 임의의 이러한 종단점 참조에 대한 메시지는 상술된 바와 같은 캡슐화된 부분으로서 서버(147)를 통해 송신된다.
또 다른 제어 메시지(105)는 "접속 해제" 메시지일 수 있는데, 이 접속 해제 메시지는 메시지로 기술되어 있지만, 이것은 HTTP 응답(150)을 식별하는 종단점 참조를 포함하여, 요청측 종단점(165)이 다른 채널(예를 들어, 110) 상의 종단점(145, 165) 간의 전체 통신 또는 응답(150)을 참조할 수 있게 하는 단순한 메시지 헤더일 수도 있다. 여기 제시된 바와 같이, 이 데이터는 다양한 종단점 간에 제어 메시지(105) 및 다른 정보를 송신하기 위한 다양한 이용법을 갖는다.
다른 잘 알려진 제어 메시지(105) 및 통신을 제어하기 위한 헤더들이 또한 본 발명에 이용가능하다. 따라서, 상술된 제어 메시지(105)의 리스트는 포함되는 것을 의미하지 않으며, 특정한 제어 메시지(105)에 대한 임의의 특정 참조는 단지 예시적인 목적으로 이용됐을 뿐, 명확하게 주장되지 않는 한 본 발명의 영역을 한 정하거나 다른 방식으로 좁히기 위한 것은 아니다.
2개의 종단점 서비스들 사이의 양방향 통신 교환 패턴에 대한 다른 실시예가 제공된다. 이러한 실시예에서, 상기 약술된 통신을 구축하기 위한 프로세스가 2번 수행될 수 있으며, 여기서 각각의 종단점은 요청측 종단점(165) 및 서비스측 종단점(145) 모두로서 동작한다. 예를 들어, 도 1b에 도시된 바와 같이, 분산형 시스템(100)은 종단점 A(170) 및 종단점 B(180)를 포함한다. 제1 통신 세션 A(175)는 요청이 종단점 A(170)으로부터 요청 흐름 A(185)를 통해 송신됨으로써 구축될 수 있으며, 여기서 전체 요청의 다음 부분들은 상술된 바와 같이 응신 흐름 A(190)를 통해 수신된다. 마찬가지로, 실시예에 따라, 종단점 B는 요청 흐름 B(182)를 통해 요청 메시지를 송신하고 전체 요청의 다음 부분들을 응신 흐름 B(184)를 거쳐 수신함으로써 통신 세션 B(195)를 구축할 수 있다. 이러한 예에서, 2개의 종단점(170, 180)은, 전형적으로 어떤 요청 및 전체 응답의 부분들이 양방향 통신 중 한 방향에 대응하는 지를 조정해야 한다.
본 발명은 또한 기능적인 단계들 및/또는 비기능적인 단계들을 포함하는 방법의 견지에서 설명될 수 있다. 본 발명을 구현하는 데 수행될 수 있는 단계들 및/또는 활동들이 후술된다. 보통, 기능적인 단계들은 달성되는 결과의 관점에서 본 발명을 설명하는 반면, 비기능적인 단계들은 특정한 결과를 이루어내기 위한 보다 구체적인 활동들을 설명한다. 기능적인 단계들 및/또는 비기능적인 단계들은 특정 순서로 설명 또는 주장될 수 있지만, 본 발명이 단계 및/또는 활동들의 임의의 특정한 순서에 제한될 필요는 없다. 또한, 청구항에 언급된 단계 및/또는 활동의 이 용 및 도 2 및 3의 흐름도에 대한 다음의 설명은 이러한 것들의 바람직한 특정 이용을 나타내는데 이용된다.
도 2 및 3은 본 발명의 다양한 실시예에 대한 예시적인 흐름도를 나타낸다. 도 2 및 3에 대한 다음의 설명은 도 1a 및 1b로부터의 대응하는 구성요소들을 때때로 참조할 것이다. 이러한 도면들로부터의 특정한 구성요소를 참조할 수 있지만, 이러한 구성요소들은 단지 예시적인 목적으로 이용됐을 뿐, 명확하게 주장되지 않는 한 본 발명의 영역을 한정하거나 다른 방식으로 좁히기 위한 것은 아니다.
도 2는 대응하는 요청의 허가를 검증하는데 관련된 가치있는 시스템 자원을 보호하기 위해, 복수의 서로 다른 부분으로 HTTP 응답을 전송하는 방법(200)의 예시적인 흐름도를 나타낸다. 방법(200)은 미래의 요청측 종단점(165)에서부터 시작하며, HTTP 요청 흐름을 통해 요청 메시지를 전송하는 단계(205)를 포함한다는 것을 명심하자. 예를 들어, 요청측 종단점(165)은 HTTP 응신 흐름(125)을 통해 요청 메시지(115)를 송신함으로써, 분산형 시스템(100) 내의 서비스측 종단점(145)과의 통신을 구축할 수 있다. 요청 메시지(115)는 제어 정보, 예를 들어 통신을 제어하기 위한 제어 메시지(105)를 포함할 수 있다. 그러나, 전형적으로, 요청측 종단점(165)과 서비스측 종단점(145) 사이에 구축된 통신을 관리하기 위한 제어 메시지는 분리된 통신으로 송신될 것이다. 상술된 바와 같이, 제어 메시지는 "벌크에 알맞은가", "보류", "재개", "핑", "재접속", "다중화 개시", "이 접속" 등 중 하나 이상일 수 있다.
요청 메시지를 송신한 후, 방법(200)은 HTTP 응신 흐름(125)을 통해 응답의 제1 부분을 수신하는 단계를 포함한다. 예를 들어, 요청측 종단점(165)은 대응하는 HTTP 응신 흐름(125)을 통해, 제1 기간에 수신된 응답의 제1 부분(135)을 수신할 수 있다. 방법(200)은 또한 HTTP 응신 흐름(125)을 연 채로 두는 단계(215)도 포함한다. 예를 들어, 요청측 종단점(165)은 응답(150)의 추가적인 부분들을 수신하기 위해 HTTP 응신 흐름(125)을 연 채로 둘 수 있다. 또 다른 요청 메시지를 송신하지 않고, 방법(200)은 또한 HTTP 응신 흐름(125)을 통해 응신의 제2 부분을 수신하는 단계(220)도 포함한다. 예를 들어, 요청측 종단점(165)은 HTTP 응신 흐름(125)을 통해 응신(150)의 제2 부분(140)을 수신할 수 있는데, 여기서 제2 부분은 제1 기간과 다른 제2 기간에 수신된다.
제1 부분(135) 및 제2 부분(140)은 비동기적으로, 즉 부정의 간격(arbitrary interval)을 두고 수신될 수 있다. 또한, 이러한 부분(135, 140)은 스트리밍되거나, 전체 응답(150)을 구성하는 개별적인 메시지, 또는 그들 모두 일 수 있다. 또한, 제1 부분(135) 및 제2 부분(140)은 분산형 시스템(100) 내의 개별적인 서비스 모듈(160, 155, 150)로부터 처리된 개별적인 메시지일 수 있다. 제1 부분(135) 및 제2 부분(140)은 요청측 종단점(165)으로부터 수신된 종단점 참조를 이용하여 개별적인 서비스 모듈(160, 155, 150)로부터의 분리된 메시지(135, 140)를 요청한 단일 서비스(147) 또는 서버로부터 수신될 수 있다. 이러한 종단점 참조는 요청 메시지(115) 내에 포함될 수 있다. 이와 달리, 또는 이와 관련하여, 서비스측 종단점(145)은 제어 메시지(105) 내의 그것이 지원하는 종단점 참조를 요청측 종단점(165)에 송신할 수 있다. 또한, 종단점 참조는 HTTP 응신 흐름(125)으로부터 분리 된 통신 전송을 통해 제어 메시지(105) 내에 포함되어 송신될 수 있다.
상술된 바와 같이, 분산형 시스템(100) 내의 2개의 종단점들 사이에 양방향 통신이 구축될 수 있다. 이러한 실시예에서, 도 1b 내의 종단점 A(170)가 도 1a로부터의 요청측 종단점(165)이고, 도 1b 내의 종단점 B(180)가 도 1a로부터의 서비스측 종단점(180)이면, 제1 통신 세션 A(175)가 구축되고 다음의 실시예들이 더 제공된다. 종단점 A(170)는 분산형 시스템(100) 내의 종단점(170, 180)들 간의 양방향 통신 세션을 구축하기 위해 제2 HTTP 응신 흐름[예를 들어, 요청 흐름 B(182)]을 통해 제2 요청 메시지를 수신할 수 있다. 그 후, 종단점 A(170)는 제3 기간에 대응하는 제2 HTTP 응신 흐름[예를 들어, 응신 흐름 B(184)]을 통해 제2 응답의 제1 부분을 송신할 수 있다. 다른 요청 메시지를 수신하지 않고, 종단점 A(170)는 제3 기간과 다른 제4 기간에 제2 HTTP 응신 흐름[예를 들어, 응신 흐름 B(184)]을 통해 제2 응답의 제2 부분을 송신할 수 있다.
도 3은 본 발명의 실시예에 따라 복수의 서로 다른 부분들로 HTTP 응답을 전송하는 서비스측 종단점(145)으로부터의 방법(300)을 나타낸다. 방법(300)은 HTTP 응신 흐름을 통해 요청 메시지를 수신하는 단계(305)를 포함한다. 예를 들어, 서비스측 종단점(145)은 HTTP 응신 흐름(125)을 통해 요청측 종단점(165)으로부터 요청 메시지(115)를 수신할 수 있다. 방법(300)은 또한 HTTP 응신 흐름을 통해 요청의 제1 부분을 수신하는 단계(310)도 포함한다. 예를 들어, 서비스측 종단점(145)은 제1 기간에 HTTP 응신 흐름(125)을 통해 응답(150)의 제1 부분(135)을 송신할 수 있다. 방법(300)은 또한 HTTP 응신 흐름을 통해 응답의 제2 부분을 송신하는 단계(315)도 포함한다. 예를 들어, 서비스측 종단점(145)은 제1 기간과 다른 제2 기간에 HTTP 응신 흐름(125)을 통해 응답(150)의 제2 부분(140)을 전송할 수 있다. 상술된 바와 같은 다른 실시예들도 방법(300)에 적용될 수 있음을 명심하자.
본 발명의 영역 내의 실시예들은 또한 컴퓨터 실행가능 명령어를 수행하거나 그것에 저장된 데이터 구조를 갖는 컴퓨터 판독가능 매체를 포함할 수 있다. 이러한 컴퓨터 판독가능 매체는 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 예를 들어, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM, 다른 광학 디스크 저장소, 자기 디스크 저장소, 다른 자기 저장 장치, 또는 데이터 구조나 컴퓨터 실행가능 명령어 형태의 바람직한 프로그램 코드 수단을 실행 또는 저장하는 데 이용될 수 있고 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있지만, 이에만 제한되는 것은 아니다. 정보가 네트워크 또는 다른 통신 접속[하드와이어드(hardwired), 무선, 또는 하드와이어드나 무선의 조합]을 통해 컴퓨터에 전송 또는 제공될 때, 컴퓨터는 적절하게 접속을 컴퓨터 판독가능 매체로 본다. 그러므로, 임의의 이러한 접속은 컴퓨터 판독가능 매체로 적절하게 언급된다. 상기의 것들의 조합도 또한 컴퓨터 판독가능 매체의 영역에 포함되어야 한다. 예를 들어, 컴퓨터 실행가능 명령어는 범용 컴퓨터, 특수 목적 컴퓨터, 또는 특수 목적 프로세싱 장치가 어떤 함수 또는 함수들의 그룹을 수행하게 하는 명령어 및 데이터를 포함한다.
도 4 및 다음의 설명은 본 발명이 구현될 수 있는 적절한 컴퓨팅 환경의 간략하고 일반적인 설명을 제공하기 위한 것이다. 요구된 것은 아니지만, 본 발명은 네트워크 환경 내의 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어의 일반적인 문맥으로 설명될 것이다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 오브젝트(object), 컴포넌트, 데이터 구조 등을 포함한다. 데이터 구조에 관련된 컴퓨터 실행가능 명령어 및 프로그램 모듈은 본원에 설명된 방법의 단계들을 실행하기 위한 프로그램 코드 수단의 예를 나타낸다. 이러한 실행가능 명령어 또는 관련 데이터 구조의 특정 시퀀스(sequence)는 이러한 단계로 설명된 기능들을 구현하기 위한 대응하는 단계들의 예를 나타낸다.
당업자들은 본 발명이 개인용 컴퓨터, 핸드헬드 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 또는 프로그래밍가능 가전 제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 수많은 유형의 컴퓨터 시스템 구성을 갖는 네트워크 컴퓨팅 환경에서 구현될 수 있음을 인식할 것이다. 본 발명은 또한 태스크가 통신 네트워크를 통해 (하드와이어드 링크, 무선 링크, 또는 하드와이어드나 무선 링크의 조합에 의해) 링크된 원격 프로세싱 장치에 의해 수행되는 분산형 컴퓨팅 환경 내에서 구현될 수 있다. 분산형 컴퓨팅 환경 내에서, 프로그램 모듈은 국부 및 원격 메모리 저장 장치에 위치할 수 있다.
도 4를 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 프로세싱 유닛(421), 시스템 메모리(422), 및 시스템 메모리(422)를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(421)에 연결시키는 시스템 버스(423)를 포함하는 통상적인 컴퓨터(420) 형태인 범용 컴퓨팅 장치를 포함한다. 시스템 버스(423)는 메모리 버스, 메모리 제어기, 주변 버스, 및 다양한 버스 구조 중 임의의 것을 이용하는 버스를 포함하는 몇 가지 유형의 버스 구조 중의 임의의 것일 수 있다. 시스템 메모리는 ROM(424) 및 RAM(425)를 포함한다. 시동중과 같은 때에 컴퓨터(420) 내의 구성요소들 간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(426; BIOS)은 ROM(424)에 저장될 수 있다.
컴퓨터(420)는 또한 자기 하드 디스크(439)로부터 판독하거나 그 디스크에 기록하는 자기 하드 디스크 드라이브(427), 분리형 자기 디스크(429)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(428), 및 CD-ROM 또는 다른 광학 매체와 같은 분리형 광학 디스크(431)로부터 판독하거나 그 광학 디스크에 기록하는 광학 디스크 드라이브(430)를 포함할 수 있다. 자기 하드 디스크 드라이브(427), 자기 디스크 드라이브(428) 및 광학 디스크 드라이브(430)는 각각 하드 디스크 드라이브 인터페이스(432), 자기 디스크 드라이브 인터페이스(433) 및 광학 드라이브 인터페이스(434)에 의해 시스템 버스(423)에 접속된다. 드라이브 및 그 관련 컴퓨터 판독가능 매체는 컴퓨터(420)에 대한 컴퓨터 실행가능 명령어, 데이터 구조, 프로그램 모듈 및 다른 데이터의 비휘발성 저장을 제공한다. 본원에 설명된 실시예는 자기 하드 디스크(439), 분리형 자기 디스크(429) 및 분리형 광학 디스크(431)를 채용하고 있지만, 자기 카세트, 플래시 메모리 카드, 디지털 위성 접시, 베르누이 카트리지(Bernoulli cartridge), RAM, ROM 등을 포함하는 데이터를 저장하기 위한 다른 유형의 컴퓨터 판독가능 매체도 이용될 수 있다.
운영 체제(435), 하나 이상의 애플리케이션 프로그램(436), 다른 프로그램 모듈(437) 및 프로그램 데이터(438)를 포함하는 하나 이상의 프로그램 모듈을 포함하는 프로그램 코드 수단은 하드 디스크(439), 자기 디스크(429), 광학 디스크(431), ROM(424) 또는 RAM(425) 상에 저장될 수 있다. 사용자는 키보드(440), 포인팅 장치(442, pointing device), 또는 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너 등의 다른 입력 장치(도시되지 않음)를 통해 컴퓨터(420)에 코맨드(command) 또는 정보를 입력할 수 있다. 이러한 입력 장치 및 다른 입력 장치들은 종종 시스템 버스(423)에 연결된 직렬 포트 인터페이스(446, serial port interface)를 통해 프로세싱 유닛(421)에 접속된다. 이와 달리, 입력 장치는 병렬 포트, 게임 포트 또는 USB와 같은 다른 인터페이스에 의해 접속될 수 있다. 모니터(447) 또는 다른 디스플레이 장치도 비디오 어댑터(448)와 같은 인터페이스를 통해 시스템 버스(423)에 접속된다. 모니터 이외에, 개인용 컴퓨터는 전형적으로 스피커 및 프린터와 같은 다른 주변 출력 장치(도시되지 않음)를 포함한다.
컴퓨터(420)는 원격 컴퓨터(449a 및 449b)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용한 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(449a 및 449b)는 각각 또 다른 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치, 또는 다른 공통 네트워크 노드일 수 있으며, 비록 도 4에는 메모리 저장 장치(450a 및 450b) 및 그 관련 애플리케이션 프로그램(436a 및 436b)만이 예시되어 있지만, 컴퓨터(420)에 관하여 상술한 구성요소 중 다수 또는 모두를 전형적으로 포함한다. 도 4에 나타낸 논리적 접속은 제한의 수단이 아닌 예시의 수단으로서 본원에 제시된 LAN(451) 및 WAN(452)을 포함한다. 이러한 네트워킹 환경은 사무 실, 기업 광역 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적이다.
LAN 네트워킹 환경에서 이용되는 경우, 컴퓨터(420)는 네트워크 인터페이스 또는 어댑터(453)를 통해 네트워크(451)에 접속된다. WAN 네트워킹 환경에서 이용되는 경우, 컴퓨터(420)는 인터넷과 같은 WAN(452)을 통해 통신을 구축하기 위한 모뎀(454), 무선 링크 또는 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(454)은 직렬 포트 인터페이스(446)를 통해 시스템 버스(423)에 접속된다. 네트워킹된 환경에서, 컴퓨터(420)에 관하여 제시된 프로그램 모듈 또는 그 부분은 원격 메모리 저장 장치에 저장될 수 있다. 도시된 네트워크 접속은 예시적인 것이며, WAN(452)을 통해 통신을 구축하는 예시적인 및 다른 수단이 이용될 수 있다는 것이 인식될 것이다.
본 발명은 본 발명의 취지 또는 필수 특성으로부터 벗어나지 않는 다른 특정 형태로 구현될 수 있다. 설명된 실시예들은 제한적인 것이 아닌 오직 예시적인 관점에서 고려된다. 그러므로, 본 발명의 영역은 상기 설명보다는 첨부된 청구항에 의해 제시된다. 청구항의 의미 및 그것의 등가물 범위 내의 모든 수정물들이 그들의 영역에 포함된다.
본 발명은 복수의 상이한 부분으로 종단점들 사이에 HTTP 응답을 전송하는 것을 제공함으로써, 다른 방식으로는 불가능할 수 있는 환경에서, 대응하는 HTTP 요청을 검증 및 인증하는 것에 관련된 가치있는 시스템 자원을 보호하고 요청자에게 양방향 통신을 제공한다.

Claims (20)

  1. HTTP 요청-응답 전송을 이용하는 분산형 시스템에서, 대응하는 HTTP 요청을 검증 및 허가하는 것에 관련된 시스템 자원들을 보호하기 위해 복수의 서로 다른 부분들을 포함하여 이루어진 HTTP 응답(response)을 전송하는 방법에 있어서,
    분산형 시스템 내의 종단점들 간의 통신을 구축하기 위해 HTTP 요청 흐름을 통해 요청 메시지를 송신하는 단계;
    대응하는 HTTP 응신 흐름을 통해 응답의 제1 부분(a first portion)을 제1 기간에 수신하는 단계;
    상기 응답의 추가적인 부분들을 수신하기 위해 상기 HTTP 응신 흐름을 개방 상태로 두는 단계; 및
    또 다른 요청 메시지를 송신하지 않고서, 상기 HTTP 응신 흐름을 통해 상기 응답의 제2 부분(a second portion)을 상기 제1 기간과 다른 제2 기간에 수신하는 단계
    를 포함하고,
    상기 구축된 통신을 관리하기 위해 하나 이상의 제어 메시지들이 상기 종단점들 간에 별개의 통신 세션 내에서 송신되는, 방법.
  2. 제1항에 있어서, 상기 제1 및 제2 부분은 비동기적으로 수신되는, 방법.
  3. 제1항에 있어서, 상기 제1 및 제2 부분은 상기 분산형 시스템 내의 별개의 서비스 모듈들로부터 처리된 개별적인 메시지들인, 방법.
  4. 제3항에 있어서, 상기 제1 및 제2 부분은 상기 분산형 시스템 내의 요청측 종단점으로부터 송신된 종단점 참조들을 이용하여 상기 별개의 서비스 모듈들로부터의 상기 개별적인 메시지들을 요청한 단일 서비스로부터 수신되는, 방법.
  5. 제4항에 있어서, 상기 종단점 참조들은 상기 요청 메시지 내에 포함된, 방법.
  6. 제4항에 있어서, 상기 종단점 참조들은 상기 HTTP 요청 흐름으로부터 분리된 통신 전송을 통해 제어 메시지 내에 포함되어 송신되는, 방법.
  7. 제1항에 있어서, 상기 제1 및 제2 부분은 클라이언트에서 서비스로부터 수신되고,
    상기 방법은,
    분산형 시스템 내의 상기 클라이언트와 상기 서비스 사이의 양방향 통신 세션(two-way communication session)을 구축하기 위해 제2 HTTP 요청 흐름을 통해 상기 서비스로부터 제2 요청 메시지를 수신하는 단계;
    대응하는 제2 HTTP 응신 흐름을 통해 제3 기간에 제2 응답의 제1 부분을 송신하는 단계; 및
    또 다른 요청 메시지를 수신하지 않고서, 상기 제2 HTTP 응신 흐름을 통해 상기 제3 기간과 다른 제4 기간에 상기 제2 응답의 제2 부분을 송신하는 단계
    를 더 포함하는, 방법.
  8. HTTP 요청-응답 전송을 이용하는 분산형 시스템에서, 대응하는 HTTP 요청을 검증 및 허가하는 것에 관련된 시스템 자원들을 보호하기 위해 복수의 서로 다른 부분들을 포함하여 이루어진 HTTP 응답을 전송하는 방법에 있어서,
    분산형 시스템 내의 종단점들 간의 통신을 구축하기 위해 HTTP 요청 흐름을 통해 요청 메시지를 수신하는 단계;
    대응하는 HTTP 응신 흐름을 통해 응답의 제1 부분을 제1 기간에 송신하는 단계; 및
    또 다른 요청 메시지를 수신하지 않고서, 상기 HTTP 응신 흐름을 통해 상기 응답의 제2 부분을 상기 제1 기간과 다른 제2 기간에 송신하는 단계
    를 포함하고,
    상기 제1 및 제2 부분은 서비스로부터 클라이언트로 송신되고,
    상기 방법은,
    분산형 시스템 내의 상기 클라이언트와 상기 서비스 사이의 양방향 통신 세션을 구축하기 위해 제2 HTTP 요청 흐름을 통해 상기 클라이언트에 제2 요청 메시지를 송신하는 단계;
    대응하는 제2 HTTP 응신 흐름을 통해 제2 응답의 제1 부분을 제3 기간에 수신하는 단계; 및
    또 다른 요청 메시지를 송신하지 않고서, 상기 제2 HTTP 응신 흐름을 통해 상기 제2 응답의 제2 부분을 상기 제3 기간과 다른 제4 기간에 수신하는 단계
    를 더 포함하며,
    상기 구축된 통신을 관리하기 위해 하나 이상의 제어 메시지들이 상기 종단점들 간에 별개의 통신 세션 내에서 송신되는, 방법.
  9. 제8항에 있어서, 상기 제1 및 제2 부분은 단일 서비스 모듈로부터 처리 및 수신된 개별적인 메시지들인, 방법.
  10. 제8항에 있어서, 상기 하나 이상의 제어 메시지들은 "벌크에 알맞은가(is it ok to bulk)", "보류(suspend)", "재개(resume)", "핑(ping)", "재접속(reconnect)", "다중화 개시(multiplex initiation)" 또는 "이 접속(this connection)" 중에서 선택되는, 방법.
  11. 제8항에 있어서, 상기 제1 부분, 상기 제2 부분 또는 그 둘 다는 스트리밍되거나 개별적인 메시지들인, 방법.
  12. HTTP 요청-응답 전송을 이용하는 분산형 시스템에서, 실행되는 경우 컴퓨터로 하여금 대응하는 HTTP 요청을 검증 및 허가하는 것에 관련된 시스템 자원들을 보호하기 위해 복수의 서로 다른 부분들을 포함하여 이루어진 HTTP 응답을 전송하는 방법을 구현하게끔 하는 컴퓨터 실행가능 명령어들을 포함하는 컴퓨터 판독가능 저장매체로서,
    실행되는 경우 메시징 시스템으로 하여금,
    분산형 시스템 내의 종단점들 간의 통신을 구축하기 위해 HTTP 요청 흐름을 통해 요청 메시지를 송신하는 단계;
    대응하는 HTTP 응신 흐름을 통해 응답의 제1 부분을 제1 기간에 수신하는 단계;
    상기 응답의 추가적인 부분들을 수신하기 위해 상기 HTTP 응신 흐름을 개방 상태로 두는 단계; 및
    또 다른 요청 메시지를 송신하지 않고서, 상기 HTTP 응신 흐름을 통해 상기 응답의 제2 부분을 상기 제1 기간과 다른 제2 기간에 수신하는 단계
    를 수행하게끔 할 수 있는 컴퓨터 실행가능 명령어들을 더 포함하고,
    상기 구축된 통신을 관리하기 위해 하나 이상의 제어 메시지들이 상기 종단점들 간에 별개의 통신 세션 내에서 송신되는, 컴퓨터 판독가능 저장매체.
  13. 제12항에 있어서, 상기 제1 및 제2 부분은 상기 분산형 시스템 내의 별개의 서비스 모듈들로부터 처리된 개별적인 메시지들인, 컴퓨터 판독가능 저장매체.
  14. 제12항에 있어서, 상기 제1 및 제2 부분은 단일 서비스 모듈로부터 처리 및 수신된 개별적인 메시지들인, 컴퓨터 판독가능 저장매체.
  15. 제12항에 있어서, 상기 제1 및 제2 부분들은 클라이언트에서 서비스로부터 수신되며,
    상기 컴퓨터 판독가능 저장매체는, 상기 메시징 시스템으로 하여금,
    분산형 시스템 내의 상기 클라이언트와 상기 서비스 사이의 양방향 통신 세션을 구축하기 위해 제2 HTTP 요청 흐름을 통해 상기 서비스로부터 제2 요청 메시지를 수신하는 단계;
    대응하는 제2 HTTP 응신 흐름을 통해 제2 응답의 제1 부분을 제3 기간에 송신하는 단계; 및
    또 다른 요청 메시지를 수신하지 않고서, 상기 제2 HTTP 응신 흐름을 통해 상기 제2 응답의 제2 부분을 상기 제3 기간과 다른 제4 기간에 송신하는 단계
    를 수행하게끔 할 수 있는 컴퓨터 실행가능 명령어들을 더 포함하는, 컴퓨터 판독가능 저장매체.
  16. 제12항에 있어서, 상기 하나 이상의 제어 메시지들은 "벌크에 알맞은가", "보류", "재개", "핑", "재접속", "다중화 개시" 또는 "이 접속" 중에서 선택되는, 컴퓨터 판독가능 저장매체.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020050110671A 2005-01-07 2005-11-18 Http 요청-응답 전송을 이용하는 분산형 시스템에서http 응답을 전송하기 위한 방법 및 컴퓨터 프로그램제품 KR101201002B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/031,856 US7526801B2 (en) 2005-01-07 2005-01-07 Bulk transmission of messages using a single HTTP request
US11/031,856 2005-01-07

Publications (2)

Publication Number Publication Date
KR20060081335A KR20060081335A (ko) 2006-07-12
KR101201002B1 true KR101201002B1 (ko) 2012-11-13

Family

ID=35985444

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050110671A KR101201002B1 (ko) 2005-01-07 2005-11-18 Http 요청-응답 전송을 이용하는 분산형 시스템에서http 응답을 전송하기 위한 방법 및 컴퓨터 프로그램제품

Country Status (10)

Country Link
US (1) US7526801B2 (ko)
EP (1) EP1679620B1 (ko)
JP (1) JP2006190282A (ko)
KR (1) KR101201002B1 (ko)
CN (1) CN1801825B (ko)
AU (1) AU2005234675B2 (ko)
BR (1) BRPI0505025A (ko)
CA (1) CA2527804C (ko)
MX (1) MXPA05013343A (ko)
RU (1) RU2406233C2 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7392422B2 (en) * 2003-10-20 2008-06-24 Sony Computer Entertainment America Inc., Violations in a peer-to-peer relay network
US7865729B2 (en) * 2006-10-02 2011-01-04 Cisco Technology, Inc. Bidirectional authentication for HTML form processing
US8170183B2 (en) * 2007-01-22 2012-05-01 Control4 Corporation Systems and methods for providing a message service for a site
US7992209B1 (en) * 2007-07-19 2011-08-02 Owl Computing Technologies, Inc. Bilateral communication using multiple one-way data links
KR20100113975A (ko) * 2009-04-14 2010-10-22 엘지전자 주식회사 과거에 수행된 특정 동작을 선택적으로 취소하는 xml 문서 관리 방법 및 이를 이용한 시스템
US9473460B2 (en) 2009-06-22 2016-10-18 Microsoft Technology Licensing, Llc Using hypertext transfer protocol as a transport for bi-directional data streams
US8990321B1 (en) 2011-06-30 2015-03-24 Google Inc. Dynamic formatting of messages for multiple endpoints
US20130024543A1 (en) * 2011-07-19 2013-01-24 Infosys Limited Methods for generating multiple responses to a single request message and devices thereof
DE102012003009A1 (de) 2012-02-15 2013-08-22 Giesecke & Devrient Gmbh Übertragen von Datenströmen zu und von einem Sicherheitsmodul
US9264481B2 (en) * 2012-03-30 2016-02-16 Qualcomm Incorporated Responding to hypertext transfer protocol (HTTP) requests
JP5882833B2 (ja) 2012-05-29 2016-03-09 キヤノン株式会社 認証装置、認証システム、認証方法、及びプログラム
US9270621B1 (en) * 2013-02-25 2016-02-23 Ca, Inc. Securely providing messages from the cloud
US9492741B2 (en) * 2013-05-22 2016-11-15 Microsoft Technology Licensing, Llc Wireless gaming protocol
US9635077B2 (en) * 2014-03-14 2017-04-25 Adobe Systems Incorporated Low latency live video streaming
US9641504B2 (en) * 2014-12-15 2017-05-02 Sap Se HTTP header-based adaptable authentication mechanism
US10275823B2 (en) * 2015-06-15 2019-04-30 Adidas Ag Systems and techniques for computer-enabled geo-targeted product reservation for secure and authenticated online reservations
US10931790B2 (en) 2017-08-17 2021-02-23 Saudi Arabian Oil Company Systems and methods for securely transferring selective datasets between terminals with multi-applications support
US10389685B2 (en) 2017-08-17 2019-08-20 Saudi Arabian Oil Company Systems and methods for securely transferring selective datasets between terminals

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020099795A1 (en) 2001-01-19 2002-07-25 Robert Betros System and method for maintaining two-way asynchronous notification between a client and a web server
EP1244269A2 (en) 2001-03-20 2002-09-25 Contastic Oy A system and method for data transfer
US20030105805A1 (en) 2001-11-05 2003-06-05 Jorgenson Daniel Scott System and method for maintaining consistent independent server-side state among collaborating servers

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6681327B1 (en) * 1998-04-02 2004-01-20 Intel Corporation Method and system for managing secure client-server transactions
US6219790B1 (en) * 1998-06-19 2001-04-17 Lucent Technologies Inc. Centralized authentication, authorization and accounting server with support for multiple transport protocols and multiple client types
US6529937B1 (en) * 1999-01-29 2003-03-04 International Business Machines Corporation System and method for communicating client IP addresses to server applications
US20030097448A1 (en) * 2001-11-21 2003-05-22 Menezes Francisco Jose Server control of hypertext transfer protocol client
ATE391385T1 (de) * 2003-07-11 2008-04-15 Ibm Verfahren und system zur benutzerauthentifizierung in einer benutzer- anbieterumgebung

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020099795A1 (en) 2001-01-19 2002-07-25 Robert Betros System and method for maintaining two-way asynchronous notification between a client and a web server
EP1244269A2 (en) 2001-03-20 2002-09-25 Contastic Oy A system and method for data transfer
US20030105805A1 (en) 2001-11-05 2003-06-05 Jorgenson Daniel Scott System and method for maintaining consistent independent server-side state among collaborating servers

Also Published As

Publication number Publication date
EP1679620B1 (en) 2016-03-30
US20060236387A1 (en) 2006-10-19
CA2527804A1 (en) 2006-07-07
RU2005138023A (ru) 2007-06-20
CA2527804C (en) 2013-10-08
RU2406233C2 (ru) 2010-12-10
EP1679620A1 (en) 2006-07-12
JP2006190282A (ja) 2006-07-20
CN1801825A (zh) 2006-07-12
MXPA05013343A (es) 2006-07-06
KR20060081335A (ko) 2006-07-12
BRPI0505025A (pt) 2006-09-12
AU2005234675B2 (en) 2010-09-09
CN1801825B (zh) 2011-08-03
US7526801B2 (en) 2009-04-28
AU2005234675A1 (en) 2006-07-27

Similar Documents

Publication Publication Date Title
KR101201002B1 (ko) Http 요청-응답 전송을 이용하는 분산형 시스템에서http 응답을 전송하기 위한 방법 및 컴퓨터 프로그램제품
KR102229739B1 (ko) 키 관리 시스템 및 방법
US10148705B2 (en) Enterprise client-server system and methods of providing web application support through distributed emulation of websocket communications
TWI439103B (zh) 網路資源之單一登入以及安全存取的政策導向憑證授權
US10263855B2 (en) Authenticating connections and program identity in a messaging system
EP1654852B1 (en) System and method for authenticating clients in a client-server environment
US8756660B2 (en) Enabling two-factor authentication for terminal services
US20080301784A1 (en) Native Use Of Web Service Protocols And Claims In Server Authentication
US10484357B1 (en) Method and apparatus for federated single sign on using authentication broker
US20030070069A1 (en) Authentication module for an enterprise access management system
JP2007515852A (ja) カプセル化通信プロトコルを使用してネットワークコンポーネントをセキュアに横断する持続性および信頼性のあるセッション
KR20050055743A (ko) 클라이언트-서버 네트워크를 통해 통신하기 위한 방법 및시스템
CN113141365B (zh) 分布式微服务数据传输的方法、装置、系统和电子设备
Cui Comparison of IoT application layer protocols
WO2016131358A1 (zh) 家庭网关及其通信管理方法、通信系统
US20130024543A1 (en) Methods for generating multiple responses to a single request message and devices thereof
JP2009508213A (ja) 一貫したアプリケーション対応ファイヤウォールトラバーサルの提供
WO2023059386A1 (en) Remote command access in a hybrid cloud to on-premises devices
CN116389014A (zh) 访问方法、系统、电子设备和计算机可读存储介质

Legal Events

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

Payment date: 20151016

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 7