KR20060099393A - 요청-응답 전송을 사용하여, 요청 메시지들을 신뢰성있게송신하고, 응답 메시지들을 신뢰성있게 수신하기 위한 방법및 컴퓨터 프로그램 제품 - Google Patents

요청-응답 전송을 사용하여, 요청 메시지들을 신뢰성있게송신하고, 응답 메시지들을 신뢰성있게 수신하기 위한 방법및 컴퓨터 프로그램 제품 Download PDF

Info

Publication number
KR20060099393A
KR20060099393A KR1020060004813A KR20060004813A KR20060099393A KR 20060099393 A KR20060099393 A KR 20060099393A KR 1020060004813 A KR1020060004813 A KR 1020060004813A KR 20060004813 A KR20060004813 A KR 20060004813A KR 20060099393 A KR20060099393 A KR 20060099393A
Authority
KR
South Korea
Prior art keywords
computer system
message
response
request
messages
Prior art date
Application number
KR1020060004813A
Other languages
English (en)
Other versions
KR101159363B1 (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 KR20060099393A publication Critical patent/KR20060099393A/ko
Application granted granted Critical
Publication of KR101159363B1 publication Critical patent/KR101159363B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B01PHYSICAL OR CHEMICAL PROCESSES OR APPARATUS IN GENERAL
    • B01LCHEMICAL OR PHYSICAL LABORATORY APPARATUS FOR GENERAL USE
    • B01L5/00Gas handling apparatus
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B01PHYSICAL OR CHEMICAL PROCESSES OR APPARATUS IN GENERAL
    • B01DSEPARATION
    • B01D3/00Distillation or related exchange processes in which liquids are contacted with gaseous media, e.g. stripping
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B01PHYSICAL OR CHEMICAL PROCESSES OR APPARATUS IN GENERAL
    • B01LCHEMICAL OR PHYSICAL LABORATORY APPARATUS FOR GENERAL USE
    • B01L7/00Heating or cooling apparatus; Heat insulating devices
    • 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
    • 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
    • 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]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99948Application of database or data structure, e.g. distributed, multimedia, or image

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Chemical & Material Sciences (AREA)
  • Chemical Kinetics & Catalysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Clinical Laboratory Science (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

신뢰성있는 요청-응답 메커니즘은 요청 컴퓨터 시스템이 의도한 대로 응답 컴퓨터 시스템이 요청을 처리하여 모든 메시지 통신이 요청 컴퓨터 시스템에 의해 개시되도록 하는 방식으로, 확립된 종단-대-종단 접속에서의 요청 컴퓨터 시스템 및 응답 컴퓨터 시스템이 메시지들을 송신 및 수신하게 한다. 이전에 송신된 메시지들의 캐시된 버전을 재송신하고, 수신된 각 메시지의 수신을 확인함으로써, 요청 컴퓨터 시스템 및 응답 컴퓨터 시스템은 SOAP 중개물의 전송의 실패 또는 간헐적인 네트워크 접속과 같은 넓은 범위의 메시징 실패들을 수용할 수 있다. 컴퓨터 시스템들 중 어느 하나의 캐시된 메시지들은 적절하게 확인된 후 삭제된다. 송신된 모든 메시지들이 응답 컴퓨터에 의해 확인되고, 요청 컴퓨터가 응답 컴퓨터로부터 모든 응답 메시지를 수신한 후, 종단-대-종단 접속은 접속 종료 메시지들의 교환을 통해 종료된다.
요청-응답 메커니즘, 캐시된 버전, 종단-대-종단 접속, 확인, 메시지 교환

Description

요청-응답 전송을 사용하여, 요청 메시지들을 신뢰성있게 송신하고, 응답 메시지들을 신뢰성있게 수신하기 위한 방법 및 컴퓨터 프로그램 제품{RELIABLE REQUEST-RESPONSE MESSAGING OVER A REQUEST-RESPONSE TRANSPORT}
도 1은 요청 컴퓨터 시스템(requesting computer system)에 의해 송신된 메시지들이 응답 컴퓨터 시스템(responding computer system)에 의해 적절하게 확인(acknowledge)되는 본 발명에 따른 요청-응답 시리즈(series)를 예시하는 도면.
도 2는 응답 컴퓨터 시스템으로부터의 적어도 하나의 응답 메시지가 실패하는 본 발명에 따른 요청-응답 시리즈들을 나타내는 도면.
도 3은 요청 컴퓨터 시스템에 의해 송신된 적어도 하나의 요청 메시지가 실패한 본 발명의 일 실시예에 따른 요청-응답 시리즈를 예시하는 도면.
도 4는, 본 발명에 따라 메시지들 및 응답들을 전달하고 신뢰성있는 요청-응답 방식으로 확인들을 교환하기 위한, 요청 컴퓨터 관점 및 응답 컴퓨터 관점으로부터의 방법을 예시하는 도면.
도 5는 본 발명의 하나 이상의 구현을 실행하기 위한 적절한 컴퓨팅 환경을 예시하는 도면.
<도면의 주요 부분에 대한 부호의 설명>
100: 요청 컴퓨터 시스템
105: 응답 컴퓨터 시스템
522: 시스템 메모리
521: 프로세싱 유닛
548: 비디오 어댑터
547: 모니터
523: 시스템 버스
532:하드 디스크 드라이브 인터페이스
533: 자기 디스크 드라이브 인터페이스
534: 광 드라이브 인터페이스
546: 직렬 포트 인터페이스
553: 네트워크 인터페이스
551: LAN
552: WAN
554: 모뎀
540: 키보드
549a, 549b: 원격 컴퓨터
본 발명은 요청-응답 전송을 사용하여 신뢰성있게 메시지들을 전달하기 위한 시스템, 방법 및 컴퓨터 프로그램 제품들에 관한 것이다.
컴퓨터 시스템이 점차 증가함에 따라, 크고 작은 네트워크들 모두에서 파일들 및 컴퓨터 시스템들의 프로세싱 자원들을 분산할 필요성도 증가하고 있다. 일반적으로, 컴퓨터 시스템 및 관련된 장치들은 다양한 이유, 예를 들어 사적인 전자 메시지들의 교환, 상품 판매, 계정 정보의 제공 등을 위해 네트워크를 통해 정보를 전달한다. 그러나, 컴퓨터 시스템들 및 그들의 관련된 어플리케이션들이 점차 복잡해짐에 따라, 네트워크 상의 데이터 및 자원들의 공유와 연관된 도전들도 증가하고 있다는 것을 이해할 것이다.
일반적으로, 둘 이상의 컴퓨터 시스템들 사이에서 파일 및 자원들을 분산시키는 다수의 서로 다른 메커니즘 및 프로토콜들이 존재한다. 예를 들어, 메시지들은, 하나 이상의 다른 컴퓨터 시스템들이 반드시 응답할 필요가 없는 방식으로 한 컴퓨터 시스템에서 그 다른 컴퓨터 시스템들로 송신될 수 있다. 이러한 것의 일례는, 전자 메일 메시지들을 송신하거나, 또는 소정의 컨텐츠를 UDP(user datagram protocol)을 사용하여 다른 컴퓨터들로 스트리밍하는 경우에 사용될 수 있는 것과 같은, 비접속형(connectionless) 프로토콜들이다. 파일들 또는 자원들을 공유하는 다른 방법들은, TCP(transmission control protocol)를 사용하는 것과 같은 접속-지향 프로토콜들의 사용을 포함할 수 있다. 접속-지향 통신은 통상적으로 일련의 요청들 및 응답들을 통해 접속을 확립하고, 소정의 접속 상태 정보를 송신하는 것을 수반한다. 컴퓨터들로 송신되고 그로부터 수신되는 데이터는 일반적으로 전송된 데이터와 접속을 연관시키는 소정의 요소를 가진다.
접속-지향 통신은, 소정의 어플리케이션들에 대한 비접속형 통신과 구별되는 다수의 이점을 가진다. 예를 들어, TCP를 사용하여 개시되는 접속은, 모든 데이터가 일단에서 수신되었다는 것을 보장할 뿐만 아니라 소정량의 에러 정정을 보장하는 다수의 기능들을 제공한다. 예를 들어, 송신 컴퓨터는 패킷이 20 패킷들 중 첫번째라는 것을 나타내는 패킷을 송신할 수 있다. 수신 컴퓨터는 접속 세션에서 모든 20 패킷들을 수신한 후, 20 패킷들 모두가 수신되었다는 것을 나타내는 확인(또는 "ack")을 송신 컴퓨터 시스템에 제출한다. 소정의 경우, 수신 컴퓨터 시스템은 심지어 수신된 각 패킷에 대한 ack를 송신할 수도 있다. RM(reliable messaging) 메커니즘을 사용하는 경우, 송신 컴퓨터 시스템이 각 패킷에 대한 ack 또는 20 패킷 모두에 대한 ack를 수신하지 못하면, 송신 컴퓨터 시스템은 전체 메시지를 다시 송신하거나 또는 심지어 수신 컴퓨터에 필요한 개별적인 패킷들을 재송신할 수 있다.
이와 같이, HTTP(Hypertext Transfer Protocol) 및 FTP(File Transfer Protocol)과 같은 다수의 서로 다른 프레이밍(framing) 프로토콜들은 각각 접속 지향 전송 프로토콜들의 상부에 계층화되어 앞서 언급한 이러한 속성들 중 하나 이상을 이용한다. 예를 들어, 클라이언트 컴퓨터가 HTTP를 사용하여 정보를 검색할 때, 그 클라이언트 컴퓨터는 웹 서버와의 TCP 접속을 확립하고, 예를 들어 클라이언트가 음악을 온라인으로 구매하여 자신에게 송신할 것을 웹 서버에게 요청하는 온라인 상거래의 경우에서 웹 서버가 소정의 조치를 취하라는 요청, 또는 HTML 파일 또는 이미지와 같은 자원에 대한 HTTP 요청을 송신한다. 웹 서버는 요청을 수신하 고 대응하는 응답을 제공하는데, 이 응답은 요청 파일의 콘텐츠를 포함할 수 있다. 요청된 파일들을 수신한 후, 또는 웹 서버와의 통신이 완료되었다고 클라이언트 컴퓨터가 결정하는 경우, 클라이언트 컴퓨터는 TCP 접속을 차단한다. 이와 같이, 클라이언트는 서비스의 관점에서 위치를 알 수 있어야 할(addressable) 필요가 없다. 예를 들어, 클라이언트는 NAT(Network Address Translation) 서버 뒤에 있을 수 있거나, 또는 방화벽을 가로질러 접속을 연결(bridge)하는 HTTP 프록시를 사용할 수 있다. 다른 이점은, 요청들 및 응답들이 용이하게 상관된다는 것인데, 각 응답은 그에 선행된 요청에 상관된다.
요청-응답 메커니즘들의 이러한 이점들 및 기타 이점들에도 불구하고, 정보가 성공적으로 전송되었는지를 알기 위한 요청 또는 응답 컴퓨터 시스템에 대한 특별한 방법은 일반적으로 없다. 예를 들어, 요청이 서버에 도달하고 서버가 응답을 생산했을 수 있으나, HTTP 프록시 오류로 인해 응답이 손실되면, 종래의 요청-응답 메커니즘에서는 다른 컴퓨터 시스템으로부터 어떠한 응답도 수신되지 않았다는 요청을 요청 컴퓨터 시스템이 재전송하는 것이 일반적이다. 예를 들어, 통상적인 웹 브라우저들은 웹 페이지가 로딩되지 못한 경우 HTTP 요청을 재시도하는데 사용될 수 있는 "새로 고침(refresh)" 버튼을 종종 제공한다. 인터넷 웹 페이지에 대한 간단한 요청을 사용하는 것과 같은 소정의 경우, 실패한 것으로 보이는 요청을 반복하는 것이 해로운 영향을 주지 않을 것이다. 비멱등(non-idempotent) 조작을 사용하는 것과 같은 다른 경우, 겉으로 실패한 요청을 반복하거나, 또는 적절하게 송 신되지 않은 것처럼 보이는 메시지를 재전송하는 것은, 해로울 수 있는 집단적 효과(aggregated effect)를 가질 수 있다. 예를 들어, 클라이언트 컴퓨터는, 본래의 송금이 성공적이었다는 것을 나타내는 은행 서버로부터의 응답이 없어, 송금 요청을 은행 서버에 재전송할 수 있다. 응답 부재가 반드시 요청이 수신되지 않았거나 처리되지 않았다는 것을 나타내지는 않는다. 예를 들어, 요청은 수신되었고 처리되었을 수 있으나, 일시적인 네트워크 단절, 또는 HTTP 프록시 오류로 인해 응답이 손실되었을 수 있다. 그러므로, 은행은 클라이언트가 의도한 것이 아니었더라도, 요청 재시도시 송금액을 배로 할 수 있다.
이러한 것들과 같은 어려움들은, 응답 컴퓨터 시스템(예를 들어, 은행 서버)이 요청 컴퓨터 시스템(예를 들어, 클라이언트 은행 고객)과 직접 통신할 수 없어 요청의 상태를 알려줄 수 없는 접속들에서 특히 심각할 수 있다. 예를 들어, 클라이언트 컴퓨터 시스템이 접속 시 익명으로 통신하거나, 또는 방화벽 뒤에 존재하거나, 또는 NAT(network address translation) 서비스에 놓일 수 있다. 이와 같은 경우들에서, 통상적으로 단지 클라이언트, 또는 요청 컴퓨터 시스템만이 통신을 개시할 수 있다. 이로 인해, 확인들 및 응답 전송들을 요청자에게 송신하는 것이 바람직할 수 있는 경우에 응답 컴퓨터 시스템(예를 들어, 네트워크 서버)에 대해 어려움들이 생길 수 있다. 특히, 종래의 요청-응답 프로토콜들에서는, 2개 이상의 컴퓨터 시스템들 간에 신뢰성있는 메시지 전송을 보장하여 집단적이지 않아야 하는 메시지들의 효과를 모으지 않고 또한 메시지들이 원하는 특정 순서대로만 처리될 수 있게 하는 효율적인 메커니즘이 현재 존재하지 않는다.
따라서, 신뢰성있는 요청-응답 메커니즘들을 보장하는 시스템, 방법 및 컴퓨터 프로그램들은 본 기술 분야에서 이점을 가진다. 특히, 네트워크 접속의 요청 컴퓨터 시스템과 응답 컴퓨터 시스템 간의 효율적인 요청 및 응답 메시지들, 및 그의 대응 확인들을 가능하게 하는 응답-요청 메커니즘들을 사용하면 이점을 얻을 수 있다. 또한, 어드레스가 결정되기 어렵거나 불가능한 접속에서 요청 컴퓨터의 어드레스가 식별될 수 있든지 또는 서버가 그러한 어드레스에 접속하기 불가능하든지에 상관없이 구현될 수 있는 효율적인 요청-응답 메커니즘들을 사용하면 효과를 얻을 수 있다.
본 발명은 요청-응답 환경에서의 신뢰성있는 메시징을 보장하도록 구성된 시스템들, 방법들, 및 컴퓨터 프로그램 제품들을 사용하여, 종래 기술의 앞선 문제점들 중 하나 이상을 해결한다. 특히, 본 발명의 구현들은 요청 컴퓨터 시스템에 의해 송신된 메시지들을 의도되는 방식으로만 처리하도록 응답 컴퓨터 시스템에 제한을 두는 특정한 요청 및 응답 메커니즘들과 부분적으로 관련있다.
예를 들어, 요청 컴퓨터 시스템 관점으로부터의 하나의 방법은, 응답 컴퓨터 시스템과의 종단-대-종단 접속(end-to-end connection)을 확립하는 것을 포함한다. 일 구현에서, 종단-대-종단 접속은, 응답 컴퓨터 시스템에서 프로세싱이 어떻게 발생하는지를 나타내는 접속 계약(connection contract)을 사용하여 확립된다. 이 방법은 또한 제1 메시지를 응답 컴퓨터 시스템에 송신하는 것을 포함할 수도 있으며, 제1 메시지는 제1 식별자를 포함한다. 요청 컴퓨터 시스템으로부터의 방법은 또한 응답 컴퓨터 시스템으로부터 응답 메시지를 수신하는 것을 포함한다.
또한, 모든 요청 및 응답 메시지들이 적절하게 확인된 경우, 요청 컴퓨터 시스템 관점으로부터의 방법은 응답 컴퓨터 시스템에 접속 종료 메시지를 송신하는 것을 포함할 수도 있다. 일 구현에서, 종료 메시지는 종료 메시지 식별자, 및 응답 컴퓨터 시스템에 의해 송신된 모든 응답 메시지들이 수신되었다는 확인을 포함할 수 있다. 그 후, 종단-대-종단 접속은, 요청 컴퓨터 시스템이 종료 메시지 식별자와 관련있는 종료 응답 메시지를 수신하는 경우 종료된다.
대조적으로, 응답 컴퓨터 시스템 관점으로부터의 방법은, 요청 컴퓨터 시스템과의 종단-대-종단 접속을 수락하는 것을 포함한다. 일 구현에서, 이러한 것은 또한 수신된 메시지들이 처리될 방식을 지시하는 계약을 수반한다. 응답 컴퓨터 시스템 관점으로부터의 방법은 또한 요청 컴퓨터 시스템으로부터 제1 메시지를 수신하는 것을 포함하며, 제1 메시지는 제1 식별자를 포함한다. 그 후, 응답 컴퓨터 시스템은 요청 컴퓨터에 응답 메시지를 송신한다.
모든 적절한 응답 메시지들이 요청 컴퓨터 시스템에 의해 수신된 후, 응답 컴퓨터 시스템은 요청 컴퓨터 시스템으로부터 접속 종료 메시지를 수신한다. 종료 메시지는 통상적으로 종료 메시지 식별자, 및 모든 응답 메시지들이 수신되었다는 요청 컴퓨터 시스템으로부터의 확인을 포함할 것이다. 그 후, 응답 컴퓨터 시스템은 종료 메시지 식별자와 관련있는 종료 응답 메시지를 송신한다. 따라서, 요청 및 응답 컴퓨터 시스템들 모두는 종단-대-종단 접속에서 특정 메시지들의 수신을 확인한다.
본 발명의 예시적인 구현들의 추가 특징 및 이점들은 후속되는 상세한 설명에 제시될 것이고, 상세한 설명으로부터 부분적으로 명백하거나 또는 그러한 예시적인 구현들의 실시에 의해 학습될 수 있을 것이다. 그러한 구현들의 특징 및 이점들은 첨부된 특허청구범위에 특별히 제공된 도구들 및 조합들을 통해 구현되고 얻어질 수 있다. 이러한 특징 및 다른 특징들은 다음의 상세한 설명 및 첨부된 특허청구범위로부터 보다 완전하게 명백해 질 것이거나 또는 이후에 제시되는 예시적인 구현들의 실시에 의해 배워질 수 있을 것이다.
본 발명의 상술한 특징 및 이점들 및 기타 특징 및 이점들이 얻어질 수 있는 방식으로 설명하기 위해, 위에서 간략하게 설명된 본 발명의 보다 특별한 설명은 첨부된 도면들에 예시된 그 특정 실시예들을 참조하여 제공될 것이다. 이러한 도면들은 단지 본 발명의 통상적인 실시예들만을 나타내고 이에 따라 그 범위를 한정하는 것으로 고려되지 않아야 하는 것을 이해해야 하며, 본 발명은 첨부 도면들의 사용을 통해 추가로 특정하거나 상세하게 기술 및 설명될 것이다.
본 발명은, 요청-응답 환경에서의 신뢰성있는 메시징을 보장하도록 구성된 시스템, 방법 및 컴퓨터 프로그램 제품들로 확장된다. 특히, 본 발명의 구현들은, 요청 컴퓨터 시스템에 의해 송신된 메시지들을 의도된 방식으로만 처리하도록 응답 컴퓨터 시스템에 제한을 가하는 특정 요청 및 응답 메커니즘들과 부분적으로 관련있다.
본 명세서 및 특허청구범위로부터 이해될 수 있는 바와 같이, 본 발명의 일 측면은 요청 컴퓨터 시스템과 응답 컴퓨터 시스템 사이에서 양쪽 컴퓨터 시스템들 로부터의 메시지들을 고유하게 식별하는 종단-대-종단 접속을 확립하는 것과 연관된다. 본 발명의 다른 양상은, 응답 컴퓨터 시스템으로부터의 응답 메시지들이 잇따르게 되는 응답 컴퓨터 시스템으로 요청 메시지들을 송신하는 것과 연관된다. 응답 컴퓨터 시스템은 요청 컴퓨터 시스템으로부터의 요청 메시지들을 확인하고, 요청 컴퓨터 시스템은 응답 컴퓨터 시스템으로부터의 응답 메시지들을 확인한다. 본 발명의 추가의 측면은, 응답 컴퓨터 시스템으로부터의 종료 확인 메시지도 구현하는 방식으로 통신을 종료하는 것과 연관된다.
예를 들어, 도 1은 요청 컴퓨터 시스템(100)에 의해 송신된 모든 메시지들이 응답 컴퓨터 시스템(105)에 의해 적절하게 확인되고, 그 반대의 경우도 가능한 본 발명에 따른 요청-응답 시리즈를 나타낸다. 일반적으로, 본원에 기술된 종단-대-종단 접속은, TCP 등과 같은 요청-응답 상호작용을 제공하는 임의의 유형의 네트워크 접속의 상부에 계층화될 수 있으며, 그 위에는 HTTP와 같은 요청-응답 프레이밍 프로토콜들이 계층화될 수 있다. 물론, 본 발명에 따라 구현될 수 있는 다른 요청-응답 전송 및 프레이밍 프로토콜이 존재한다.
좌우간, 도 1은 접속 개시 요청 메시지(110) "Create Sequence[Offer=A]"를 응답 컴퓨터 시스템(105)으로 송신함으로써 종단-대-종단 접속을 요청 컴퓨터 시스템(100)이 개시하는 것을 보여준다. 이러한 종단-대-종단 접속은 하나 이상의 하부 네트워크 접속들을 통해 지속될 수 있어, 종단-대-종단 접속 식별자들을 사용하여 구별되는, 요청 컴퓨터 시스템(100)과 응답 컴퓨터 시스템(105) 간의 하나 이상의 전송 접속이 동시에 존재할 수 있다. 요청 메시지(110)는, 종단-대-종단 접속 시 모든 메시지들에 대해 응답 컴퓨터 시스템(105)에 의해 사용될 식별자 "A"를 포함한다. 도 1은 또한 응답 컴퓨터 시스템(105)이 확립된 접속에 대한 응답(120) "Create SequenceResponse[B]"을 사용하여 접속을 수락하는 것을 보여준다. 응답 메시지(120)는, 확립된 종단-대-종단 접속에서 송신되는 모든 메시지들에 대해 요청 컴퓨터 시스템(100)에 의해 사용될 식별자 "B"를 포함한다.
요청 컴퓨터 시스템(100)과 응답 컴퓨터 시스템(105) 간의 종단-대-종단 접속을 확립하는 경우, 또는 그 이전에, 2개의 컴퓨터는 접속 "계약(Contract)"을 셋업할 수도 있다. 예를 들어, 접속 요청 메시지(110)는, 메시지(120)에서 동의되는 접속 계약(도시되지 않음)의 식별자를 포함한다. 접속 계약은 임의의 수의 종단들에 대해 구성될 수 있는 임의의 수의 명령들을 포함할 수 있다. 예를 들어, 일 구현에서, 접속 계약은 응답 컴퓨터 시스템(105)에 의해 수신된 각 메시지가 "정확하게 한번(exactly once)" 또는 "한번 이하(not more than one)" 또는 "적어도 한번(at least once)" 처리될 것을 요구한다.
다른 구현에서, 접속 계약은 프로세싱이 순서대로 발생하거나 또는 요청 컴퓨터 시스템(100)이 응답 컴퓨터 시스템(105)으로부터의 모든 응답 메시지들의 수신을 확인한 이후에만 발생한다는 것을 나타낸다. 예를 들어, 응답 컴퓨터 시스템(105)은 모든 수신된 메시지들을 캐시(cache)하도록 요구되고; 및 모든 메시지들이 (순서에 상관없이) 수신되고 요청 컴퓨터 시스템(100)에 의해 적절하게 확인된 이후, 그 후 응답 컴퓨터 시스템(105)은 수신된 메시지를 특정 순서로 처리할 수 있다. 그 후, 응답 컴퓨터 시스템(105)은 요청 컴퓨터 시스템(100)이 나중에 얻어갈 수 있는 응답을 준비한다.
종단-대-종단 접속 (및 관련된 계약)이 확립된 후, 요청 컴퓨터 시스템(100)은 종단-대-종단 접속의 제1 메시지(130)를 응답 컴퓨터 시스템(105)에 송신한다. 제1 메시지(130) "Sequence[B,1]ID[α]"는, 메시지(120) 내에서 응답 컴퓨터 시스템(105)에 의해 제공된 식별자 "B"를 포함한다. 메시지(130)는 또한 제1 메시지(130)에 대한 시퀀스 번호 "1"(즉, "B,1"), 및 별도의 제1 식별자 "α"를 포함한다. 제1 식별자 "α"는 제1 메시지(130)의 상대적 시퀀스 번호 "1"과 별도로 메시지(130)를 고유하게 식별한다. 제1 메시지(130)를 수신한 경우, 응답 컴퓨터 시스템은 응답 메시지(140) "Sequence[A,1],Ack[B1-1],RelatesTo[α]를 송신하고, 이는 제1 식별자 "α"와 관련있고, 요청 메시지들이 응답 컴퓨터 시스템(105)에 의해 수신되었다는 것을 나타내는 확인 "Ack[B1-1]"를 포함한다.
요청들 및 응답들이 통신 스택의 전송 레벨에서 상관되는 경우와 같은 일 구현에서, 응답 메시지(140)는 제1 메시지(130)를 전달하는 데 사용된 전송 접속의 응답 레그(reply leg) 상에서만 요청 컴퓨터 시스템(100)으로 송신될 수 있다. 요청들 및 응답들이 통신 스택의 메시지 레벨에서 상관되는 경우와 같은 다른 구현에서는, 응답 메시지(140)는 요청 컴퓨터 시스템(100)에 의해 확립된 임의의 전송 접속의 임의의 응답 레그 상에서 요청 컴퓨터 시스템(100)으로 반환될 수 있다. 이러한 것은, 메시징 계층에서 상관된 메시지들은 요청 컴퓨터 시스템이 이전에 송신한 요청 메시지와 응답 메시지를 매칭할 수 있게 할 요청 컴퓨터 시스템(100)에 대한 소정의 상관 정보를 포함할 수 있기 때문에, 일 구현에서 가능하다. 예를 들 어, 응답 컴퓨터 시스템(105)으로부터의 응답 메시지가 실패할 수 있고, 나중의 응답에 첨부된 후속 확인이 이전의 요청이 실질적으로 수신되었다는 것을 나타낼 수 있다. 이와 같이, 요청 컴퓨터 시스템(100)은, 이전의 응답이 손실되었다는 것을 나타내는, 최종 응답에 대한 확인 메시지를 송신할 수 있다. 응답 컴퓨터 시스템(105)은 요청 컴퓨터 시스템(105)으로부터 수신된 확인 메시지의 응답 레그를 사용하여 응답 메시지를 재전송하고, 메시지 내에 상관 정보(예를 들어, "RelatesTo[α]")를 제공할 수 있다.
좌우간, 도 1은 메시지(140)가 확립된 종단-대-종단 접속("A")에 대해 응답 컴퓨터 시스템(105)에 의해 송신된 제1 메시지("1")라는 것을 나타내는 식별자 "A,1"를 응답 메시지(140)가 포함한다는 것을 보여준다. 응답 메시지(140)는 또한 확인 "Ack[B1-1]"을 포함하며, 이러한 확인은 요청 컴퓨터 시스템(100)에 의해 사용된 종단-대-종단 접속 식별자 "B" 상에서 송신된 메시지 1-1을 응답 컴퓨터 시스템(105)이 갖는다는 것을 확인한다. 응답 메시지(140)는 또한 메시지(140)가 제1 식별자 "α"와 연관되는(즉, "RelateTo") 것을 나타내는데, 이는 메시지(140)가 제1 요청 메시지에 대한 응답(즉, "ID[α]")이라는 것을 요청 컴퓨터 시스템(100)에 나타낸다.
요청 컴퓨터 시스템(100)은 또한 제2 메시지(150) "Sequence[B,2,LAST],Ack[A1-l]ID[β]"를 송신한다. 제2 메시지(150)는, 메시지(150)가 확립된 종단-대-종단 접속에 대한 그 식별자(즉, "B") 상에 컴퓨터 시스템(100)에 의해 송신된 제2 메시지라는 것을 나타내는 식별자 "B,2"를 포함한다. 제 2 메시지(150)는 또한, 메시지(150)가 확립된 종단-대-종단에 대한 그 식별자 "B" 상에서 컴퓨터 시스템(100)에 의해 송신될 어플리케이션 메시지들의 마지막이라는 것을 나타내는 식별자 "LAST"를 포함한다. 제2 메시지(150)는, 요청 컴퓨터 시스템(100)이 응답 메시지(140)를 수신했다는 것을 응답 컴퓨터 시스템(105)에게 확인하는 확인 "Ack[A,1-l]을 더 포함한다. 또한, 제2 메시지(150)는, 송신된 시퀀스 내의 서수(ordinal number)에 상관없이(즉, "B,1", "B,2" 등), 메시지(150)를 특정적으로 식별하는 제2 식별자 "β"를 포함한다.
이와 같이, 도 1은 응답 컴퓨터 시스템(105)이 메시지(150)를 수신하고 응답 메시지(160) "Sequence[A,2,LAST],Ack[B,1-2],RelatesTo[β]"를 사용하여 응답한다는 것을 나타낸다. 응답 메시지(160)는, 메시지(160)가 확립된 종단-대-종단 접속에 대한 식별자 "A"를 사용하여 응답 컴퓨터 시스템(105)에 의해 송신된 제2 확인 메시지라는 것을 나타내고; 메시지(160)가 확립된 종단-대-종단 접속에 대한 수신 컴퓨터 시스템의 식별자("A") 상에서 송신된 "최종" 메시지라는 것을 나타내는 식별자 "A,2,LAST"를 포함한다. 응답 메시지(160)는, 응답 컴퓨터 시스템(105)이 요청 컴퓨터 시스템(100)에 의해 사용된 종단-대-종단 접속 식별자("B") 상에 순차적으로 번호매겨진 메시지들 1 내지 2를 수신했다는 것을 식별하는 확인 "Ack[B.1-2]"를 더 포함한다. 또한, 응답 메시지(160)는, 이러한 것이 이전에 송신된 제2 요청 메시지(150)에 대한 응답(즉, "ID[β]")이라는 것을 요청 컴퓨터 시스템(100)에 나타내는 제2 식별자 "β"를 포함한다.
응답 메시지(160) 수신 시, 요청 컴퓨터 시스템(100)은, 메시지 교환이 성공 적으로 완료되었다고 판단하고, 확립된 종단-대-종단 접속을 종료하려는 단계들을 개시한다. 특히, 도 1은 요청 컴퓨터 시스템(100)이 접속 종료 메시지(170) "Terminate[B],Ack[A,1-2]ID[γ]"를 송신하는 것을 보여준다. 접속 종료 메시지(170)는 종료되고 있는 종단-대-종단 접속을 식별하기 위한 식별자 "B"를 포함하고, 또한 확인 "Ack[A,1-2]"를 포함한다. 확인 "Ack[A,1-2]"는, 요청 컴퓨터 시스템(100)이 제1 및 제2 응답 메시지들 모두(즉, 140, 160)를 응답 컴퓨터 시스템(105)으로부터 수신했다는 것을 나타낸다. 접속 종료 메시지(170)는 또한 메시지(170)를 고유하게 식별하는 종료 메시지 식별자 "γ"를 포함한다.
응답 컴퓨터 시스템(105)은 종료 응답 메시지(180) "Terminate[A],RelatesTo[γ]"로 응답한다. 응답 확인(180)은 어느 종단-대-종단 접속이 종료되고 있다는 것을 나타내는 식별자 "A"를 포함한다. 응답 확인(180)은 또한, 종료 메시지 식별자 "γ"와 "연관되어 있는(RelatesTo)" 것을 나타내는 표시를 포함한다. 이는, 응답 컴퓨팅 시스템(105)이 특정 접속 종료 메시지(180)를 실질적으로 수신했다는 것을 요청 컴퓨터 시스템(100)에게 확인하는 데 사용될 수 있다. 따라서, 도 1은 요청 컴퓨터 시스템(100) 및 응답 컴퓨터 시스템(105)이, 메시지 또는 수신된 메시지 세트의 일반적인 확인을 단순히 제공하는 것 이상을 행한다는 것을 보여준다. 특히, 확립된 종단-대-종단 접속에서의 요청 및 응답 컴퓨터 시스템들은, 특정 메시지들을 그러한 메시지들의 특정 확인들과 상관시키는 데 사용될 수 있는 풍부한 메시지 정보, 및 소정의 프로세싱 순서를 제공할 수 있다.
도 2는, 응답 컴퓨터 시스템(105)으로부터의 응답 메시지들 중 하나가 실패 한 것을 제외하면, 도 1과 유사한 요청-응답 시나리오를 예시한다. 도 2는 요청 컴퓨터 시스템(100) 및 응답 컴퓨터 시스템(105)이, 도 1의 메시지(110, 120)와 사실상 유사한 메시지(200, 210)를 사용하여 종단-대-종단 접속을 확립하는 것을 보여준다. 종단-대-종단 접속을 확립하는 경우, 요청 컴퓨터 시스템(100)은, 도 1의 메시지(130)와 사실상 유사하고 제1 식별자 "α"를 포함하는 제1 요청 메시지(220) "Sequence[B,1],ID[α]"를 송신한다. 도 2가 메시지(240)가 요청 컴퓨터 시스템(100)에 도달하지 못한 것을 보여주더라도, 도 2는 또한 응답 컴퓨터 시스템(105)이 응답 메시지(240) "Sequence[A,1],Ack[B,1-1]RelatesTo[α]"를 송신하는 것을 보여준다.
임의의 다른 응답 메시지를 수신하기 전에, 요청 컴퓨터 시스템(100)은, 메시지(230)가 확인(예를 들어, "Ack[##]")을 포함하지 않는 것을 제외하고는 도 1의 메시지(150)와 사실상 유사한 제2 요청 메시지(230) "Sequence[B,2,LAST],ID[β]"를 송신한다. 특히, 응답 컴퓨터 시스템(105)이 응답 메시지를 송신하였더라도, 메시지(230)는, 요청 컴퓨터 시스템(100)이 응답 메시지를 수신하지 않았다는 것(즉, 메시지(240a)가 수신되지 않았다는 것)을 응답 컴퓨터 시스템(105)에게 알린다. 그럼에도 불구하고, 응답 컴퓨터 시스템(105)은 응답 메시지(250) "Sequence[A,2],Ack[B,1-2]RelateTo[β]"를 사용하여 메시지(230)에 응답한다. 메시지(250)는, 그것이 응답 컴퓨터 시스템(105)으로부터의 제2 메시지라는 것(즉, "A,2")을 표시하고, 응답 컴퓨터 시스템(105)이 요청 컴퓨터 시스템(100)으로부터 순차적으로 송신된 메시지들 모두를 수신했다는 것(즉, "B1-2")을 알린다. 메시지 (250)는, 메시지(250)가 제2 요청 메시지(230)에 대한 응답이라는 것(즉, "ID[β]")을 요청 컴퓨터 시스템(100)에게 표시하는 제2 식별자 "β"를 포함한다.
메시지(250)를 수신하는 경우, 메시지(250)가 시퀀스의 제2 메시지로서 식별되기 때문에(즉, "Sequence[A,2]), 응답 컴퓨터 시스템(105)이 메시지(220, 230) 모두에 대해 응답한 것으로 믿는다는 것을 요청 컴퓨터 시스템(100)이 인식한다. 그러나, 요청 컴퓨터 시스템(100)은, 제1 식별자 "α"와 관련되는 응답 컴퓨터 시스템(105)으로부터의 특정 응답 메시지를 수신하지 못했기 때문에(즉, 메시지(240)를 수신하지 않았기 때문에), 요청 컴퓨터 시스템(100)은 메시지(260) "Sequence[B,1],Ack[A,2],ID[α]"를 재송신한다. 소정의 측면에서, 메시지(260)는 단지 메시지(220)의 복제인데, 그 이유는 메시지가 요청 컴퓨터 시스템(100)에 의해 송신된 시퀀스 내의 제1 메시지라는 것을 나타내는 식별자 "B,1"을 포함하고 메시지(260)는 제1 식별자 "α"를 포함하기 때문이다. 그럼에도 불구하고, 메시지(260)는, (메시지(240) "A,1" 및 메시지(250) "A,2" 모두 보다는) 단지 응답 메시지(250) "A,2"만이 수신되었다는 것을 응답 컴퓨터 시스템(105)에게 알리는 ("A,1-2"보다는) 확인 "Ack[A,2]"를 포함하기 때문에, 다른 측면들에서 구별된다.
메시지(260)를 수신하는 경우, 응답 컴퓨터 시스템(105)은 "α"로 식별된 메시지를 반드시 재처리하기보다는, 오히려 접속 계약의 일부분으로서 메시지(260)를 폐기한다. 예를 들어, 접속 계약이 "정확하게 한번" 또는 "기껏해야 한번" 프로세싱을 필요로 한다면, 응답 컴퓨터 시스템(105)은 메시지(260)를 폐기한다. 이러한 경우, 응답 메시지는 확인될 때까지 캐시되고 그 후 재전송에 대해 응답하여 요청 컴퓨터 시스템(100)으로 재송신될 것이다. 또는, 접속 계약이 "적어도 한 번의" 프로세싱에 대해 지정한다면, 응답 컴퓨터 시스템(105)은 메시지(220, 260) 모두를 처리할 수 있다. 예를 들어, 메시지(220, 260)가 다른 대부분의 측면들에서 동일하더라도, 메시지(260)는 메시지(220)의 갱신된 버전일 수 있다.
좌우간, 도 2는 응답 컴퓨터 시스템(105)이 응답 메시지(270) "Sequence[A,1],Ack[B,1-2]RelatesTo[α]"를 사용하여 응답하는 것을 보여준다. 응답 메시지(270)는, 메시지가 본질적으로 제1 응답 메시지(240)의 복사본이라는 것을 식별한다(즉, "A,1"). 그러나, 메시지(270)는 또한, 요청 컴퓨터 시스템(100)에 의해 송신된 메시지(220, 230) 모두가 수신되었다는 것을 나타내는 확인 "Ack[B,1-2]"을 포함한다. 또한, "RelatesTo" 필드 내의 고유의 제1 식별자 "α"는, 응답 메시지(270)가 제1 요청 메시지에 대한 응답이라는 것(즉, "ID[α]")을 요청 컴퓨터 시스템(100)에 알린다.
이때, 요청 컴퓨터 시스템(100)이 메시지(270)를 수신한다고 가정하면, 요청 컴퓨터 시스템(100)은 종단-대-종단 접속을 종료시키는 단계들을 개시한다. 그러나, 요청 메시지(220, 260)의 반복뿐만 아니라 응답 메시지(240, 270)의 반복들이 양쪽 컴퓨터 시스템들이 서로의 메시지들을 충분하게 확인할 때까지 계속적으로 재송신될 수 있을 것이라는 것을 이해할 것이다. 일 구현에서, 예를 들면, 요청 컴퓨터 시스템(100)은 이전에 송신된 요청 메시지를 재송신하기 전에 각 응답 메시지에 대해 소정의 시간(1초의 일부분, 수초, 수분 등)을 대기하도록 구성될 수 있다. 대안적으로, 요청 컴퓨터 시스템(100)은 중간 노드(예를 들어, HTTP 프록시 서버) 로부터 전송 오류를 수신할 때마다 이전에 송신된 요청 메시지를 재송신하도록 구성될 수 있다.
그러나, 요청 컴퓨터 시스템(100)은 메시지들을 검사하거나 및/또는 재송신하도록 구성되고, 응답 컴퓨터 시스템(105)은 접속 계약에 따라 수신된 메시지들 중 임의의 메시지 또는 모든 메시지들을 처리하도록 제한된다. 좌우간, 확립된 종단-대-종단 접속을 닫기 위해, 요청 컴퓨터 시스템(100)은 접속 종료 메시지(280) "Terminate[B]Ack[A,1-2],ID[γ]"를 송신하고 응답 컴퓨터 시스템은 종료 메시지 식별자 "γ"와 관련있는 종료 응답 메시지(290) "Terminate[A],RelatesTo[γ]"을 사용하여 응답한다. 따라서, 메시지(280, 290)는 도 1의 메시지(170, 180)에 대해 각각 설명한 바와 같은 동일한 기능을 가상적으로 발휘한다.
도 3은, 요청 컴퓨터 시스템(100)에 의해 송신된 적어도 하나의 메시지가 실패한다는 시나리오를 설명하는 것만 제외하면, 앞선 도면들과 유사한 요청-응답 시나리오를 예시한다. 예를 들어, 도 3은 요청 컴퓨터 시스템(100) 및 응답 컴퓨터 시스템(105)이 개별적인 요청 및 응답 메시지들(300) "CreateSequence[Offer=A]" 및 (310) "CreateSequenceResponse[B]"를 사용하여 종단-대-종단 접속을 확립하는 것을 보여준다. 종단-대-종단 접속을 확립하는 경우, 요청 컴퓨터 시스템(100)은 제1 식별자 "α"를 갖는 제1 메시지(320) "Sequence[B,1],ID[α]"를 송신하고, 또한 제2 식별자 "β"를 갖는 제2 메시지(330a) "Sequence[B,2],ID[β]"를 송신한다. 제1 메시지(320)를 수신한 후, 및 요청 컴퓨터 시스템(100)이 메시지(330a)를 송신한 직후 또는 그 이전에, 응답 컴퓨터 시스템(105)은 응답 메시지(350) "Sequence[A,1],Ack[B,1-1]RelatesTo[α]"를 송신한다.
메시지(350)를 수신하기 전에, 요청 컴퓨터 시스템(100)은 또한 제3 식별자 "γ"를 갖는 제3 메시지(340) "Sequence[B,3,LAST],ID[γ]"를 송신한다. 메시지(320, 330a, 또는 340) 중 어느 것도 도 1 및 2와 같은 응답 메시지들에 대한 임의의 확인 표시자들을 가지지 않는데, 그 이유는 요청 컴퓨터 시스템(100)이 아직 응답 컴퓨터 시스템(105)으로부터 임의의 응답 메시지들을 수신하지 못했기 때문이다. 궁극적으로, 요청 컴퓨터 시스템(100)이 응답 메시지(350)를 수신하는 경우, 요청 컴퓨터 시스템(100)은, 메시지(320)를 수신한 직후에, "ID[α]"에 의해 식별되는, 제1 메시지(320)에 응답하여 응답 메시지(350)가 송신되었다는 것을 즉시 식별한다. 이러한 식별은, 요청 컴퓨터 시스템(100)이 메시지(350)가 제1 요청 메시지(350)에 대한 응답 메시지라는 것을 나타내는 "RelatesTo[α]"를 지정하기 때문에 가능하다.
도 3은 또한, 응답 컴퓨터 시스템(105)에 의해 송신된 단지 제2 응답(즉, "A,2")인 응답 메시지(360) "Sequence[A,2],Ack[B,1,3]RelatesTo[γ]"를 응답 컴퓨터 시스템(105)이 송신하는 것을 보여준다. 이러한 경우, 접속 계약에 의해 어떠한 순서화 요구조건도 부과되지 않으며, 이에 의해 (도달하지 못한) 제2 메시지(330a)를 수신하기 전에 송신된 제3 메시지(340)가 응답 컴퓨터 시스템(105)에 의해 처리할 수 있게 된다. 메시지(360)는 또한 응답 컴퓨터 시스템(105)이 식별자 "Ack[B,1,3]"을 사용하는 메시지(320, 340)들을 수신했다는 것을 나타낸다. 이외에도, 메시지(360)는 또한 제3 식별자 "γ"를 포함하기 때문에, 메시지(360)는 이 러한 응답이 동일한 식별자 "γ"를 운반한 메시지(340)에 대한 응답이라고 요청 컴퓨터 시스템(100)에게 알린다.
요청 컴퓨터 시스템(100)은 메시지들(320, 340)의 수신만을 확인하기 때문에, 요청 컴퓨터 시스템(100)은 제2 메시지(330a)를 재송신한다. 특히, 도 1은 요청 컴퓨터 시스템(100)이 메시지(330b) "Sequence[B,2],Ack[A,1-2],ID[β]"로서 메시지(330a)를 재송신하는 것을 보여준다. 메시지(330b)는, 그것이 송신된 제2 메시지 "B,2"이라는 것을 나타내고, 또한 제1 및 제2 응답 메시지들(350, 360)이 수신되었다는 것을 나타낸다 "Ack[A,1-2]". 메시지(330b)는 또한 메시지(330a)에 포함된 식별자 "β"를 포함한다. 메시지(330b)를 수신하는 경우, 응답 컴퓨터 시스템(105)은 응답 메시지(370) "Sequence[A,3],Ack[B,1-3]RelatesTo[β]"를 송신한다. 메시지(370)는, 그것이 제3 응답 메시지(즉, "[A,3]")라는 것을 나타내고 또한 응답 컴퓨터 시스템(105)이 요청 컴퓨터 시스템(100)이 송신한 3개 메시지 각각을 지금 수신했다는 것을 나타낸다. 또한, 메시지(370)의 "RelatesTo" 필드 내의 제2 식별자 "β"는, 이러한 메시지가 재시도된 요청 메시지(330b)에 대한 응답이라는 것을 요청 컴퓨터 시스템(100)에게 알린다.
모든 메시지들이 지금 수신되었고 요청 컴퓨터 시스템(100)과 응답 컴퓨터 시스템(105) 사이에서 적절하게 확인되었기 때문에, 요청 컴퓨터 시스템(100)은 종단-대-종단 접속을 종료한다. 특히, 요청 컴퓨터 시스템(100)은, 식별자 "Ack[A,1-3]"을 갖는 응답 메시지들(350, 360, 370) 각각을 확인하고 종료 메시지 식별자 "δ"를 포함하는 접속 종료 메시지(380) "Terminate[B]Ack[A,1-3],ID[δ]" 를 송신한다. 그 후, 응답 컴퓨터 시스템(105)은 종료 메시지 식별자 "δ"와 관련있는 응답 메시지(390) "Terminate[A],RelatesTo[δ]"로 응답한다.
따라서, 본원에 기술된 스키마들은 넓은 범위의 메시지 전송 실패들을 수용하고, 메시지들이 요청 컴퓨터 시스템이 의도한 대로 처리되는 것을 보장한다. 특히, 본원에 기술된 스키마들은, 메시지들이 응답 컴퓨터 시스템에 수신되는 순서에 상관없이, 요청 컴퓨터 시스템이 의도하는 대로 응답 컴퓨터 시스템에서 메시지들이 어떻게 특정된 순서로 처리될 수 있는지를 설명한다. 본 발명은 또한 본 발명의 방법을 달성하는 동작들의 측면에서 설명된다. 특히, 도 4는 요청-응답 방식으로 메시지들을 신뢰성있게 송신 및 수신하는, 요청 컴퓨터 시스템(100) 관점 및 응답 컴퓨터 시스템(105) 관점 모두로부터의 흐름도 형태의 방법들을 예시한다.
예를 들어, 도 4는 요청 컴퓨터 시스템(100) 관점으로부터의 방법은 종단-대-종단 접속을 확립하는 단계(400)를 포함한다는 것을 보여준다. 단계(400)는 또한 응답 컴퓨터 시스템과의 네트워크 접속을 확립하는 단계를 포함한다. 예를 들어, 요청 컴퓨터 시스템(400)은, 메시지들이 응답 컴퓨터 시스템(105)에 의해 접속시 어떻게 처리될 것인지를 기술할 수 있는 접속 계약(도시되지 않음)을 포함할 수 있는 메시지(110) "CreateSequence[Offer=A]"를 송신한다. 유사하게, 응답 컴퓨터 시스템(105) 관점으로부터의 방법은 종단-대-종단 접속을 수락하는 단계(410)를 포함한다. 단계(410)는 요청 컴퓨터 시스템과의 종단-대-종단 접속을 수락하는 단계를 포함한다. 예를 들어, (하나가 특정되어 있다면) 접속 계약 조건에 따라 종단-대-종단 접속을 수락하는 메시지(120) "Create SequenceResponse[B]"를 송신함으로 써 종단-대-종단 접속을 응답 컴퓨터 시스템(105)이 수락한다.
또한, 도 4는 요청 컴퓨터 시스템(100) 관점으로부터의 방법이 제1 메시지를 송신하는 단계(420)를 포함한다는 것을 보여준다. 단계(420)는 제1 식별자를 포함하는 제1 메시지를 응답 컴퓨터 시스템으로 송신하는 단계를 포함한다. 예를 들어, 요청 컴퓨터 시스템(100)은, 메시지(130)를 고유하게 식별하는 제1 식별자 "α"를 포함하는 제1 메시지(130) "Sequence[B,1]ID[α]"를 송신함으로써 요청-응답 시퀀스를 개시한다. 그러므로, 응답 컴퓨터 시스템(105)으로부터의 대응하는 방법은, 제1 메시지를 수신하는 단계(430)를 포함한다. 단계(430)는 제1 식별자를 포함하는 제1 메시지를 요청 컴퓨터 시스템으로부터 수신하는 단계를 포함한다. 예를 들어, 응답 컴퓨터 시스템(105)은 메시지(130) "Sequence[B,1]ID[α]"를 수신하고 제1 식별자 "α"를 식별한다. 확립된 종단-대-종단 접속을 정의하는 계약에 따라, 응답 컴퓨터 시스템(105)은 또한 메시지(430)를 처리하거나 추가의 통지가 있을 때까지 메시지(430)의 콘텐츠를 캐시한다.
응답 컴퓨터 시스템(105)으로부터의 방법은 또한 응답 메시지를 송신하는 단계(450)를 포함한다. 단계(450)는 응답 메시지를 요청 컴퓨터 시스템으로 송신하는 단계를 포함한다. 예를 들어, 메시지(130)를 수신한 후, 응답 컴퓨터 시스템(105)은 메시지(130)를 처리하고, 메시지(140)가 제1 식별자 "α"와 관련있는(즉, "RelatesTo") 것을 나타내는 표시자를 포함하는 응답 메시지(140) "Sequence[A,1].Ack[B,1-1],RelatesTo[α]"를 준비하고 송신한다. 따라서, 도 4는 요청 컴퓨터 시스템(100) 관점으로부터의 방법도 응답 메시지를 수신하는 단계 (440)를 포함한다는 것을 나타낸다. 단계(440)는 응답 컴퓨터 시스템으로부터 응답 메시지를 수신하는 단계를 포함한다. 예를 들어, 요청-응답 시퀀스는 요청 컴퓨터 시스템(100)이 응답 메시지(140) "Sequence[A,1],Ack[B,1-1],RelatesTo[α]"를 수신하는 경우 완료된다. 메시지(140)는, 제1 메시지(130)의 수신을 확인하고 메시지(140)가 메시지(130)의 응답이라는 것을 나타내는, 확인 표시자 "Ack[B,1-1]", 및 "relate to(즉, "RelatesTo")" 필드를 포함한다. 그러나, 예를 들어 소정 횟수의 재시도 이후, 또는 응답을 대기하는 경우 소정의 지연량 이후 제1 메시지가 실패했다고 판단되는 경우 요청-응답 시퀀스는 또한 완료될 수 있다.
도 4는 또한 요청 컴퓨터 시스템(100) 관점으로부터의 방법이 접속 종료 메시지를 송신하는 단계(460)를 포함한다는 것을 보여준다. 단계(460)는, 종료 메시지 식별자, 및 응답 메시지가 수신되었다는 것을 나타내는 확인을 포함하는 접속 종료 메시지를 응답 컴퓨터 시스템에게 송신하는 단계를 포함한다. 예를 들어, 요청 컴퓨터 시스템이 궁극적으로, 요청 컴퓨터 시스템(100)에 의해 송신된 모든 메시지들이 수신되었다는 응답 컴퓨터 시스템(105)으로부터의 확인 및 확인을 운반하는 응답 메시지를 수신하고, 또한 응답 컴퓨터 시스템(105)으로부터 송신된 모든 응답 메시지들이 수신되었다는 것을 식별한다. 그 후, 요청 컴퓨터 시스템(100)은 접속 종료 메시지(170) "Terminate[B],Ack[A,1-2]ID[γ]"를 송신한다. 접속 종료 메시지(170)는 또한 수신된 응답 메시지들을 확인하고 "Ack[A,1-2]", 특정 종료 메시지 식별자 "γ"를 포함한다.
또한, 도 4는 응답 컴퓨터 시스템(105) 관점으로부터의 방법이 접속 종료 메 시지를 수신하는 단계(470)를 포함한다는 것을 보여준다. 단계(470)는, 종료 메시지 식별자, 및 응답 메시지가 수신되었다는 확인을 포함하는 접속 종료 메시지를 요청 컴퓨터 시스템으로부터 수신하는 단계를 포함한다. 예를 들어, 응답 컴퓨터 시스템(105)은, 응답 메시지들(140, 160)의 수신을 (즉, "Ack[A,1-2]"를 통해) 확인하고 메시지(170)를 고유하게 식별하는 종료 식별자 "γ"를 포함하는 메시지(170) "Terminate[B]Ack[A,1-2][IDγ]"를 수신한다.
응답 시, 도 4는 응답 컴퓨터 시스템(105) 관점으로부터의 방법이 종단-대-종단 접속 종료 프로세스를 완료하기 위한 응답 메시지를 송신하는 단계(490)를 포함한다는 것을 보여준다. 단계(490)는 종료 메시지 식별자와 관련있는 응답 종료 메시지를 송신하는 단계를 포함한다. 예를 들어, 응답 컴퓨터 시스템(105)은, 종단-대-종단 종료 메시지(170) 내의 종료 식별자 "γ"와 "관련되는(RelatesTo)" 종료 응답 메시지(180) "Terminate[A],RelatesTo[γ]"를 송신한다. 따라서, 도 4는, 요청 컴퓨터 시스템(100) 관점으로부터의 방법이 종료 응답 메시지를 수신하는 단계(480)를 포함한다는 것을 보여준다. 단계(480)는 종료 메시지 식별자와 관련있는 종료 응답 메시지를 수신하는 것을 포함한다. 예를 들어, 요청 컴퓨터 시스템(100)이, 종단-대-종단 접속을 종료하는 요청을 확인하는 메시지(180)를 수신하고, 요청 컴퓨터 시스템(100)은 종단-대-종단 접속을 닫게 한다.
본원에 설명되거나 예시된 구현들은 또한 적절한 경우, 메시지들, 응답들 및/또는 확인들을 교환하도록 구성된 요청 컴퓨터 시스템(100) 및 응답 컴퓨터 시스템(105) 모두를 갖는 시스템으로 설명될 수 있다. 다음의 시스템 예는 또한 앞선 개략도들로 설명될 것이다. 즉, 요청 컴퓨터 시스템이 요청 메시지들을 응답 컴퓨터 시스템으로 송신하고 응답 컴퓨터 시스템은 응답 메시지를 사용하여 각 요청 메시지에 응답하는 컴퓨터 환경 시스템에서, 요청-응답 전송을 사용하여 요청 메시지들을 신뢰성있게 송신 및 수신하고, 응답 메시지들을 신뢰성있게 송신 및 수신하기 위한 방법은 다음에 따른 단계들을 포함한다.
일 예에서, 요청 컴퓨터 시스템(100)은, 요청-응답 전송 접속의 요청-레그 상에서 응답 컴퓨터 시스템으로 접속 요청 메시지(예를 들면, 110)를 송신함으로써 응답 컴퓨터 시스템(105)과의 종단-대-종단 접속을 확립한다. 반환 시, 응답 요청 시스템(105)은 접속 요청을 수락하고, 요청-응답 전송 접속의 응답-레그 상에서 요청 컴퓨터 시스템으로 그러한 것의 표시를 제공한다. 즉, 응답 컴퓨터 시스템(105)은 요청-응답 전송 접속의 응답-레그 상에서 접속 수락 메시지(예를 들어, 120)를 송신한다. 이러한 메시지 교환의 완료 이후, 요청 컴퓨터 시스템(100) 및 응답 컴퓨터 시스템(105)은 종단-대-종단 접속을 확립하였다. 그 후, 요청 컴퓨터 시스템(100)은 요청-응답 시퀀스를 개시하고, 확립된 요청-응답 전송 접속의 요청-레그를 사용하여 요청 메시지(예를 들어, 130)를 송신한다. 요청 컴퓨터 시스템(100)은 또한 요청 메시지가 응답 컴퓨터 시스템(105)에 의해 확인될 때까지 요청 메시지(예를 들어, 130)를 캐시한다.
요청 컴퓨터 시스템(100)으로부터의 요청 메시지(예를 들어, 110)가 응답 컴퓨터 시스템(105)에 도달하는 경우, 응답 컴퓨터 시스템(105)은 요청 메시지(예를 들어, 110)를 처리하고, 대응하는 응답 메시지(예를 들어, 140)를 생성한다. 응답 메시지(예를 들어, 140)는, 요청 컴퓨터 시스템(100)의 요청 메시지(110)가 수신되었다는 것을 나타내는 확인(예를 들어, "Ack[B,1-1]")을 포함한다. 요청 메시지(예를 들어, 130)를 사용하는 요청 컴퓨터 시스템(100)과 유사하게, 응답 컴퓨터 시스템(105)은 또한 응답 메시지(예를 들어, 140)가 요청 컴퓨터 시스템(100)에 의해 적절하게 확인될 때까지 응답 메시지(예를 들어, 140)를 캐시한다. 그 후 응답 컴퓨터 시스템(105)은 요청 컴퓨터 시스템에 의해 확립된 요청-응답 전송 접속의 응답-레그만을 사용하여 요청 컴퓨터 시스템(100)에 응답 메시지(예를 들어, 140)를 송신한다.
송신된 메시지에 대한 요청-응답 시퀀스는, 요청 컴퓨터 시스템(100)이 송신된 요청 메시지에 대한 확인을 포함하는(예를 들어, "Ack[B,1-1]") 응답 메시지(예를 들어, 140)를 수신하는 경우 완료된다. (대안적으로, 다른 경우에서는, 요청-응답 시퀀스는 요청 메시지가 임의의 수의 이유로 인해 실패하였다고 판단된 이후에 완료될 수 있다.) 그 후, 요청 컴퓨터 시스템(100)은 요청 메시지의 캐시된 복사본을 삭제한다. 요청 컴퓨터 시스템(100)은 또한 응답 컴퓨터 시스템(105)으로 송신한 다음 메시지(예를 들어, 150)에 수신된 응답 메시지(예를 들어, 140)에 대한 확인(예를 들어, "Ack[A, 1-1]")을 부착한다.
요청 컴퓨터 시스템(100) 및 응답 컴퓨터 시스템(105)은 상술한 방식으로 추가 메시지들을 계속 교환할 수 있다. 예를 들어, 요청 컴퓨터 시스템(100)은 계속 요청 메시지를 송신하고 대응하는 응답 메시지들을 송신하기 위한 요청-응답 접속의 응답-레그를 응답 컴퓨터 시스템(105)에 제공한다. 또한, 요청 및 응답 컴퓨터 시스템 모두는, 다른 컴퓨터 시스템이 이러한 메시지들(본래 송신된 메시지 또는 재시도)의 수신을 확인할 때까지 메시지들을 계속 캐시한다. 또한, 요청 및 응답 컴퓨터 시스템 모두는 또한 그들이 송신한 메시지들에 대응하는 확인들을 부착하여, 송신된 메시지들이 송신한 메시지들의 성공적인 수신을 다른 컴퓨터 시스템에게 표시할 것이다. 또한, 메시지들이 적절하게 확인되는 경우, 컴퓨터 시스템들 모두는 이러한 메시지들의 캐시된 버전들을 삭제한다.
모든 요청 메시지들이 적절하게 송신되고 확인된 후, 모든 응답 메시지들이 수신되고, 임의의 또는 모든 요청-응답 시퀀스들이 완료되도록, 요청 컴퓨터 시스템(100)은 확립된 요청-응답 전송 접속의 요청-레그 상에서 접속 종료 메시지(예를 들어, 170)를 송신한다. 접속 종료 메시지(예를 들어, 170)는 최종 수신된 것(예를 들어, 160)을 포함하여, 모든 응답 컴퓨터 시스템의 응답 메시지들의 확인(예를 들어, "Ack[A,1-2]")를 포함한다. 그 후, 응답 컴퓨터 시스템(105)은 접속 종료 메시지(예를 들어, 170) 및 수반되는 확인(예를 들어, "Ack[A,1-2]")을 수신하고, 확인된 응답 메시지들의 캐시된 복사본을 삭제한다.
따라서, 본원에 설명된 스키마 및 방법들은 요청-응답 전송들을 사용하는 신뢰성있는 메시징과 관련된 수많은 이점을 제공한다. 예를 들어, 본 발명의 구현들은, 확립된 종단-대-종단 접속의 요청 또는 응답 컴퓨터 시스템에서의 또는 전송 중개자(예를 들어, HTTP 프록시 서버) 또는 (SOAP 라우터들과 같은) 메시징 중개자들과 같은 접속의 하나 이상의 중간 노드들에서의 넓은 범위의 메시징 실패들을 수용할 수 있다.
또한, 본 발명의 하나 이상의 구현들은 적절하게 확인되지 않은 메시지들이 재송신될 수 있으나, 그럼에도 불구하고 접속 계약에 따라서만 처리될 수 있다는 것을 보장하는 단계를 포함한다. 일 측면에서, 이러한 것은 원하는 경우 복제 프로세싱이 회피될 수 있다는 것을 보장하거나 원하는 경우 순서화된 프로세싱이 달성될 수 있다는 것을 보장할 수 있다. 또한, 본 발명의 구현들은, 통신 스택의 전송 또는 메시지 계층들이 메시지들을 상관시키는지 여부에 따라 하부 요청-응답 전송의 적절한 응답 레그들 상에서 응답 메시지들이 송신될 수 있게 한다. 또한, 본 발명의 하나 이상의 구현들은 확인이 포지티브 형태(즉, 수신된 메시지들을 특정함), 네거티브 형태(즉, 누락된 메시지들을 특정함), 또는 그 조합으로 표현될 수 있게 할 수 있다.
도 5 및 다음의 설명은 본 발명이 구현될 수 있는 적절한 컴퓨팅 환경의 간략하고 일반적인 설명을 제공하고자 하는 것이다. 요구되지는 않지만, 본 발명은 네트워크 환경들 내의 컴퓨터들에 의해 실행되는, 프로그램 모듈들과 같은, 컴퓨터 실행가능한 명령들의 일반적인 문맥으로 기술될 것이다. 일반적으로 프로그램 모듈들은, 특정 태스크들을 수행하거나 특정한 추상 데이터 유형들을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 컴퓨터 실행가능한 명령들, 연관된 데이터 구조 및 프로그램 모듈들은 본원에 개시된 방법들의 동작들을 실행하기 위한 프로그램 코드 수단의 예들을 나타낸다. 그러한 실행가능한 명령들 또는 연관된 데이터 구조들의 특정 시퀀스는 그러한 동작들에 기술된 기능들을 구현하기 위한 대응하는 동작들의 예들을 표현한다.
본 기술 분야의 당업자는, 개인용 컴퓨터, 핸드헬드 장치들, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그램가능 소비자 가전기기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는, 많은 유형의 컴퓨터 시스템 구성들을 갖는 네트워크 컴퓨팅 환경들에서 본 발명이 구현될 수 있다는 것을 이해할 것이다. 본 발명은 또한 로컬 및 원격 프로세싱 장치들이 태스크들을 수행하고 통신 네트워크를 통해 (유선 링크, 무선 링크 또는 유선 또는 무선 링크들의 조합중 어느 하나에 의해) 연결되는 분산 컴퓨팅 환경들에서 구현될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈들은 로컬 및 원격 메모리 저장 장치들에 배치될 수 있다.
도 5를 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은, 프로세싱 유닛(521), 시스템 메모리(522), 및 시스템 메모리(522)를 포함하는 다양한 시스템 컴포넌트들을 프로세싱 유닛(521)에 연결하는 시스템 버스(523)를 포함하는, 종래의 컴퓨터(520) 형태의 범용 컴퓨팅 장치를 포함한다. 시스템 버스(523)는 메모리 버스 또는 메모리 컨트롤러, 주변장치 버스, 및 다양한 버스 아키텍처들 중 임의의 것을 사용하는 로컬 버스를 포함하는 몇몇 유형의 버스 구조들 중 임의의 것일 수 있다. 시스템 메모리는 ROM(524), RAM(525)을 포함한다. 시동 동안과 같이, 컴퓨터(520) 내의 요소들 간의 정보 전달을 돕는 기본 루틴을 포함하는 BIOS(basic input/output system)(526)은 ROM(524)에 저장될 수 있다.
컴퓨터(520)는 또한 자기 하드 디스크(539)에 대해 판독 및 기록하기 위한 자기 하드 디스크 드라이브(527), 착탈식 자기 디스크(529)에 대해 판독 또는 기록하기 위한 자기 디스크 드라이브(528), 및 CD ROM 또는 기타 광 매체와 같은 착탈 식 광 디스크(531)에 대해 판독 또는 기록하기 위한 광 디스크 드라이브(530)를 포함할 수 있다. 자기 하드 디스크 드라이브(527), 자기 디스크 드라이브(528) 및 광 디스크 드라이브(530)는 하드 디스크 드라이브 인터페이스(532), 자기 디스크 드라이브 인터페이스(533), 및 광 드라이브 인터페이스(534)에 의해 각각 시스템 버스(523)에 접속된다. 드라이브들 및 그들의 연관된 컴퓨터 판독가능한 매체는 컴퓨터 실행가능한 명령, 데이터 구조, 프로그램 모듈 및 기타 데이터의 불휘발성 저장을 컴퓨터(520)에 제공한다. 본원에 설명된 예시적인 환경이 자기 하드 디스크(539)를 사용하더라도, 자기 카세트, 플래시 메모리 카드, DVD, 베르누이 카트리지, RAM들, ROM들 등을 포함하여, 착탈식 자기 디스크(529) 및 착탈식 광 디스크(531), 데이터를 저장하기 위한 기타 유형의 컴퓨터 판독가능한 매체가 사용될 수 있다.
하나 이상의 프로그램 모듈들을 포함하는 프로그램 코드 수단은, 운영 시스템(535), 하나 이상의 어플리케이션 프로그램들(536), 기타 프로그램 모듈들(537) 및 프로그램 데이터(538)를 포함하여, 하드 디스크(539), 자기 디스크(529), 광 디스크(531), ROM(524), RAM(525) 상에 저장될 수 있다. 사용자는 명령어들 및 정보를 키보드(540), 포인팅 장치(542), 또는 마이크로폰, 조이 스틱, 게임 패드, 위성 접시, 스캐너 등과 같은 기타 입력 장치들(도시되지 않음)을 통해 컴퓨터(520)에 입력할 수 있다. 이러한 입력 장치들 및 기타 입력 장치들은 종종 시스템 버스(523)에 연결된 직렬 포트 인터페이스(546)를 통해 프로세싱 유닛(521)에 접속된다. 대안적으로, 입력 장치들은, 병렬 포트, 게임 포트 또는 USB(universal serial bus)와 같은 기타 인터페이스들에 의해 접속될 수 있다. 모니터(547) 또는 다른 디스플레이 장치도, 비디오 어댑터(548)와 같은 인터페이스를 통해 시스템 버스(523)에 접속된다. 모니터 이외에, 개인용 컴퓨터들은 스피커 및 프린터들과 같은 기타 주변 출력 장치들(도시되지 않음)을 포함한다.
컴퓨터(520)는, 원격 컴퓨터(549a, 549b)와 같은 하나 이상의 원격 컴퓨터들에 대한 논리적 접속들을 사용하는 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(549a, 549b)들은 각각, 다른 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 일반 네트워크 노드일 수 있고, 단지 메모리 저장 장치들550a, 550b) 및 그들의 연관된 어플리케이션 프로그램들(536a, 536b)이 도 5에 예시되어 있더라도, 통상적으로 컴퓨터(520)에 대해 상술한 요소들 중 많은 요소 또는 모든 요소들 포함한다. 도 5에 예시된 논리적 접속들은, 제한이 아니라 예로서 본원에 제공되는 LAN(551) 및 WAN(552)을 포함한다. 그러한 네트워킹 환경들은 사무실형 또는 기업형 컴퓨터 네트워크, 인트라넷 및 인터넷에 일반적이다.
LAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(520)는 네트워크 인터페이스 또는 어댑터(553)를 통해 로컬 네트워크(551)에 접속된다. WAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(520)는 모뎀(554), 무선 링크, 또는 인터넷과 같은 WAN(552)을 통한 통신을 확립하기 위한 기타 수단을 포함할 수 있다. 내장형 또는 외장형일 수 있는 모뎀(554)은 직렬 포트 인터페이스(546)를 통해 시스템 버스(523)에 접속된다. 네트워크화된 환경에서, 컴퓨터(520)에 대해 도시된 프로그램 모듈들 또는 그 일부분들은 원격 메모리 저장 장치에 저장될 수 있다. 도시된 네 트워크 접속들이 예시적이고 WAN(552)를 통한 통신을 확립하기 위한 기타 수단이 사용될 수 있다는 것을 이해할 것이다.
본 발명은 본 발명의 사상 또는 본질적인 특성에 벗어나지 않고 기타 특정 유형들로 구현될 수 있다. 설명된 실시예들은 모든 측면에서 제한적이지 않고 예시적인 것으로만 고려된다. 따라서, 본 발명의 범위는 앞선 상세한 설명이 아닌 첨부된 특허청구범위에 의해 나타내어진다. 특허청구범위의 등가의 범위 및 의미 내에서 발생하는 모든 변경들은 특허청구범위의 범위 내에 포함된다.
본 발명에 따르면, 신뢰성있는 요청-응답 메커니즘들을 보장하는 시스템, 방법 및 컴퓨터 프로그램들을 제공할 수 있다. 특히, 네트워크 접속의 요청 컴퓨터 시스템과 응답 컴퓨터 시스템 간의 효율적인 요청 및 응답 메시지들, 및 그의 대응 확인들을 가능하게 하는 응답-요청 메커니즘들을 사용할 수 있다.

Claims (17)

  1. 요청 컴퓨터 시스템이 요청 메시지들을 응답 컴퓨터 시스템에 송신하고 응답 컴퓨터 시스템이 응답 메시지를 사용하여 각 요청 메시지에 응답하는 컴퓨터 환경 내의 요청 컴퓨터 시스템에서, 상기 응답 컴퓨터 시스템이 상기 송신된 메시지들을 의도된 대로만 처리하도록 요청-응답 전송(request-reply transport)을 사용하여, 요청 메시지들을 신뢰성있게 송신하고, 응답 메시지들을 신뢰성있게 수신하기 위한 방법으로서,
    상기 요청 컴퓨터 시스템에 의해 확립된 요청-응답 전송 접속의 요청 레그(request leg)를 사용하여 초기 요청 메시지를 응답 컴퓨터 시스템에 송신함으로써 요청-응답 시퀀스를 개시하는 단계,
    상기 요청-응답 전송의 실패-표시 메커니즘을 통해 상기 초기 요청 메시지가 실패했다는 실패 표시(failure indication)를 수신하는 단계, 및
    메시징 시퀀스가 완료될 때까지 상기 응답 컴퓨터 시스템에 상기 초기 요청 메시지의 캐시된 복사본(cached copy)을 계속적으로 송신하는 단계를 포함하며,
    상기 초기 요청 메시지의 캐시된 복사본을 송신하는 단계는 응답 메시지를 송신하기 위한 요청-응답 전송 접속의 응답 레그(reply-leg)를 상기 응답 컴퓨터 시스템에 제공하는 방법.
  2. 제1항에 있어서, 상기 메시징 시퀀스의 완료는, 상기 응답 컴퓨터 시스템으 로부터 상기 초기 요청 메시지의 수신을 확인하는 메시지를 수신하는 것을 포함하는 방법.
  3. 제1항에 있어서, 상기 메시징 시퀀스의 완료는, 실패한 재시도들의 하나 이상의 임계값들을 식별하는 경우 상기 초기 요청 메시지가 재시도되지 않아야 한다고 판단하거나, 또는 특정 시간 이후 응답이 수신되지 않았다고 판단하는 것을 포함하는 방법.
  4. 제1항에 있어서, 상기 실패 표시는, 상기 요청-응답 전송에서의 실패로 인해 상기 요청 컴퓨터 시스템에 도달하지 못한 상기 초기 요청 메시지에 대한 응답 메시지에 의해 트리거되는 방법.
  5. 제4항에 있어서,
    상기 응답 컴퓨터 시스템으로부터 상기 초기 요청 메시지 및 다른 요청 메시지의 수신을 확인하는 다른 응답 메시지를 수신하는 단계 - 상기 다른 응답 메시지는 성공적으로 완료된 다른 요청-응답 메시지 교환을 통해 수신됨 - , 및
    상기 다른 응답 메시지의 수신을 확인하는 상기 초기 요청 메시지의 캐시된 복사본을 상기 응답 컴퓨터 시스템에 송신하는 단계를 더 포함하고,
    상기 초기 요청 메시지의 캐시된 복사본을 송신하는 단계는 초기 응답 메시지의 캐시된 버전을 송신하기 위한 요청-응답 전송 접속의 응답 레그를 상기 응답 컴퓨터 시스템에 제공하는 방법.
  6. 제1항에 있어서,
    상기 초기 요청 메시지가 성공적으로 송신되었다는 것 및 어떠한 응답 메시지도 수신되지 않았다는 것을 식별하는 단계, 및
    특정된 지연 간격 이후에 상기 초기 요청 메시지의 캐시된 복사본을 반복적으로 송신하는 단계를 더 포함하고,
    상기 초기 요청 메시지의 캐시된 복사본 각각을 송신하는 단계는 초기 응답 메시지를 송신하기 위한 상기 확립된 요청-응답 전송 접속의 응답-레그를 상기 응답 컴퓨터 시스템에게 제공하는 방법.
  7. 제1항에 있어서,
    상기 초기 요청 메시지에 대한 초기 응답 메시지를 수신하는 단계,
    다른 어떠한 요청 메시지도 송신될 필요가 없어서 상기 초기 응답 메시지의 확인을 송신하기 위한 추가의 요청 메시지 없이 특정된 시간 간격이 경과했다는 것을 식별하는 단계, 및
    어떠한 요청도 포함하지 않는 확인 메시지를 상기 응답 컴퓨터 시스템에 송신하는 단계를 더 포함하는 방법.
  8. 제1항에 있어서,
    상기 메시징 시퀀스의 완료 시 상기 응답 컴퓨터 시스템에 접속 종료 메시지를 송신함으로써 종료 메시징 시퀀스를 개시하는 단계,
    상기 요청-응답 전송의 실패-표시 메커니즘을 통해 상기 접속 종료 메시지가 실패했다는 것을 식별하는 단계, 및
    상기 종료 메시징 시퀀스가 완료될 때까지 상기 접속 종료 메시지를 재송신하는 단계를 더 포함하는 방법.
  9. 제8항에 있어서,
    상기 종료 메시징 시퀀스의 완료를 식별하는 것은, 상기 요청 컴퓨터 시스템에 의해 확립된 상기 전송 접속의 응답-레그 상에서 상기 응답 컴퓨터 시스템으로부터의 접속 종료 응답을 수신하는 것을 포함하는 방법.
  10. 제8항에 있어서, 상기 종료 메시징 시퀀스의 완료를 식별하는 것은, 접속 종료 시퀀스가 실패라고 판단하는 것을 포함하는 방법.
  11. 제10항에 있어서, 상기 종료 메시징 시퀀스의 완료는, 실패된 재시도들의 하나 이상의 임계값을 식별하는 경우 상기 초기 요청 메시지가 재시도되지 않아야 한다고 판단하거나, 또는 특정 시간 이후 어떠한 응답도 수신되지 않았다고 판단하는 것을 포함하는 방법.
  12. 요청 컴퓨터 시스템이 요청 메시지들을 응답 컴퓨터 시스템으로 송신하고 응답 컴퓨터 시스템이 응답 메시지를 사용하여 각 요청 메시지에 응답하는 컴퓨터 환경 내의 응답 컴퓨터 시스템에서, 상기 응답 컴퓨터 시스템이 상기 송신된 메시지들을 의도된 대로만 처리하도록 요청-응답 전송을 사용하여, 요청 메시지들을 신뢰성있게 수신하고, 응답 메시지들을 신뢰성있게 송신하기 위한 방법으로서,
    요청-응답 전송을 통해 요청 컴퓨터 시스템으로부터 하나 이상의 요청-응답 접속들 중 임의의 접속 상에서 메시지를 수신하는 단계, 및
    상기 하나 이상의 요청-응답 접속들 중 임의의 접속의 응답 레그 상에서만 상기 요청 컴퓨터 시스템에 메시지를 송신하는 단계
    를 포함하는 방법.
  13. 제12항에 있어서,
    상기 요청 컴퓨터 시스템에 의해 확립된 하나 이상의 요청-응답 전송 접속들 중 하나를 통해 상기 요청 컴퓨터 시스템으로부터 확인 메시지를 수신하는 단계 - 상기 확인 메시지는 어떠한 추가 요청 메시지도 포함하지 않으며, 상기 응답 컴퓨터 시스템에서 캐시된 하나 이상의 이전에 송신된 응답 메시지들을 참조함 - ,
    상기 요청 컴퓨터 시스템이 어떠한 요청도 제공하지 않았다는 것을 상기 수신된 확인 메시지로부터 식별하는 단계,
    확인된 하나 이상의 응답 메시지들의 캐시된 복사본을 삭제하는 단계, 및
    상기 하나 이상의 요청-응답 전송 접속들 중 하나의 제공된 응답 레그를 사 용하여 상기 요청 컴퓨터 시스템에 반환 확인 메시지를 송신하는 단계
    를 더 포함하고,
    상기 반환 확인 메시지는 어떠한 응답 메시지도 포함하지 않고, 이전에 수신된 요청 메시지들 모두의 수신을 확인하는 방법.
  14. 제12항에 있어서, 새로운 요청 메시지가 상기 요청 컴퓨터 시스템에 의해 전송되고, 상기 응답 컴퓨터 시스템이 적어도 일시적으로 상기 새로운 요청 메시지를 수락 또는 처리하지 못하여, 상기 응답 컴퓨터 시스템에 의해 송신된 상기 하나 이상의 메시지들 중 하나가, 상기 새로운 요청 메시지가 아니라, 상기 요청 컴퓨터 시스템에 의해 송신되어 이전에 수신된 임의의 다른 요청 메시지들만을 확인하는 방법.
  15. 제12항에 있어서, 초기 요청 메시지 및 후속 요청 메시지가 수신 및 처리되고, 대응하는 초기 응답 및 후속 응답 메시지들이 상기 요청 컴퓨터 시스템에 송신되며,
    상기 후속 응답 메시지만의 수신을 확인하는 새로운 메시지를 상기 요청 컴퓨터 시스템으로부터 수신하는 단계, 및
    최근에 수신된 새로운 메시지에 의해 제공된 응답 레그 상에서 상기 초기 응답 메시지의 캐시된 복사본을 상기 요청 컴퓨터 시스템에 송신하는 단계를 더 포함하는 방법.
  16. 제15항에 있어서, 상기 초기 요청 메시지는 상기 요청 컴퓨터 시스템에 의해 송신되거나 상기 응답 컴퓨터 시스템에서 수신되는 제1 요청 메시지와는 상이한 방법.
  17. 요청 컴퓨터 시스템이 요청 메시지들을 응답 컴퓨터 시스템에 송신하고 응답 컴퓨터 시스템이 응답 메시지를 사용하여 각 요청 메시지에 응답하는 컴퓨터 환경 내의 요청 컴퓨터 시스템에서, 실행되는 경우, 상기 응답 컴퓨터 시스템이 상기 송신된 메시지들을 의도된 대로만 처리하도록 요청-응답 전송을 사용하여, 요청 메시지들을 신뢰성있게 송신하고, 응답 메시지들을 신뢰성있게 수신하는 방법을 상기 요청 컴퓨터 시스템에서의 하나 이상의 프로세서들이 실행하게 하는 컴퓨터 실행가능한 명령어들을 저장하고 있는 컴퓨터 프로그램 제품으로서,
    상기 방법은,
    상기 요청 컴퓨터 시스템에 의해 확립된 요청-응답 전송 접속의 요청 레그를 사용하여 초기 요청 메시지를 응답 컴퓨터 시스템에 송신함으로써 요청-응답 시퀀스를 개시하는 단계,
    상기 요청-응답 전송의 실패-표시 메커니즘을 통해 상기 초기 요청 메시지가 실패했다는 실패 표시를 수신하는 단계, 및
    상기 메시징 시퀀스가 완료될 때까지 상기 응답 컴퓨터 시스템에 상기 초기 요청 메시지의 캐시된 복사본을 계속적으로 송신하는 단계
    를 포함하고,
    상기 초기 요청 메시지의 캐시된 복사본을 송신하는 단계는 응답 메시지를 송신하기 위한 상기 요청-응답 전송 접속의 응답-레그를 상기 응답 컴퓨터 시스템에 제공하는 컴퓨터 프로그램 제품.
KR1020060004813A 2005-03-08 2006-01-17 요청-응답 전송을 사용하여, 요청 메시지들을 신뢰성있게송신하고, 응답 메시지들을 신뢰성있게 수신하기 위한 방법및 컴퓨터 프로그램 제품 KR101159363B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/075,418 US7359919B2 (en) 2005-03-08 2005-03-08 Reliable request-response messaging over a request-response transport
US11/075,418 2005-03-08

Publications (2)

Publication Number Publication Date
KR20060099393A true KR20060099393A (ko) 2006-09-19
KR101159363B1 KR101159363B1 (ko) 2012-06-25

Family

ID=36118261

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060004813A KR101159363B1 (ko) 2005-03-08 2006-01-17 요청-응답 전송을 사용하여, 요청 메시지들을 신뢰성있게송신하고, 응답 메시지들을 신뢰성있게 수신하기 위한 방법및 컴퓨터 프로그램 제품

Country Status (5)

Country Link
US (1) US7359919B2 (ko)
EP (1) EP1701509A1 (ko)
JP (1) JP4916192B2 (ko)
KR (1) KR101159363B1 (ko)
CN (1) CN1832475B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010144738A3 (en) * 2009-06-12 2011-03-03 Microsoft Corporation Providing resource-related information using a standardized format

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8516054B2 (en) * 2000-12-20 2013-08-20 Aurea Software, Inc. Message handling
US8301800B1 (en) 2002-07-02 2012-10-30 Actional Corporation Message processing for distributed computing environments
US8191078B1 (en) 2005-03-22 2012-05-29 Progress Software Corporation Fault-tolerant messaging system and methods
US8301720B1 (en) * 2005-07-18 2012-10-30 Progress Software Corporation Method and system to collect and communicate problem context in XML-based distributed applications
US20070106804A1 (en) * 2005-11-10 2007-05-10 Iona Technologies Inc. Method and system for using message stamps for efficient data exchange
WO2008048304A2 (en) * 2005-12-01 2008-04-24 Firestar Software, Inc. System and method for exchanging information among exchange applications
US7710958B2 (en) 2006-01-20 2010-05-04 Iona Technologies Limited Method for recoverable message exchange independent of network protocols
US20080014929A1 (en) * 2006-05-05 2008-01-17 Infosys Technologies Ltd. Occasionally connected computing for mobile web services
US8276115B2 (en) * 2007-02-06 2012-09-25 Progress Software Corporation Automated construction and deployment of complex event processing applications and business activity monitoring dashboards
US9009234B2 (en) 2007-02-06 2015-04-14 Software Ag Complex event processing system having multiple redundant event processing engines
WO2008097912A2 (en) * 2007-02-06 2008-08-14 Progress Software Corporation Event-based process configuration
US8812711B2 (en) * 2008-02-27 2014-08-19 Red Hat, Inc. Three-way communication protocol
US8139489B2 (en) * 2008-08-06 2012-03-20 International Business Machines Corporation Robust jitter-free remote clock offset measuring method
US8832580B2 (en) 2008-11-05 2014-09-09 Aurea Software, Inc. Software with improved view of a business process
US20100318376A1 (en) * 2009-06-12 2010-12-16 Microsoft Corporation Message-passing protocol between entities having dissimilar capabilities
EP2465325B1 (en) * 2009-08-12 2019-06-12 Apple Inc. Providing a deny response that specifies a delay time
US8285775B2 (en) * 2009-10-22 2012-10-09 International Business Machines Corporation Expedited transaction failure handling by leveraging a reliable message transport protocol to assist detection of discarded processing
US8533355B2 (en) 2009-11-02 2013-09-10 International Business Machines Corporation Techniques for improved clock offset measuring
US9058191B2 (en) * 2010-03-22 2015-06-16 Qualcomm Incorporated Direct transfer of executable software image to memory allocated by target processor based on transferred image header
US9503223B2 (en) * 2011-03-04 2016-11-22 Blackberry Limited Controlling network device behavior
US8910182B2 (en) 2011-05-27 2014-12-09 Microsoft Corporation Managing and simplifying distributed applications
US9742728B2 (en) * 2011-08-30 2017-08-22 Sonus Networks, Inc. Determining expiration time of bindings for network address translation devices
US9979773B2 (en) * 2013-03-22 2018-05-22 International Business Machines Corporation Managing task object state utilizing a reliable messaging model
US9596297B2 (en) 2013-05-16 2017-03-14 Toshiba Global Commerce Solutions Holdings Corporation Managing communications in a multi-client, multi-server environment
CN105868002B (zh) 2015-01-22 2020-02-21 阿里巴巴集团控股有限公司 一种用于在分布式计算中处理重发请求的方法与设备
WO2017189006A1 (en) * 2016-04-29 2017-11-02 Appdynamics Llc Predictive rollup and caching for application performance data
CN107147562B (zh) * 2017-04-27 2018-09-14 腾讯科技(深圳)有限公司 消息处理方法和装置
CN109474688B (zh) * 2018-11-27 2021-05-14 北京微播视界科技有限公司 即时通信网络请求消息的发送方法、装置、设备和介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60223351A (ja) * 1984-04-20 1985-11-07 Ricoh Co Ltd 通信制御方式
AU591057B2 (en) * 1984-06-01 1989-11-30 Digital Equipment Corporation Local area network for digital data processing system
JPH02100538A (ja) * 1988-10-07 1990-04-12 Japan Radio Co Ltd ローカルエリアネットワークのデータ通信方法
US5604487A (en) * 1993-07-30 1997-02-18 Lockheed Martin Tactical Systems, Inc. Apparatus and method for user-selective data communication with verification
US5897657A (en) * 1996-07-01 1999-04-27 Sun Microsystems, Inc. Multiprocessing system employing a coherency protocol including a reply count
JP4140533B2 (ja) * 1998-02-25 2008-08-27 日本電気株式会社 放送番組蓄積装置
DE60045552D1 (de) * 1999-06-30 2011-03-03 Apptitude Inc Verfahren und gerät um den netzwerkverkehr zu überwachen
US6543005B1 (en) * 1999-10-27 2003-04-01 Oracle Corporation Transmitting data reliably and efficiently
US7099950B2 (en) * 2000-03-13 2006-08-29 At&T Corp. Method and apparatus for using XML for both a protocol layer and application layer
US6772216B1 (en) * 2000-05-19 2004-08-03 Sun Microsystems, Inc. Interaction protocol for managing cross company processes among network-distributed applications
AU2001289010A1 (en) * 2000-09-12 2002-03-26 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity ina computing environment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010144738A3 (en) * 2009-06-12 2011-03-03 Microsoft Corporation Providing resource-related information using a standardized format

Also Published As

Publication number Publication date
CN1832475A (zh) 2006-09-13
JP4916192B2 (ja) 2012-04-11
KR101159363B1 (ko) 2012-06-25
CN1832475B (zh) 2011-07-06
US20060206558A1 (en) 2006-09-14
US7359919B2 (en) 2008-04-15
EP1701509A1 (en) 2006-09-13
JP2006252555A (ja) 2006-09-21

Similar Documents

Publication Publication Date Title
KR101159363B1 (ko) 요청-응답 전송을 사용하여, 요청 메시지들을 신뢰성있게송신하고, 응답 메시지들을 신뢰성있게 수신하기 위한 방법및 컴퓨터 프로그램 제품
US8612617B2 (en) Reliable multicast transport protocol
JP4972304B2 (ja) ウェブサービス環境用の信頼できるメッセージング内の接続生存性の検証および維持
US7929422B2 (en) Method of moving a transport connection among network hosts
US7702924B2 (en) End-to-end reliable messaging with complete acknowledgement
US20040249948A1 (en) Performing application layer transactions during the connection establishment phase of connection-oriented protocols
US7921215B2 (en) Method and apparatus for optimizing and prioritizing the creation of a large number of VPN tunnels
JP6745821B2 (ja) ハイパーテキスト・トランスファ・プロトコル要求の再送方法及びデバイス並びにクライアント端末
US7743160B2 (en) System and method of delaying connection acceptance to support connection request processing at layer-7
JP2006178961A (ja) 要求−応答トランスポートプロトコルによる高信頼一方向メッセージング
CN102025474A (zh) 一种网络数据传输方法
JP2010520687A (ja) 物理伝送媒体が中断した場合のtcpデータ伝送プロセスを改善する方法
US6502128B1 (en) Server and a method for communicating event messages from the server connected to a peripheral device and a client computer
US7689702B1 (en) Methods and apparatus for coordinating processing of network connections between two network protocol stacks
US8276158B2 (en) HTTP based bounding storage space protocol
Banks et al. HTTPR specification
Karneges et al. Stream Management
JP3266199B2 (ja) 信頼性あるデータ転送方法
CN106254430B (zh) 一种文件处理方法和装置、以及一种接口板
Vissers et al. Service Elements
White An Implementation of a Remote Procedure Call Protocol in the Berkeley UNDK* Kernel
Banks et al. Draft Proposal
Pitt Unicast udp
WO2001047214A1 (fr) Procede de transfert de donnees fiable

Legal Events

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

Payment date: 20150515

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160517

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170522

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180516

Year of fee payment: 7