KR20140060333A - 메시지 스트림 무결성 - Google Patents

메시지 스트림 무결성 Download PDF

Info

Publication number
KR20140060333A
KR20140060333A KR1020147008784A KR20147008784A KR20140060333A KR 20140060333 A KR20140060333 A KR 20140060333A KR 1020147008784 A KR1020147008784 A KR 1020147008784A KR 20147008784 A KR20147008784 A KR 20147008784A KR 20140060333 A KR20140060333 A KR 20140060333A
Authority
KR
South Korea
Prior art keywords
message
data
sequence number
time interval
heartbeat
Prior art date
Application number
KR1020147008784A
Other languages
English (en)
Other versions
KR101644996B1 (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 KR20140060333A publication Critical patent/KR20140060333A/ko
Application granted granted Critical
Publication of KR101644996B1 publication Critical patent/KR101644996B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/06Asset management; Financial planning or analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1642Formats specially adapted for sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0823Errors, e.g. transmission errors
    • H04L43/0847Transmission error
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Development Economics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • Environmental & Geological Engineering (AREA)
  • Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Game Theory and Decision Science (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Operations Research (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Communication Control (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

주문 공급 메시지 스트림 무결성을 개선하기 위한 시스템들, 방법들, 및 컴퓨터-판독가능한 저장 매체들이 제공된다. 특정한 실시예들은 컴퓨팅 장치에 의해, 제 1 데이터 메시지를 송신하는 단계; 제 1 정지 메시지를 송신하는 단계; 메시지 스트림 상태를 클리어링하는 단계; 및 제 2 데이터 메시지를 송신하는 단계를 포함하는 방법을 제공한다. 제 1 데이터 메시지는 미리 정의된 초기 시퀀스 번호의 값을 갖는 제 1 시퀀스 번호 및 제 1 위상 번호를 포함한다. 제 2 데이터 메시지는 미리 정의된 초기 시퀀스 번호의 값을 갖는 제 2 시퀀스 번호 및 제 2 위상 번호를 포함하고, 제 2 위상 번호는 제 1 위상 번호와 상이하다. 제 1 및 제 2 데이터 메시지들은 트레이딩가능한 객체에 대한 주문과 관련된 데이터를 포함할 수 있고, 메시지 스트림 상태는 주문과 연관될 수 있다.

Description

메시지 스트림 무결성{MESSAGE STREAM INTEGRITY}
네트워크를 거쳐 하나의 장치로부터 또 다른 장치로 전송되는 메시지들은 목적지 장치에서 수신될 때에 추출되는 컨텐츠를 통상적으로 포함한다. 이후에, 그 컨텐츠에 기반으로 하여 다양한 처리 작업들이 수행된다.
이벤트(event)들은 메시지의 컨텐츠에 종속되므로, 메시지 스트림의 무결성(integrity)을 유지하는 것이 바람직하다. 특히, 손실된 메시지들을 검출하고 메시지 스트림 데이터에서 감소를 달성하기 위한 능력은 특별히 유익하다. 손실된 메시지들의 이러한 검출 및 메시지 스트림 데이터를 감소시키는 것이 특별히 관련되는 하나의 애플리케이션(application) 영역은 전자 트레이딩(electronic trading)의 분야이다.
특정한 실시예들은 다음의 도면들을 참조하여 개시된다.
도 1은 특정한 실시예들에 따라 컴퓨팅 장치의 블록도를 예시한다.
도 2a는 고정된 간격 기술을 갖는 하트비트(heartbeat)를 이용하는 예시적인 메시지들을 예시한다.
도 2b는 증가하는 간격 기술을 갖는 하트비트를 이용하는 예시적인 메시지들을 예시한다.
도 2c는 도 2a 내지 도 2b에 따라 메시지들을 송신하기 위한 예시적인 방법의 흐름도를 예시한다.
도 2d는 도 2a 내지 도 2b에 따라 메시지들을 수신하기 위한 예시적인 방법의 흐름도를 예시한다.
도 3a는 증가하는 간격 기술을 갖는 하트비트를 사용하는 예시적인 메시지들을 예시한다.
도 3b는 정지 메시지 기술을 사용하는 예시적인 메시지들을 예시한다.
도 3c 내지 도 3d는 정지 메시지들을 이용하는 예시적인 메시지들을 예시한다.
도 3e는 정지 메시지들 및 메시지 스트림 클리어링을 이용하는 예시적인 메시지들을 예시한다.
도 3f 내지 도 3h는 정지 메시지들, 메시지 스트림 클리어링, 및 위상 번호(phase number)들을 이용하는 예시적인 메시지들을 예시한다.
도 4는 특정한 실시예들에 따라 위상 번호들을 이용하는 메시지들을 송신하기 위한 예시적인 방법의 흐름도를 예시한다.
도 5는 특정한 실시예들에 따라 위상 번호들을 이용하는 메시지들을 수신하기 위한 예시적인 방법의 흐름도를 예시한다.
도 6은 특정한 실시예들에 따라 예시적인 송신기 장치의 블록도를 예시한다.
도 7은 특정한 실시예들에 따라 예시적인 수신기 장치의 블록도를 예시한다.
도 8은 특정한 실시예들이 채용될 수 있는 전자 트레이딩 시스템의 블록도를 예시한다.
도 9는 도 8의 예시적인 전자 트레이딩 시스템의 블록도를 예시한다.
특정한 실시예들은 예들을 예시하는 제공된 도면들과 함께 읽을 때에 더욱 양호하게 이해될 것이다. 그러나, 실시예들은 첨부된 도면들에 도시된 배치들 및 수단에 제한되지 않는다는 것을 이해해야 한다.
메시지 스트림은 관련된 메시지들에 대한 논리적 통신 채널이다. 손실된 메시지들, 특히, 데이터를 포함하는 그러한 메시지들의 검출은 메시지 스트림 무결성(message stream integrity)을 개선시킨다. 메시지가 손실되는 경우, 손실된 메시지의 재전송을 요청하는 것, 메시지 스트림을 종료(close down)하거나 재설정(reset)하는 것, 로그 파일(log file) 내에 엔트리(entry)를 생성하는 것, 에러 메시지를 제공하는 것, 인터럽트(interrupt)를 발생하는 것, 수신된 데이터를 처리하는 애플리케이션 또는 상위-레벨 프로토콜에 손실된 메시지에 대하여 경고하는 것, 프로그램 실행을 중단하는 것, 메시지가 손실되었음을 하나 또는 그보다 많은 사용자들에게 통지하는 것, 메시지 스트림을 종결시키고 새로운 메시지 스트림을 수립(establish)하는 것, 라이센스를 해제(release) 및 재취득(re-acquire)하는 것, 서버와 재인증(re-authenticate)하는 것, 및/또는 전체 데이터 세트(data set)를 재-다운로딩(re-downloading)하는 바와 같은 다양한 작업들이 취해질 수 있다.
추가적으로, 메시지 스트림 및 메시지 스트림 무결성을 유지하기 위하여 상태 정보가 저장될 필요가 있다. 상태 정보는 중간 장치들뿐만 아니라 송신기 및 수신기에 저장될 수 있다. 이 상태 정보는 메모리와 같은 제한된 자원들을 낭비할 수 있다. 따라서, 메시지 스트림들에 대해 저장될 필요가 있는 상태 정보를 감소시키는 것이 바람직하다.
손실된 메시지들을 검출하기 위하여, 일부 현재의 시스템들은 각각의 메시지에 대해 미리 결정된 양만큼 증분되는 시퀀스 번호 또는 메시지 식별자를 이용하여, 수신자(recipient)는 메시지들이 송신된 순서와, 임의의 메시지들이 손실되었는지 여부의 둘 모두를 결정할 수 있다. 그러나, 메시지들이 드물게 송신될 때에는, 손실된 메시지가 검출되기 전에 용인할 수 없는 지연이 있을 수 있다.
일부 현재의 시스템들은 손실된 메시지들을 검출할 가능성을 증가시키기 위하여 하트비트(heartbeat) 메시지들을 사용한다. 합당한 양의 시간 내에 손실된 메시지를 검출하기 위하여 하트비트 메시지들이 고정된 간격으로 송신될 수 있다. 그러나, 많은 수의 하트비트 메시지들의 송신은 제한된 네트워크 대역폭을 비효율적으로 이용할 수 있고, 및/또는 네트워크 상에서의 다른 데이터 메시지들의 전달을 위한 대기시간(latency)을 증가시킬 수 있다.
개시된 실시예들은 손실된 메시지들을 검출하고 메시지 스트림들에 대해 저장된 상태 정보를 감소시킴으로써 메시지 스트림 무결성을 개선시키기 위한 기술들과 관련된다. 일부 실시예들에서는, 하트비트 메시지들로 인한 네트워크 트래픽을 감소시키면서 손실된 메시지들을 검출할 가능성을 증가시키기 위하여 증가하는 간격 기술(increasing intervals technique)을 갖는 하트비트가 이용된다. 일부 실시예들에서는, 과도한 비-데이터(non-data) 네트워크 트래픽을 감소시키면서 손실된 메시지들을 검출할 가능성을 증가시키기 위하여 정지 메시지 기술(stop message technique)이 구현된다. 일부 실시예들에서는, 메시지 스트림들에 대해 저장된 상태 정보와, 이에 따라, 메모리 사용을 감소시키기 위하여 메시지 스트림 상태 클리어링 기술(message stream state clearing technique)이 구현된다. 일부 실시예들에서는, 손실된 메시지들을 검출할 가능성을 증가시키기 위하여 위상 번호 기술(phase number technique)이 구현된다.
다음 내용은 다른 구성요소들 중에서, 하드웨어 상에서 실행되는 소프트웨어를 포함하는 실시예들을 개시하지만, 실시예들은 예시적인 것에 불과하고 제한하는 것으로 간주되지 않아야 한다는 것에 주목해야 한다. 예를 들어, 이 하드웨어 및 소프트웨어 구성요소들의 임의의 것 또는 전부는 전적으로 하드웨어로, 전적으로 소프트웨어로, 전적으로 펌웨어(firmware)로, 또는 하드웨어, 소프트웨어, 및/또는 펌웨어의 임의의 조합으로 구체화될 수 있다고 구상된다. 따라서, 개시된 실시예들은 다른 방식으로 구현될 수 있다.
I. 간단한 설명
특정한 실시예들은 컴퓨팅 장치에 의해 제 1 데이터 메시지를 송신하는 단계; 컴퓨팅 장치에 의해 제 1 정지 메시지를 송신하는 단계; 및 컴퓨팅 장치에 의해 제 2 데이터 메시지를 송신하는 단계를 포함하는 방법을 제공한다. 제 1 데이터 메시지는 미리 정의된 초기 시퀀스 번호의 값을 갖는 제 1 데이터 메시지 시퀀스 번호를 포함한다. 제 1 데이터 메시지는 제 1 데이터 메시지 위상 번호를 포함한다. 제 1 정지 메시지는 정지 메시지 위상 번호를 포함한다. 정지 메시지 위상 번호는 제 1 데이터 메시지 위상 번호와 동일하다. 제 2 데이터 메시지는 제 1 정지 메시지 이후에 송신된다. 제 2 데이터 메시지는 미리 정의된 초기 시퀀스 번호의 값을 갖는 제 2 데이터 메시지 시퀀스 번호를 포함한다. 제 2 데이터 메시지는 제 2 데이터 메시지 위상 번호를 포함한다. 제 2 데이터 메시지 위상 번호는 제 1 데이터 메시지 위상 번호와 상이하다. 일부 실시예들에서는, 제 1 데이터 메시지 및 제 2 데이터 메시지가 트레이딩가능한 객체(tradable object)에 대한 주문과 관련된 데이터를 포함할 수 있다.
특정한 실시예들은 명령어들이 실행될 때, 컴퓨팅 장치가 제 1 데이터 메시지를 적어도 송신하도록 하고; 제 1 정지 메시지를 송신하도록 하고; 제 2 데이터 메시지를 송신하도록 하는 명령어들을 포함하는 유형의(tangible) 컴퓨터 판독가능한 저장 매체를 제공한다. 제 1 데이터 메시지는 미리 정의된 초기 시퀀스 번호의 값을 갖는 제 1 데이터 메시지 시퀀스 번호를 포함한다. 제 1 데이터 메시지는 제 1 데이터 메시지 위상 번호를 포함한다. 제 1 정지 메시지는 정지 메시지 위상 번호를 포함한다. 정지 메시지 위상 번호는 제 1 데이터 메시지 위상 번호와 동일하다. 제 2 데이터 메시지는 제 1 정지 메시지 이후에 송신된다. 제 2 데이터 메시지는 미리 정의된 초기 시퀀스 번호의 값을 갖는 제 2 데이터 메시지 시퀀스 번호를 포함한다. 제 2 데이터 메시지는 제 2 데이터 메시지 위상 번호를 포함한다. 제 2 데이터 메시지 위상 번호는 제 1 데이터 메시지 위상 번호와 상이하다. 일부 실시예들에서는, 제 1 데이터 메시지 및 제 2 데이터 메시지가 트레이딩가능한 객체에 대한 주문과 관련된 데이터를 포함할 수 있다.
특정한 실시예들은 제 1 데이터 메시지를 송신하기 위한 제 1 데이터 메시지 송신기; 제 1 정지 메시지를 송신하기 위한 제 1 정지 메시지 송신기; 및 제 2 데이터 메시지를 송신하기 위한 제 2 데이터 메시지 송신기를 포함하는 시스템을 제공한다. 제 1 데이터 메시지는 미리 정의된 초기 시퀀스 번호의 값을 갖는 제 1 데이터 메시지 시퀀스 번호를 포함한다. 제 1 데이터 메시지는 제 1 데이터 메시지 위상 번호를 포함한다. 제 1 정지 메시지는 정지 메시지 위상 번호를 포함한다. 정지 메시지 위상 번호는 제 1 데이터 메시지 위상 번호와 동일하다. 제 2 데이터 메시지는 제 1 정지 메시지 이후에 송신된다. 제 2 데이터 메시지는 미리 정의된 초기 시퀀스 번호의 값을 갖는 제 2 데이터 메시지 시퀀스 번호를 포함한다. 제 2 데이터 메시지는 제 2 데이터 메시지 위상 번호를 포함한다. 제 2 데이터 메시지 위상 번호는 제 1 데이터 메시지 위상 번호와 상이하다. 일부 실시예들에서는, 제 1 데이터 메시지 및 제 2 데이터 메시지가 트레이딩가능한 객체에 대한 주문과 관련된 데이터를 포함할 수 있다.
특정한 실시예들은 메시지에 대해 위상 번호를 제공하기 위한 위상 번호 발생기; 메시지에 대해 시퀀스 번호를 제공하기 위한 시퀀스 번호 발생기; 제 1 데이터 메시지를 송신하기 위한 제 1 데이터 메시지 송신기; 제 1 정지 메시지를 송신하기 위한 제 1 정지 메시지 송신기; 및 제 2 데이터 메시지를 송신하기 위한 제 2 데이터 메시지 송신기를 포함하는 시스템을 제공한다. 제 1 데이터 메시지는 시퀀스 번호 발생기에 의해 미리 정의된 초기 시퀀스 번호의 값이 제공되는 제 1 데이터 메시지 시퀀스 번호를 포함한다. 제 1 데이터 메시지는 위상 번호 발생기에 의해 제공되는 제 1 데이터 메시지 위상 번호를 포함한다. 제 1 정지 메시지는 위상 번호 발생기에 의해 제공되는 정지 메시지 위상 번호를 포함한다. 정지 메시지 위상 번호는 제 1 데이터 메시지 위상 번호와 동일하다. 제 2 데이터 메시지는 제 1 정지 메시지 이후에 송신된다. 제 2 데이터 메시지는 시퀀스 번호 발생기에 의해 미리 정의된 초기 시퀀스 번호의 값이 제공되는 제 2 데이터 메시지 시퀀스 번호를 포함한다. 제 2 데이터 메시지는 위상 번호 발생기에 의해 제공되는 제 2 데이터 메시지 위상 번호를 포함한다. 제 2 데이터 메시지 위상 번호는 제 1 데이터 메시지 위상 번호와 상이하다. 일부 실시예들에서는, 제 1 데이터 메시지 및 제 2 데이터 메시지가 트레이딩가능한 객체에 대한 주문과 관련된 데이터를 포함할 수 있다.
특정한 실시예들은 컴퓨팅 장치에 의해, 새로운 메시지가 송신될 것인지를 검출하는 단계; 컴퓨팅 장치에 의해, 새로운 메시지에 대한 위상 번호를 결정하는 단계; 컴퓨팅 장치에 의해, 새로운 메시지에 대한 시퀀스 번호를 결정하는 단계; 및 컴퓨팅 장치에 의해, 위상 번호 및 시퀀스 번호를 갖는 새로운 메시지를 송신하는 단계를 포함하는 방법을 제공한다.
특정한 실시예들은 명령어들이 실행될 때, 컴퓨팅 장치가 새로운 메시지가 송신될 것인지를 적어도 검출하도록 하고; 새로운 메시지에 대한 위상 번호를 결정하도록 하고; 새로운 메시지에 대한 시퀀스 번호를 결정하도록 하고; 위상 번호 및 시퀀스 번호를 갖는 새로운 메시지를 송신하도록 하는 명령어들을 포함하는 유형의 컴퓨터 판독가능한 저장 매체를 제공한다.
특정한 실시예들은 새로운 메시지가 송신될 것인지를 검출하기 위한 새로운 메시지 검출기; 새로운 메시지에 대한 위상 번호를 결정하기 위한 위상 번호 발생기; 새로운 메시지에 대한 시퀀스 번호를 결정하기 위한 시퀀스 번호 발생기; 및 위상 번호 및 시퀀스 번호를 갖는 새로운 메시지를 송신하기 위한 메시지 송신기를 포함하는 시스템을 제공한다.
특정한 실시예들은 컴퓨팅 장치에 의해, 메시지 위상 번호 및 메시지 시퀀스 번호를 포함하는 새로운 메시지를 수신하는 단계; 컴퓨팅 장치에 의해, 새로운 메시지에 대한 예상된 위상 번호를 결정하는 단계; 컴퓨팅 장치에 의해, 새로운 메시지에 대한 예상된 시퀀스 번호를 결정하는 단계; 컴퓨팅 장치에 의해, 메시지 위상 번호를 예상된 위상 번호와 비교하는 단계; 컴퓨팅 장치에 의해, 메시지 시퀀스 번호를 예상된 시퀀스 번호와 비교하는 단계; 및 (a) 메시지 위상 번호 및 예상된 위상 번호와, (b) 메시지 시퀀스 번호 및 예상된 시퀀스 번호 중의 적어도 하나가 일치하지 않을 때, 컴퓨팅 장치에 의해, 손실된 메시지를 보고하는 단계를 포함하는 방법을 제공한다.
특정한 실시예들은 명령어들이 실행될 때, 컴퓨팅 장치가 메시지 위상 번호 및 메시지 시퀀스 번호를 포함하는 새로운 메시지를 적어도 수신하도록 하고; 새로운 메시지에 대한 예상된 위상 번호를 결정하도록 하고; 새로운 메시지에 대한 예상된 시퀀스 번호를 결정하도록 하고; 메시지 위상 번호를 예상된 위상 번호와 비교하도록 하고; 메시지 시퀀스 번호를 예상된 시퀀스 번호와 비교하도록 하고; (a) 메시지 위상 번호 및 예상된 위상 번호와, (b) 메시지 시퀀스 번호 및 예상된 시퀀스 번호 중의 적어도 하나가 일치하지 않을 때, 손실된 메시지를 보고하도록 하는 명령어들을 포함하는 유형의 컴퓨터 판독가능한 저장 매체를 제공한다.
특정한 실시예들은 메시지 위상 번호 및 메시지 시퀀스 번호를 포함하는 새로운 메시지를 수신하기 위한 메시지 수신기; 새로운 메시지에 대한 예상된 위상 번호를 결정하기 위한 예상된 위상 번호 발생기; 새로운 메시지에 대한 예상된 시퀀스 번호를 결정하기 위한 예상된 시퀀스 번호 발생기; 메시지 위상 번호를 예상된 위상 번호와 비교하기 위한 위상 번호 비교기; 메시지 시퀀스 번호를 예상된 시퀀스 번호와 비교하기 위한 시퀀스 번호 비교기; 및 (a) 메시지 위상 번호 및 예상된 위상 번호와, (b) 메시지 시퀀스 번호 및 예상된 시퀀스 번호 중의 적어도 하나가 일치하지 않을 때, 손실된 메시지를 보고하기 위한 손실된 메시지 보고기를 포함하는 시스템을 제공한다.
특정한 실시예들은 컴퓨팅 장치에 의해 제 1 데이터 메시지를 송신하는 단계; 컴퓨팅 장치에 의해 제 1 하트비트 메시지를 송신하는 단계; 및 컴퓨팅 장치에 의해 제 2 하트비트 메시지를 송신하는 단계를 포함하는 방법을 제공한다. 제 1 하트비트 메시지는 제 1 데이터 메시지가 송신된 이후에 제 1 시간 간격으로 송신된다. 제 1 시간 간격은 미리 정의된 길이이다. 제 2 하트비트 메시지는 제 1 하트비트 메시지가 송신된 이후에 제 2 시간 간격으로 송신된다. 제 2 시간 간격은 제 1 시간 간격으로부터 증가된다.
특정한 실시예들은 명령어들이 실행될 때, 컴퓨팅 장치가 제 1 데이터 메시지를 적어도 송신하도록 하고; 제 1 하트비트 메시지를 송신하도록 하고; 제 2 하트비트 메시지를 송신하도록 하는 명령어들을 포함하는 유형의 컴퓨터 판독가능한 저장 매체를 제공한다. 제 1 하트비트 메시지는 제 1 데이터 메시지가 송신된 이후에 제 1 시간 간격으로 송신된다. 제 1 시간 간격은 미리 정의된 길이이다. 제 2 하트비트 메시지는 제 1 하트비트 메시지가 송신된 이후에 제 2 시간 간격으로 송신된다. 제 2 시간 간격은 제 1 시간 간격으로부터 증가된다.
특정한 실시예들은 제 1 데이터 메시지를 송신하기 위한 제 1 데이터 메시지 송신기; 제 1 하트비트 메시지를 송신하기 위한 제 1 하트비트 메시지 송신기; 및 제 2 하트비트 메시지를 송신하기 위한 제 2 하트비트 메시지 송신기를 포함하는 시스템을 제공한다. 제 1 하트비트 메시지는 제 1 데이터 메시지가 송신된 이후에 제 1 시간 간격으로 송신된다. 제 1 시간 간격은 미리 정의된 길이이다. 제 2 하트비트 메시지는 제 1 하트비트 메시지가 송신된 이후에 제 2 시간 간격으로 송신된다. 제 2 시간 간격은 제 1 시간 간격으로부터 증가된다.
특정한 실시예들은 컴퓨팅 장치에 의해, 제 1 데이터 메시지를 송신하는 단계; 및 컴퓨팅 장치에 의해, 제 1 정지 메시지를 송신하는 단계를 포함하는 방법을 제공한다.
특정한 실시예들은 명령어들이 실행될 때, 컴퓨팅 장치가 제 1 데이터 메시지를 적어도 송신하도록 하고; 제 1 정지 메시지를 송신하도록 하는 명령어들을 포함하는 유형의 컴퓨터 판독가능한 저장 매체를 제공한다.
특정한 실시예들은 제 1 데이터 메시지를 송신하기 위한 제 1 데이터 메시지 송신기; 및 제 1 정지 메시지를 송신하기 위한 제 1 정지 메시지 송신기를 포함하는 시스템을 제공한다.
특정한 실시예들은 컴퓨팅 장치에 의해, 시퀀스 번호 및 위상 번호를 포함하는 메시지를 송신하는 단계를 포함하는 방법을 제공한다.
특정한 실시예들은 명령어들이 실행될 때, 컴퓨팅 장치가 시퀀스 번호 및 위상 번호를 포함하는 메시지를 적어도 송신하도록 하는 명령어들을 포함하는 유형의 컴퓨터 판독가능한 저장 매체를 제공한다.
특정한 실시예들은 시퀀스 번호 및 위상 번호를 포함하는 메시지를 송신하기 위한 메시지 송신기를 포함하는 시스템을 제공한다.
특정한 실시예들은 컴퓨팅 장치에 의해, 시퀀스 번호 및 위상 번호를 포함하는 메시지를 수신하는 단계; 및 컴퓨팅 장치에 의해, 시퀀스 번호 및 위상 번호에 기반으로 하여 손실된 메시지를 보고하는 단계를 포함하는 방법을 제공한다.
특정한 실시예들은 명령어들이 실행될 때, 컴퓨팅 장치가 시퀀스 번호 및 위상 번호를 포함하는 메시지를 적어도 수신하도록 하고; 시퀀스 번호 및 위상 번호에 기반으로 하여 손실된 메시지를 보고하도록 하는 명령어들을 포함하는 유형의 컴퓨터 판독가능한 저장 매체를 제공한다.
특정한 실시예들은 시퀀스 번호 및 위상 번호를 포함하는 메시지를 수신하기 위한 메시지 수신기; 및 시퀀스 번호 및 위상 번호에 기반으로 하여 손실된 메시지를 보고하기 위한 손실된 메시지 보고기를 포함하는 시스템을 제공한다.
II. 예시적인 컴퓨팅 장치
도 1은 개시된 실시예들을 구현하기 위해 이용될 수 있는 예시적인 컴퓨팅 장치(100)의 블록도를 예시한다. 하나 또는 그보다 많은 컴퓨팅 장치들(100)은 예를 들어, 다수의 상이한 장치들로부터 수신되고 이 다수의 상이한 장치들로 송신되는 데이터를 처리하도록 구성된 단말 컴퓨터(terminal computer) 또는 서버 시스템(server system)에서 구현될 수 있다.
컴퓨팅 장치(100)는 프로세서(102), 상호접속 버스(104), 칩셋(chipset)(106), 메모리 제어기(108), 입력/출력(I/O) 제어기(110), 시스템 메모리(112), 대용량 저장 메모리(mass storage memory)(114), I/O 버스(116), 네트워크 인터페이스(118), 디스플레이(display)(120), 입력 장치(122), 및 출력 장치(124)를 포함한다. 컴퓨팅 장치(100)는 추가적이거나, 상이하거나, 또는 더 적은 구성요소들을 포함할 수 있다. 예를 들어, 다수의 버스들, 다수의 프로세서들, 다수의 메모리 장치들, 다수의 네트워크 인터페이스들, 다수의 디스플레이 장치들, 다수의 입력 장치들, 다수의 출력 장치들, 또는 그 임의의 조합이 제공될 수 있다. 또 다른 예로서, 컴퓨팅 장치(100)는 디스플레이 장치(120)로부터 분리된 출력 장치(124)를 포함하지 않을 수도 있다. 또 다른 예로서, 컴퓨팅 장치(100)는 디스플레이 장치(120)를 포함하지 않을 수도 있다. 또 다른 예로서, 컴퓨팅 장치(100)는 입력 장치(122)를 포함하지 않을 수도 있다. 그 대신에, 예를 들어, 컴퓨팅 장치(100)는 네트워크 인터페이스(118)를 통해 외부 또는 원격 입력 장치에 의해 제어될 수 있다.
컴퓨팅 장치(100)는 상호접속 버스(104)에 결합되는 프로세서(102)를 포함한다. 상호접속 버스(104)는 통신 버스, 채널, 네트워크, 회로, 스위치, 패브릭(fabric), 또는, 컴퓨팅 장치(100) 내의 구성요소들 사이에서 데이터를 통신하기 위한 다른 메커니즘(mechanism)을 포함할 수 있다. 상호접속 버스(104)는 컴퓨팅 장치(100)의 구성요소들 중의 임의의 것과 통신가능하게 결합될 수 있고, 컴퓨팅 장치의 구성요소들 중의 임의의 것 사이에서 데이터를 전달할 수 있다. 예를 들어, 애플리케이션의 설치 프로세스 동안에는, 프로세서(102)에 의해 실행될 하나 또는 그보다 많은 컴퓨터-판독가능한 명령어들이 입력 장치(122) 및/또는 네트워크 인터페이스(118)로부터 시스템 메모리(112) 및/또는 대용량 저장 메모리(114)로 전달될 수 있다. 컴퓨팅 장치(100)가 시스템 메모리(112) 및/또는 대용량 저장 메모리(114) 내에 저장된 애플리케이션을 실행하고 있거나 실행을 준비하고 있을 때, 프로세서(102)는 상호접속 버스(104)를 통해 시스템 메모리(112) 및/또는 대용량 저장 메모리(114)로부터 명령어들을 검색할 수 있다.
프로세서(102)는 예를 들어, 프로세서, 처리 유닛, 또는 마이크로프로세서일 수 있다. 프로세서(102)는 예를 들어, 하나 또는 그보다 많은 범용 프로세서들, 디지털 신호 프로세서들, 애플리케이션 특정 집적 회로(application specific integrated circuit)들, 필드 프로그래밍가능한 게이트 어레이(field programmable gate array)들, 아날로그 회로들, 디지털 회로들, 프로그래밍된 프로세서들, 및/또는 그 조합들을 포함할 수 있다. 프로세서(102)는 네트워크 또는 분산 처리와 연관된 하나 또는 그보다 많은 장치들과 같이, 단일 장치 또는 장치들의 조합일 수 있다. 멀티-처리(multi-processing), 멀티-태스킹(multi-tasking), 병렬 처리(parallel processing), 및/또는 원격 처리(remote processing)와 같이, 임의의 처리 전략이 이용될 수 있다. 처리는 로컬(local) 또는 원격일 수 있고, 하나의 프로세서로부터 또 다른 프로세서로 이동될 수 있다. 컴퓨팅 장치(100)는 멀티-프로세서 시스템일 수 있고, 이에 따라, 상호접속 버스(104)에 통신가능하게 결합되는 하나 또는 그보다 많은 추가적인 프로세서들을 포함할 수 있다.
프로세서(102)는 시스템 메모리(112), 대용량 저장 메모리(114)와 같이, 및/또는 네트워크 인터페이스(118)를 통해, 하나 또는 그보다 많은 유형의 매체들 내에 인코딩된 로직(logic)을 실행하도록 동작가능할 수 있다. 여기에서 이용된 바와 같이, 하나 또는 그보다 많은 유형의 매체들 내에 인코딩된 로직은 프로세서(102) 또는 상이한 프로세서에 의해 실행가능한 명령어들을 포함한다. 로직은 예를 들어, 소프트웨어, 하드웨어, 집적 회로들, 펌웨어, 및/또는 마이크로-코드(micro-code)의 일부로서 저장될 수 있다. 로직은 예를 들어, 인터넷(Internet)에 접속된 통신 네트워크를 통해 외부 통신 장치로부터 수신될 수 있다. 프로세서(102)는 도면들에서 예시되거나 여기에 설명된 기능들, 작업들, 또는 태스크(task)들을 수행하기 위하여 로직을 실행할 수 있다.
도 1의 프로세서(102)는 메모리 제어기(108) 및 I/O 제어기(110)를 포함하는 칩셋(106)에 결합된다. 칩셋은 전형적으로 칩셋(106)에 결합된 하나 또는 그보다 많은 프로세서들에 의해 액세스 가능하거나 이용되는 복수의 범용 및/또는 특수 용도 레지스터(register)들 및 타이머(timer)들뿐만 아니라, I/O 및 메모리 관리 기능들을 제공한다. 메모리 제어기(108)는 프로세서(102)(또는 다수의 프로세서들이 있을 경우에는 프로세서들)가 시스템 메모리(112) 및 대용량 저장 메모리(114)를 액세스하는 것을 가능하게 하는 기능들을 수행한다.
시스템 메모리(112) 및 대용량 저장 메모리(114)는 예를 들어, 컴퓨터 판독가능한 저장 매체들과 같은 하나 또는 그보다 많은 유형의 매체들일 수 있다. 시스템 메모리(112)는 예를 들어, 랜덤 액세스 메모리(RAM : random access memory), 판독-전용 메모리(ROM : read-only memory), 프로그래밍가능한 판독-전용 메모리(PROM : programmable read-only memory), 전기적 프로그래밍가능한 판독-전용 메모리(EPROM : electrically programmable read-only memory), 전기적 소거가능한 판독-전용 메모리(EEPROM : electrically erasable read-only memory), 플래쉬 메모리(flash memory), 임의의 다른 유형의 데이터 저장 장치, 그 임의의 조합을 포함하는 다양한 유형들의 휘발성(volatile) 및 비-휘발성(non-volatile) 저장 매체들을 포함할 수 있다. 대용량 저장 메모리(114)는 예를 들어, 하드 디스크 드라이브, 광학 매체들, 자기 테이프, 임의의 다른 유형의 데이터 저장 장치, 또는 그 임의의 조합을 포함하는 다양한 유형들의 대용량 저장 장치들을 포함할 수 있다. 특정한 실시예들에서는, 시스템 메모리(112) 및 대용량 저장 메모리(114)가 비-일시적(non-transitory)이다.
시스템 메모리(112) 및 대용량 저장 메모리(114)는 예를 들어, 단일 메모리 모듈일 수 있다. 시스템 메모리(112) 및 대용량 저장 메모리(114)는 프로세서(102)에 인접할 수 있고, 프로세서(102)의 일부일 수 있고, 프로세서(102)로 프로그래밍될 수 있고, 프로세서(102)와 네트워킹될 수 있고, 및/또는 프로세서(102)로부터 원격일 수 있어서, 시스템 메모리(112) 및 대용량 저장 메모리(114) 내에 저장된 데이터는 예를 들어, 프로세서(102)에 의해 검색 및 처리될 수 있다. 시스템 메모리(112) 및 대용량 저장 메모리(114)는 프로세서(102)에 의해 실행가능한 명령어들을 저장할 수 있다. 명령어들은 여기에서 설명되거나 도면들에서 도시된 작업들 또는 기능들 중의 하나 또는 그보다 많은 것을 수행하기 위해 실행될 수 있다.
I/O 제어기(110)는 프로세서(102)가 I/O 버스(116)를 통해 네트워크 인터페이스(118), 디스플레이(120), 입력 장치(122), 및 출력 장치(124)와 통신하는 것을 가능하게 하는 기능들을 수행한다. 메모리 제어기(108) 및 I/O 제어기(110)는 칩셋(106) 내의 별도의 블록들로서 도 1에 도시되어 있지만, 이 블록들에 의해 수행되는 기능들은 단일 반도체 회로 내에 통합될 수 있거나 2개 또는 그보다 많은 별도의 집적 회로들을 이용하여 구현될 수 있다. 컴퓨팅 장치(100)의 구성요소들 중의 하나 또는 그보다 많은 것은 시스템 온 어 칩(system on a chip)(예를 들어, IPHONE™ 내의 시스템 온 어 칩)으로서 구현될 수 있다.
네트워크 인터페이스(118)는 단방향(one-way) 또는 양방향(two-way) 통신 결합(communication coupling)일 수 있다. 따라서, 네트워크 인터페이스(118)는 1개, 2개, 또는 그보다 많은 통신 네트워크들 또는 장치들을 통신가능하게 접속할 수 있다. 예를 들어, 상호접속 버스(104)는 네트워크 인터페이스(118)를 통해 서버와 결합될 수 있어서, 컴퓨팅 장치(100)의 구성요소들 중의 하나, 일부, 또는 전부는 서버로 액세스 가능하거나 서버와 통신할 수 있다. 또 다른 예로서, 네트워크 인터페이스(118)는 상호접속 버스(104)를 다른 통신 네트워크들과 결합할 수 있다. 네트워크 인터페이스(118)는 예를 들어, 데이터 통신 접속을 제공하기 위한 통합 서비스 디지털 네트워크(ISDN : integrated services digital network) 카드 또는 모뎀일 수 있다. 또 다른 예로서, 네트워크 인터페이스(118)는 예를 들어, 인터넷에 접속된 호환가능한 LAN에 데이터 통신 접속을 제공하기 위한 로컬 영역 네트워크(LAN : local area network) 카드일 수 있다. 무선 링크들이 구현될 수도 있다. 네트워크 인터페이스(118)는 예를 들어, 다양한 유형의 정보를 나타내는 아날로그 또는 디지털 데이터 스트림들을 운반하는 전기적, 전자기적, 또는 광학적 신호들을 송신 및 수신할 수 있다.
디스플레이 장치(120)는 예를 들어, 시각적 출력 장치, 음극선관(CRT : cathode ray tube) 디스플레이, 전자 디스플레이, 전자 종이, 평판 패널 디스플레이, 발광 다이오드(LED : light-emitting diode) 디스플레이들, 전계발광 디스플레이(ELD : electroluminescent display), 플라즈마 디스플레이 패널(PDP : plasma display panel)들, 액정 디스플레이(LCD : liquid crystal display), 박막 트랜지스터(TFT : thin-film transistor) 디스플레이들, 유기 발광 다이오드(OLED : organic light-emitting diode) 디스플레이들, 표면-전도 전자-에미터 디스플레이(SED : surface-conduction electron-emitter display), 레이저 텔레비전, 탄소 나노튜브(carbon nanotube)들, 나노크리스탈(nanocrystal) 디스플레이들, 헤드-장착 디스플레이(head-mounted display), 프로젝터(projector), 3차원 디스플레이, 및/또는 투명 디스플레이 장치를 포함할 수 있다.
디스플레이 장치(120)는 대화형일 수 있고 사용자가 데이터를 입력하는 것을 가능하게 할 수 있는 스크린(screen)을 디스플레이하도록 구비된다.
입력 장치(122)는 예를 들어, 키보드, 마우스, 마이크로폰, 터치-스크린, 트랙볼, 키패드, 조이스틱, 및/또는 입력을 제공하기 위한 다른 장치를 포함할 수 있다. 입력 장치(122)는 예를 들어, 프로세서(102)에 명령 선택들을 제공하기 위하여 이용될 수 있다. 예를 들어, 입력 장치(122)는 스크린 상에 디스플레이된 커서(cursor)를 제공하기 위해 이용되는 마우스일 수 있다. 마우스는 예를 들어, 선택 및 제어를 위한 하나 또는 그보다 많은 버튼들을 포함할 수 있다.
출력 장치(124)는 예를 들어, 키보드, 마우스, 스피커들, 터치-스크린, 트랙볼, 키패드, 햅틱(haptic) 장치 또는 시스템, 조이스틱, 및/또는 출력을 제공하기 위한 다른 장치를 포함할 수 있다. 예를 들어, 출력 장치(124)는 햅틱 신호 또는 오디오 신호와 같은 하나 또는 그보다 많은 신호들을 사용자에게 출력하기 위해 이용될 수 있다. 입력 장치(122) 및 출력 장치(124)는 별도의 블록들로서 도 1에 도시되어 있지만, 이 블록들에 의해 수행되는 기능들은 단일 I/O 장치 내로 통합될 수 있다.
III. 메시지 스트림 무결성 기술들
사용자들은 통지된 판정들을 행하기 위하여 송신 및 전달되는 메시지들이 최근(up-to-date)의 것이고 정확하다는 것에 의존한다. 메시지들이 네트워크를 통해 전송될 때, 이 메시지들은 예를 들어, 메시지를 누락하는 중간 장치, 링크 불량(link failure), 불충분한 자원들(예를 들어, 메모리 또는 처리), 또는 중간 장치 고장 또는 재설정으로 인해 지연 및/또는 손실될 수 있다. 따라서, 적절하게 송신 또는 수신되는 것에 실패한 손실된 메시지들의 검출은 메시지 스트림들의 무결성을 유지하는데 바람직하다.
메시지가 손실된 것으로 결정될 때, 손실된 메시지의 재전송을 요청하는 것, 메시지 스트림을 종료하거나 재설정하는 것, 로그 파일 내에 엔트리를 생성하는 것, 에러 메시지를 제공하는 것, 인터럽트를 발생하는 것, 수신된 데이터를 처리하는 애플리케이션 또는 상위-레벨 프로토콜에 손실된 메시지에 대하여 경고하는 것, 프로그램 실행을 중단하는 것, 메시지가 손실되었음을 하나 또는 그보다 많은 사용자들에게 통지하는 것, 메시지 스트림을 종결시키고 새로운 메시지 스트림을 수립하는 것, 라이센스를 해제 및 재취득하는 것, 서버와 재인증하는 것, 및/또는 전체 데이터 세트를 재-다운로딩하는 바와 같은 다양한 작업들이 취해질 수 있다.
일부 현재의 시스템들은 손실된 메시지 검출을 보조하기 위하여 시퀀스 번호 또는 메시지 식별자를 이용한다. 수신자가 메시지들이 송신되었던 순서와 임의의 메시지들이 송신되었는지 여부의 둘 모두를 결정하도록 하기 위하여, 시퀀스 번호 또는 메시지 식별자는 각각의 메시지에 대하여 미리 결정된 양만큼 변경(전형적으로, 증분)된다. 수신자는 예를 들어, 네트워크 거동들로 인해 순서를 벗어나서(out of order) 수신될 수 있는 메시지들을 버퍼링(buffering)할 수 있다. 메시지가 수신되지 않을 때, 메시지는 분실된(missing) 것으로 간주될 수 있다. 분실된 메시지는 중간 장치에서 또는 재전송으로 인해 재정렬(re-order)되었기 때문에 분실된 메시지는 예를 들어, 더 나중의 시간에 수신될 수 있다는 것이 가능하다. 시간 기간 이후에, 시퀀스 내의 분실된 메시지가 수신되지 않는 경우, 수신자는 메시지가 손실된 것으로 결정할 수 있다. 또 다른 예에서는, 더 나중의 메시지가 순서를 벗어나서 수신될 때, 더 이전의 메시지를 수신할 가능성 있는 시간 기간을 기다리기보다는, 분실된 이전의 메시지가 더 나중의 순서를 벗어난 메시지의 수신 시에 손실된 것으로 결정될 수 있다.
일부 시스템들에서는, 예컨대, 데이터의 소스(source)로부터 떨어져 있는 장치들에서 감시되고 있는 객체에 대한 데이터에 변경이 있을 때, 메시지들이 드물게 송신될 수 있다.
예를 들어, 서버가 액세스 가능인지 또는 액세스 불가능인지 여부와, 서버에 대한 접속이 액세스 가능인지 또는 액세스 불가능인지 여부와 같은, 서버-관련 상태 변경들에 대한 정보는 드물게 송신될 수 있다. 또 다른 예로서, 뉴스 메시지들과 같은 메시지들은 드물게 송신될 수 있다. 또 다른 예로서, 예컨대, 스타트-업(start-up) 시에 그리고 손실된 메시지들이 추후에 검출될 때, 데이터의 다운로드들이 드물게 발생할 수 있다.
메시지 스트림 무결성이 더 나중에 수신된 메시지의 시퀀스 번호에 기반으로 하여 손실된 메시지들을 검출하는 것에 의존하는 경우, 드물게 송신된 메시지들은 손실된 메시지가 검출되기 전에 용인할 수 없는 지연들로 귀착될 수 있다. 예를 들어, 데이터의 상태에 있어서의 제 1 변경에 관한 메시지가 송신되지만 손실된 경우, 수신자는 데이터의 상태에 있어서의 제 2 변경에 관한 또 다른 메시지가 수신된 후까지 손실된 메시지를 검출하지 못할 수도 있다. 메시지들이 드물게 송신되는 경우, 제 2 메시지는 제 1 메시지가 손실된 후의 수 시간에 수신될 수도 있다. 또 다른 예에서, 상태에 있어서 제 2 변경이 없을 경우에는, 제 1 메시지 손실이 검출되지 않을 수도 있다. 따라서, 제 1 메시지의 손실과 손실된 메시지의 검출 사이의 시간 동안에는, 수신자가 부정확한 데이터를 이용하고 있었던 것이다.
A. 고정된 간격 기술을 갖는 하트비트
손실된 메시지를 검출할 가능성을 증가시키기 위한 현재의 시스템들에 의해 이용되는 하나의 기술은 송신될 새로운 데이터가 있는지 여부에 관계없이 일부 정의된 간격으로 메시지들을 송신하는 것이다. 이 기술을 이용하는 시스템들은 예를 들어, 최종 메시지가 송신된 이후에 특정한 시간 기간이 경과한 경우에 하트비트 메시지를 송신한다. 하트비트 메시지들은 예를 들어, 얼라이브(alive) 메시지들, 킵-얼라이브(keep-alive) 메시지들, 상태 메시지들, 또는 동기화 메시지들이라고 지칭될 수도 있다. 고정된 간격 기술들을 갖는 하트비트는 도 2a의 예시적인 메시지들에서 예시되어 있다.
도 2a는 정의된 시간 간격이 "1"인 고정된 간격 기술을 갖는 하트비트를 사용하는 예시적인 메시지들을 예시한다. 이 예에서는, 데이터 메시지들이 "M"으로 표시되고, 하트비트 메시지들은 "HB"로 표시된다. 여기서, 각각의 데이터 메시지의 시퀀스 번호는 1만큼 증가된다. 이 예에서는, 시간 t=0에서 "0"의 시퀀스 번호를 갖는 제 1 데이터 메시지 M1이 송신된다. 정의된 시간 간격이 "1"이고 이 시간 간격 내에는 송신될 새로운 데이터가 없으므로, 시스템은 시간 t=1에서 시퀀스 번호 "0"을 갖는 제 1 하트비트 메시지 HB1을 송신한다. 이 예에서는, 하트비트 메시지들이 송신된 최종 데이터 메시지의 시퀀스 번호를 반복한다. 특정한 실시예들에서는, 하트비트 메시지들에 그 자신의 시퀀스 번호들이 배정될 수 있다.
송신될 새로운 데이터가 없는 시간 t=2에서는, 시스템이 송신된 최종 데이터 메시지인 데이터 메시지 M1과 동일한 시퀀스 번호인 시퀀스 번호 "0"을 갖는 제 2 하트비트 메시지 HB2를 송신한다. 송신될 새로운 데이터가 없는 시간 t=3에서는, 시스템이 시퀀스 번호 "0"을 갖는 제 3 하트비트 메시지 HB3을 송신한다. 송신될 새로운 데이터가 없는 시간 t=4에서는, 시스템이 시퀀스 번호 "0"을 갖는 제 4 하트비트 메시지 HB4를 송신한다. 시간 t=5에서는, 송신될 새로운 데이터가 없다. 따라서, 시스템은 제 2 데이터 메시지 M2를 송신하고 시퀀스 번호를 "1"로 증가시킨다. 시간 t=6에서는, 송신될 새로운 데이터가 없다. 따라서, 시스템은 제 3 데이터 메시지 M3을 송신하고 시퀀스 번호를 "2"로 증가시킨다. 송신될 새로운 데이터가 없는 시간 t=7에서는, 시스템이 송신된 최종 데이터 메시지인 데이터 메시지 M3과 동일한 시퀀스 번호인 시퀀스 번호 "2"를 갖는 제 4 하트비트 메시지 HB5를 송신한다.
하트비트 메시지들을 "1"과 같은 정의된 간격으로 송신함으로써, 시스템은 메시지가 손실되는 것과 손실된 메시지의 검출 사이에서 시간의 양에 대한 경계를 제공할 수 있다. 수신자는 정의된 시간 간격을 알고 있고 메시지가 정의된 간격 내에 수신되지 않는지를 검출할 수 있으므로, 시스템은 손실된 메시지의 검출에 대한 경계를 제공할 수 있다. 이 예에서는, 데이터 메시지 M3가 손실된 경우, 시스템은 다음으로 시퀀스 번호 "2"를 갖는 하트비트 메시지 HB5를 수신한다. 시스템은 수신된 하트비트 메시지의 시퀀스 번호 "2"를, 최종 수신된 메시지, 여기서는 시퀀스 번호 "1"을 갖는 데이터 메시지 M2의 시퀀스 번호와 비교할 것이다. 이 예에서는, 하트비트 메시지들이 이전에 송신된 데이터 메시지의 시퀀스 번호를 보유하고 있으므로, 시스템은 "1"의 정의된 시간 간격 내에 손실된 메시지를 검출할 것이다. 또 다른 예에서는, 네트워크 지연 변동들을 허용하기 위하여, 수신자가 작은 일정한 양의 시간 또는 정의된 간격의 2배와 같이, 정의된 시간 간격보다 큰 일부의 시간 길이 내에 메시지가 수신되지 않는지를 검출할 수 있다.
그러나, 예를 들어, 많은 수의 드물게 업데이트된 상태 정보가 있을 수 있는, 위에서 설명된 바와 같은 정의된 시간 간격을 갖는 하트비트 시스템에서는, 대응하는 많은 수의 하트비트 메시지들이 있을 것이다. 많은 수의 하트비트 메시지들은 제한된 네트워크 대역폭을 비효율적으로 이용할 수 있고, 및/또는 네트워크 상에서의 다른 데이터 메시지들의 전달을 위한 대기시간을 증가시킬 수 있다. 예를 들어, 특정 서버가 애플리케이션을 실행하고 있고 각각의 사용자에 대해 2개의 엔드포인트(endpoint)들이 있는 1,500 사용자들을 처리하고 있는 경우, 서버에 의해 처리되고 있는 3,000 개의 엔드포인트들이 있다. 예를 들어, 활성(activity) 또는 업데이트된 상태 정보가 없는 경우, 각각의 초(second)마다 3,000개의 하트비트 메시지들이 필요할 수 있고, 이것은 제한된 네트워크 대역폭을 비효율적으로 이용할 수 있고, 또 다른 서버 시스템으로부터 수신되고 있는 정보에 대한 처리 능력을 제거할 수 있고 및/또는 이 처리 능력에 대한 액세스를 지연시킬 수 있다.
B. 증가하는 간격 기술을 갖는 하트비트
특정한 실시예들은 하트비트 메시지들 사이에 증가하는 간격을 제공함으로써 과도한 비-데이터 네트워크 트래픽의 이러한 쟁점을 다룬다. 예를 들어, 제 1 하트비트는 최종 데이터 메시지가 송신된 이후에 고정된 양의 시간에서 송신될 수 있다. 다음으로, 추후의 하트비트 메시지들은 증가하는 시간 간격들 이후에 송신될 수 있다. 예를 들어, 간격은 고정된 양만큼 증가될 수 있거나, 2배로 될 수 있거나, 기하학적으로 증가될 수 있거나, 지수함수적으로 증가될 수 있거나, 또는 변동하는 고정된 간격들과 같은 미리 정의된 양만큼 또는 피보나치(Fibonacci) 또는 소수와 같은 시퀀스에 기반하여 증가될 수 있다. 손실된 메시지들의 효과적인 검출을 개선시키기 위하여, 간격은 최대값으로 한도가 정해지거나 제한될 수 있다. 간격을 최대값으로 한도를 정하거나 제한하는 것은 시간 간격이 효과적으로 무한해지는 것을 방지하고, 메시지가 손실되는 것과 손실된 메시지의 검출 사이의 시간의 양에 대한 경계를 유지한다.
도 2b는 시간 간격이 2배로 된 증가하는 간격 기술을 갖는 예시적인 하트비트를 사용하는 예시적인 메시지들을 예시한다. 이 예에서는, 데이터 메시지들이 "M"으로 표시되고, 하트비트 메시지들이 "HB"로 표시된다. 여기서, 각각의 데이터 메시지의 시퀀스 번호는 1만큼 증가되고, 하트비트 메시지들은 송신된 최종 데이터 메시지의 시퀀스 번호를 포함한다. 이 예에서는, 시간 t=0에서 "0"의 시퀀스 번호를 갖는 제 1 데이터 메시지 M1이 송신된다. 제 1 시간 간격은 "1"이고, 이 시간 간격 내에는 송신될 새로운 데이터가 없다. 따라서, 시스템은 시간 t=1에서 시퀀스 번호 "0"을 갖는 제 1 하트비트 메시지 HB1을 송신한다.
이 예에서는, 시간 간격이 2배로 되고, 따라서, 다음 하트비트 메시지는 "1"의 이전 시간 간격의 양의 2배인, 시간 t=3(t=1(송신된 최종 하트비트 메시지의 시간) + 1(이전 간격)*2(2배))에서 송신되어야 한다. 송신될 새로운 데이터가 없는, 시간 t=3에서, 시스템은 송신된 최종 데이터 메시지인 데이터 메시지 M1과 동일한 시퀀스 번호인 시퀀스 번호 "0"을 갖는 제 2 하트비트 메시지 HB2를 송신한다. 다음 하트비트 메시지는 "2"의 이전 시간 간격의 양의 2배인, 시간 t=7(t=3(송신된 최종 하트비트 메시지의 시간) + 2(이전 간격)*2(2배))에서 송신되어야 한다. 그러나, 시간 t=5에서는, 송신될 새로운 데이터가 없다. 따라서, 시스템은 제 2 데이터 메시지 M2를 송신하고 시퀀스 번호를 "1"로 증가시킨다. 시간 t=6에서는, 송신될 새로운 데이터가 없고, 따라서, 시스템은 제 3 데이터 메시지 M3을 송신하고 시퀀스 번호를 "2"로 증가시킨다. 다음 하트비트 메시지는 시간 t=7에서 송신되어야 하고, 초기 시간 간격 "1"로 복귀한다. 송신될 새로운 데이터가 없는 시간 t=7에서, 시스템은 송신된 최종 데이터 메시지인 데이터 메시지 M3과 동일한 시퀀스 번호인 시퀀스 번호 "2"를 갖는 제 3 하트비트 메시지 HB3을 송신한다.
상기 도 2a에 설명된 바와 같은 고정된 하트비트 간격이 증가하는 간격 기술의 초기 간격과 동일한 경우, 상기 도 2b에 설명된 증가하는 간격 기술은 고정된 하트비트 간격들과 비교할 때, 하트비트 메시지들로 인해 네트워크 트래픽을 감소시킨다. 도 2a의 예에서는, 4개의 하트비트 메시지들이 2개의 데이터 메시지들(M1 및 M2) 사이에 송신되고, 이 예에서는 2개의 하트비트 메시지들만이 송신된다.
추가적으로, 증가하는 간격 기술은 순간적인 링크 불량들에 대해 일부 공차(tolerance)를 제공한다. 예를 들어, 링크가 다운되어 증가된 간격 동안에 접속성이 복구되고, 새로운 메시지들이 송신되지 않는 경우, 순간적인 링크 불량은 검출되지 않을 것이다. 데이터가 손실되지 않기 때문에 이러한 불량들이 스트림 무결성에 대해 문제가 되지 않을 수도 있지만, 고정된 간격 기술은 이러한 순간적인 링크 불량들을 검출할 가능성이 더 많을 수 있다.
도 2c는 위에서 설명된 증가하는 간격 기술을 갖는 하트비트에 따라 메시지들을 송신하기 위한 방법의 예시적인 흐름도(200)를 예시한다. 이 예에서는, 각각의 데이터 메시지가 상이한 시퀀스 번호를 가진다. 예를 들어, 각각의 데이터 메시지는 이전 데이터 메시지의 시퀀스 번호보다 하나 더 큰 시퀀스 번호를 가질 수 있다. 이 예에서는, 하트비트 메시지들이 하트비트 이전에 송신된 최종 데이터 메시지와 동일한 시퀀스 번호를 이용한다.
블록(201)에서는, 송신될 메시지에 대한 시퀀스 번호가 재설정되고, 하트비트 메시지가 송신되어야 하는 시간을 나타내는 다음 하트비트 시간이 설정된다. 예를 들어, 시퀀스 번호는 "0" 또는 "-1"로 재설정될 수 있고, 다음 하트비트 시간은 데이터 메시지가 아직 송신되지 않았기 때문에 "무한대(infinity)"로 설정될 수 있다.
블록(202)에서는, 새로운 데이터 메시지가 송신되어야 하는지 또는 다음 하트비트 시간에 도달되었는지 결정된다. 예를 들어, 송신할 새로운 데이터 메시지는 애플리케이션으로부터 수신될 수 있다. 또 다른 예로서, 다음 하트비트 시간과 연관된 타이머가 만료될 수 있다.
(블록(202)에서 결정된 바와 같이) 새로운 데이터 메시지가 송신되어야 할 경우, 블록(203)에서는, 송신될 메시지에 대한 시퀀스 번호가 증분된다. 예를 들어, 시퀀스 번호는 "0"으로부터 "1"로, 또는 "-1"로부터 "0"으로 1만큼 증분될 수 있다.
블록(204)에서는, 도 2b의 데이터 메시지 M1과 같이, 증분된 시퀀스 번호를 갖는 새로운 데이터 메시지가 송신된다.
블록(205)에서는, 다음 하트비트 시간이 새로운 데이터 메시지가 송신된 시간과, 초기 간격(및 임의의 이전 설정된 다음 하트비트 시간이 클리어링됨)의 합으로 설정된다. 예를 들어, 새로운 데이터 메시지가 t=0에서 송신되었고 초기 하트비트 간격이 "1"인 경우, 다음 하트비트 시간은 t=1로 설정될 수 있다. 다음으로, 제어는 블록(202)으로 복귀한다.
(블록(202)에서 결정된 바와 같이) 송신할 새로운 데이터 메시지가 없고 다음 하트비트 시간에 도달된 경우, 블록(206)에서는, 도 2b의 하트비트 메시지 HB2와 같이, 송신된 최종 데이터 메시지의 시퀀스 번호가 될 현재의 시퀀스 번호를 갖는 하트비트 메시지가 송신된다.
블록(207)에서는, 이 예에서, 송신된 최종 하트비트 메시지의 간격을 2배로 하고 이것을 블록(206)에서 가장 최근의 하트비트 메시지가 송신된 시간에 추가함으로써 다음 하트비트 시간이 결정된다. 예를 들어, 가장 최근에 송신된 하트비트 메시지가 "2"의 하트비트 간격 후에 t=3에서 송신된 경우, 다음 하트비트 시간은 t=7(t=3(가장 최근의 하트비트 메시지가 송신된 시간) + 2(이전 하트비트 간격) * 2(2배))로 설정될 것이다. 다음으로, 제어는 블록(202)으로 복귀한다.
위에서 설명된 증가하는 간격 기술을 갖는 하트비트에 따라 메시지들을 송신하기 위한 방법은 시퀀스 번호를 데이터 메시지에 배정하고, 대응하는 시퀀스 번호들을 데이터 메시지 이후에 송신된 하트비트 메시지들에 배정한다. 데이터 및 하트비트 메시지들에 시퀀스 번호들을 배정하는 것은 데이터 메시지가 손실되고 추후의 메시지가 수신되는 시간 내에 손실된 메시지들이 검출되도록 한다.
도 2d는 위에서 설명된 증가하는 간격 기술을 갖는 하트비트에 따라 메시지들을 수신하기 위한 방법의 예시적인 흐름도(210)를 예시한다. 이 예에서는, 각각의 데이터 메시지가 상이한 시퀀스 번호를 가진다. 예를 들어, 각각의 데이터 메시지는 이전 데이터 메시지의 시퀀스 번호보다 하나 더 큰 시퀀스 번호를 가질 수 있다. 이 예에서는, 하트비트 메시지들이 하트비트 이전에 송신된 최종 데이터 메시지와 동일한 시퀀스 번호를 이용한다.
블록(211)에서는, 수신될 메시지에 대한 예상된 시퀀스 번호가 재설정된다. 예를 들어, 예상된 시퀀스 번호는 "0" 또는 "-1"로 재설정될 수 있다.
블록(212)에서는, 메시지가 수신된다. 메시지는 예를 들어, 데이터 메시지 또는 하트비트 메시지일 수 있다. 메시지가 예상된 시간 간격 내에 수신되지 않을 경우, 손실된 메시지가 보고될 수 있다. 예상된 시간 간격은 데이터 메시지가 송신되는 것과 제 1 하트비트 메시지가 송신되는 것 사이의 초기 시간 간격에 기반으로 할 수 있거나, 예상된 시간 간격은 예를 들어, 2개의 하트비트 메시지들 사이의 간격에 기반으로 할 수 있다. 예를 들어, 예상된 시간 간격을 결정하기 위한 네트워크 지연 변동들을 허용하기 위하여, 초기 시간 간격 및/또는 2개의 하트비트 메시지들 사이의 간격은 일정한 양만큼 증가될 수 있거나 2배로 될 수 있다.
블록(213)에서는, 수신된 메시지의 예상된 시퀀스 번호가 결정된다. 수신된 메시지가 데이터 메시지인 경우, 이전에 수신된 메시지의 시퀀스 번호를 (또는 이전 메시지가 전혀 수신되지 않았을 경우에는 재설정된 예상된 시퀀스 번호로부터) 증분시킴으로써 예상된 시퀀스 번호가 결정될 수 있다. 예를 들어, 시퀀스 번호는 "0"으로부터 "1"까지 또는 "-1"로부터 "0"까지 1만큼 증분될 수 있다. 이 예에서, 수신된 메시지가 하트비트 메시지일 경우, 예상된 시퀀스 번호는 이전에 수신된 메시지의 시퀀스 번호와 동일할 것이다.
블록(214)에서는, 수신된 메시지의 시퀀스 번호가 블록(213)에서 결정된 예상된 시퀀스 번호와 비교된다.
(블록(214)에서 결정된 바와 같이) 수신된 메시지의 시퀀스 번호가 예상된 시퀀스 번호와 동일하지 않을 경우, 블록(215)에서는, 손실된 메시지가 보고될 수 있다. 특정한 실시예들에서는, 손실된 메시지가 데이터 메시지일 경우에만 손실된 메시지가 보고될 수 있다. 특정한 실시예들에서는, 시스템이 메시지가 분실되어 있는 것으로 결정할 수 있고, 분실된 메시지를 수신하기 위하여 시간 기간을 대기할 수 있다. 분실된 메시지가 시간 기간에 수신되지 않을 경우, 시스템은 그 다음으로 분실된 메시지를 손실된 것으로 보고할 수 있다.
(블록(214)에서 결정된 바와 같이) 수신된 메시지의 시퀀스 번호가 예상된 시퀀스 번호와 동일할 경우, 블록(216)에서는, 수신된 메시지가 데이터 메시지인지 결정된다. 수신된 메시지가 데이터 메시지인 경우, 블록(217)에서는, 데이터 메시지가 처리되고 제어는 블록(212)으로 복귀한다. 예를 들어, 데이터 메시지 컨텐츠를 애플리케이션으로 전달함으로써 데이터 메시지가 처리될 수 있다. 수신된 메시지가 데이터 메시지가 아닌 경우, 제어는 블록(212)으로 복귀한다.
위에서 설명된 증가하는 간격 기술을 갖는 하트비트에 따라 메시지들을 수신하기 위한 방법은 각각의 데이터 메시지에 대해 증분 시퀀스 번호를 예상하고, 하트비트 메시지들에 대한 시퀀스 번호들이 이전에 송신된 데이터 메시지 내의 시퀀스 번호들과 동일할 것이라고 예상한다. 데이터 및 하트비트 메시지들에 시퀀스 번호들을 배정하는 것은 데이터 메시지가 손실되고 추후의 메시지가 수신되는 시간 내에 손실된 메시지들이 검출되도록 한다.
C. 정지 메시지 기술
특정한 실시예들은 정지 메시지 기술을 사용함으로써 과도한 비-데이터 네트워크 트래픽의 쟁점을 다룬다. 정지 메시지 기술에서는, 송신자가 추가적인 하트비트 메시지들을 제공하지 않을 것이고, 이에 따라, 수신자가 수신할 다음 메시지가 데이터 메시지라는 것을 수신자에게 나타내기 위하여 정지 메시지가 송신된다. 정지 메시지는 예를 들어, 종료 메시지(end message) 또는 하트비트 중지 메시지(heartbeat suspension message)라고 지칭될 수도 있다. 추가적으로, 정지 메시지는 별개의 메시지 유형일 수 있거나, 하트비트 메시지 또는 데이터 메시지와 같은 또 다른 메시지 내의 플래그(flag)에 의해 표시될 수 있다. 하나의 예에서, 정지 메시지는 데이터 메시지 내의 플래그에 의해 표시될 수 있다. 이 예에서, 정지 메시지 기술은 단독으로 또는 하트비트 메시지 기술과 조합하여 이용될 수 있다.
추가적으로, 이용되는 하트비트 메시지들 및 정지 메시지의 수는 변동될 수 있다. 예를 들어, 정지 메시지 이후에 3개의 하트비트 메시지들이 송신될 수 있다. 또 다른 예에서는, 정지 메시지 플래그를 갖는 최종 하트비트 메시지와 함께 3개의 하트비트 메시지들이 송신될 수 있다. 또 다른 예에서는, 송신될 하트비트 메시지들의 수가 이용 중인 링크/트랜스포트(link/transport)의 대기시간에 기반으로 하여 결정될 수 있다.
정지 메시지 기술은 도 2a 내지 도 2d를 참조하여 위에서 설명된 바와 유사한 방식으로 손실된 데이터 메시지의 검출을 증가시킨다. 추가적으로, 정지 메시지 기술은 과도한 하트비트 메시지들로 인해 네트워크 트래픽을 더 감소시키고, 도 2b를 참조하여 위에서 설명된 증가하는 간격 기술과 유사하게, 순간적인 링크 불량들에 대해 일부 공차를 제공한다.
도 3a 및 도 3b는 송신된 하트비트 메시지들의 수가 감소되는 정지 메시지 기술의 장점을 예시한다. 도 3a는 위에서 설명된 바와 같은 증가하는 간격 기술을 갖는 예시적인 하트비트를 사용하는 예시적인 메시지들을 예시한다. 이 예에서는, 데이터 메시지들이 "M"으로 표시되고, 하트비트 메시지들은 "HB"로 표시된다. 여기서, 하트비트 메시지들에 대한 시간 간격은 2배로 되고 하트비트 메시지들은 송신된 최종 데이터 메시지의 시퀀스 번호를 포함한다. 이 예에서는, 시간 t=0에서 "0"의 시퀀스 번호를 갖는 제 1 데이터 메시지 M1이 송신된다. 제 1 시간 간격은 "1"이고, 이 시간 간격 내에는 송신될 새로운 데이터가 없다. 따라서, 시스템은 시간 t=1에서 시퀀스 번호 "0"을 갖는 제 1 하트비트 메시지 HB1을 송신한다. 송신될 새로운 데이터가 없는 시간 t=3(1(이전 간격) * 2(2배) = 2의 간격 이후)에서, 시스템은 시퀀스 번호 "0"을 갖는 제 2 하트비트 메시지 HB2를 송신한다. 송신될 새로운 데이터가 없는 시간 t=7(2(이전 간격) * 2(2배) = 4의 간격 이후)에서, 시스템은 시퀀스 번호 "0"을 갖는 제 3 하트비트 메시지 HB3을 송신한다. 시간 t=11(하트비트 메시지가 송신되어야 할 다음 시간 이전)에서는, 송신될 새로운 데이터가 없다. 따라서, 시스템은 제 2 데이터 메시지 M2를 송신하고 시퀀스 번호를 "1"로 증가시킨다. 도 3a의 예에서는, 제 2 데이터 메시지가 송신되기 전에, 3개의 하트비트 메시지들이 송신된다. 이 하트비트 메시지들은 과도할 수 있고 증가된 네트워크 트래픽으로 귀착될 수 있다.
도 3b는 위에서 설명된 바와 같은 예시적인 정지 메시지 기술을 사용하는 메시지들을 예시한다. 이 예에서는, 정지 메시지들이 "SM"으로 표시되고, 하트비트 메시지들이 전혀 이용되지 않는다. 그 대신에, "1"의 초기 간격 이후에, 송신된 최종 데이터 메시지의 시퀀스 번호를 포함하는 정지 메시지가 송신된다. 이 예에서는, 시간 t=0에서 "0"의 시퀀스 번호를 갖는 제 1 데이터 메시지 M1이 송신된다. 송신될 새로운 데이터가 없는 시간 t=1에서는, 시퀀스 번호 "0"을 갖는 정지 메시지 SM1이 송신된다. 이 정지 메시지는 추가적인 하트비트 메시지들이 전혀 송신되지 않을 것이고 수신될 다음 메시지는 데이터 메시지임을 표시한다. 시간 t=11에서는, 시퀀스 번호 "1"을 갖는 데이터 메시지 M2가 송신된다. 도 3b에 예시된 정지 메시지 기술은 하트비트 메시지들의 수를 감소시킴으로써 네트워크 트래픽을 감소시킨다. 도 3a의 예에서는, 이 예에서 하나의 정지 메시지만이 송신되는 2개의 데이터 메시지들 사이에 3개의 하트비트 메시지들이 송신된다.
D. 메시지 스트림 상태 클리어링 기술
특정한 실시예들은 송신기 및 수신기 둘 모두에 의해 유지되는 메시지 스트림에 대한 상태 정보를 다룬다. 메시지 스트림 상태는 특정 메시지 스트림에 특별한 정보이다. 메시지 스트림은 특별한 객체, 토픽, 등과 관련된 메시지들에 대한 논리적 통신 채널이다. 예를 들어, 감시되고 있는 각각의 객체는 그 객체와 관련된 메시지들에 대한 연관된 메시지 스트림을 가질 수 있다. 또 다른 예로서, 각각의 사용자는 개인용 인박스 스트림(personal inbox stream)과 같이, 그 사용자에게 특별히 보내진 메시지들에 대한 메시지 스트림을 가질 수 있다. 송신기를 위하여, 메시지 스트림 상태는 예를 들어, 최종 송신된 시퀀스 번호, 최종 송신 시간, 재전송을 위한 송신된 데이터의 복사본들, 수신자에 대한 어드레스(address) 또는 주제(subject), 및 하트비트 메시지들에 대한 송신 시간 간격과 관련된 정보를 포함할 수 있다.
수신자에 대한 어드레스는 예를 들어, IP 네트워크들, 프로세스간 통신("IPC : inter-process communication"), 공유된 메모리, 및/또는 InfiniBand®와 같은 메시지 전달 패브릭들을 포함하는 기초적인 링크 및/또는 트랜스포트 어드레스와는 상이할 수 있다. 예를 들어, 특정한 실시예들은 단일 IP 멀티캐스트 그룹에 연결된 하나 또는 그보다 많은 수신자들이 있는 IP 멀티캐스트 메커니즘 상에서 이용될 수 있다. 수신자들은 메시지 내에 포함된 주제 어드레스에 기반으로 하여 수신자들에 대해 의도된 메시지들을 식별한다. 상이한 수신자들이 상이한 주제들에 관심이 있을 수 있지만, IP 멀티캐스트 그룹의 각각의 멤버는 모든 멀티캐스트 메시지들을 여전히 수신할 것이다. 특정한 주제에 관심이 없는 수신자는 그 메시지가 결코 수신되지 않은 것처럼 그 메시지를 누락할 것이다. 단일 IP 멀티캐스트 그룹이 미리 정의된 값일 수 있지만, 주제 어드레스는 예를 들어, 감시되고 있는 객체와 연관된 메시지 스트림에 특별하기 때문에 메시지 스트림 상태의 일부일 것이다.
수신기를 위하여, 메시지 스트림 상태는 예를 들어, 최종 수신된 시퀀스 번호, 최종 수신 시간, 순서를 벗어난 메시지들의 복사본들, 송신기와 관련된 어드레스 또는 주제, 및 손실된 메시지들을 검출하기 위한 송신 간격과 관련된 정보를 포함할 수 있다. 예를 들어, 메시지들을 라우팅하는 중간 장치들은 각각의 메시지 스트림에 대한 메시지 스트림 상태를 유지할 수도 있다.
이러한 메시지 스트림 상태 정보는 심지어 많은 수천 개의 객체들 및/또는 사용자들에 대해, 강력한 서버의 소켓(socket)들, 처리, 접속들, 또는 포트(port)들과 같은 다른 자원들 또는 메모리의 작은 일부분만을 차지하는 것으로 기각될 수 있다. 그러나, 서버가 한 번에 수개월 또는 더 긴 기간 동안에 동작하는 것으로 예상될 경우에는, 서버가 메시지 스트림 상태를 유지해야 하는 객체들 및 사용자들의 수가 무한하고, 이에 따라, 이론적으로는, 서버가 메모리 또는 다른 자원들을 다 써버릴 수 있다. 추가적으로, 메시지들의 재정렬이 지원되는 경우, 각각의 메시지 스트림에 대한 버퍼들이 필요해지거나 요구될 수 있다. 많은 수의 메시지 스트림들에 대하여, 이것은 상당한 양의 메모리 이용을 나타낼 수 있다.
또한, 특정한 유형들의 수신자들은 더 제한된 메모리 및/또는 자원 제약들을 가질 수 있다. 예를 들어, 큰 메모리 및/또는 자원 요건들은 이동 장치들과 같은 일부 장치들에서는 실용적이거나 비용 효율적이지 않을 수도 있다. 또 다른 예로서, 특화된 네트워크 인터페이스 제어기("NIC : network interface controller") 카드는 메시지 처리를 수행할 수 있고, 유지될 수 있는 스트림들의 수에 영향을 주는 자원 제한들을 가질 수 있다. 또 다른 예로서, 원격지 또는 네트워크에서 많은 수의 클라이언트들에 정보를 제공할 수 있는 애플리케이션-프로토콜 라우터들을 포함하는, 라우터들 및/또는 브릿지(bridge)들과 같은 장치들은 다양한 구성들에서 수신자들 또는 중간 장치들로서 간주될 수 있다. 일부 장치들은 예를 들어, 메모리 및/또는 자원 제약들을 갖는 특수 목적의 하드웨어 장치들로서 구현될 수 있다. 따라서, 드문 메시지들과 관련된 메시지 스트림들에 대해 저장될 필요가 있는 상태 정보를 감소시키는 것이 바람직하다.
특정한 실시예들은 위에서 설명된 정지 메시지 기술과 조합하여, 메시지 상태 정보를 클리어링함으로써 메시지 스트림 상태 정보를 저장하는 쟁점을 다룬다. 전송 제어 프로토콜("TCP : transmission control protocol") 접속 또는 멀티캐스트 그룹과 같은 기초적인 트랜스포트 접속이 폐쇄되지 않을 수 있지만, 메시지 스트림 상태는 메모리로부터 클리어링, 폐기(discard), 겹쳐쓰기(overwrite), 및/또는 할당해제(de-allocate)될 수 있어서, 소켓들과 같은 연관된 자원들을 제거할 수 있다. 송신될 메시지들이 없는 동안에는, 메시지 스트림 상태 정보를 저장할 필요가 없기 때문에, 메시지 스트림 상태 클리어링이 행해질 수 있다. 따라서, 정지 메시지가 송신 및/또는 수신된 후에는 상태 정보가 클리어링될 수 있다.
새로운 데이터 메시지가 송신되어야 할 때, 미리 정의된 시퀀스 번호와 함께 시작하는 새로운 메시지 스트림 상태가 생성된다. 예를 들어, 정지 메시지가 송신된 이후에 새로운 데이터 메시지가 송신되어야 할 때마다, 새로운 데이터 메시지에 대한 시퀀스 번호는 "0"으로 재설정될 수 있다. 데이터 메시지에 대한 목적지는 출발지 및/또는 메시지 자체의 컨텐츠로부터 유도될 수 있다. 예를 들어, 메시지에 대한 주제는 사용자 정보에 기반으로 하여 구성될 수 있다. 또 다른 예로서, 목적지는 사용자 정보, 그룹 멤버쉽 정보, 애플리케이션 식별자, 사용자 명칭, 및/또는 계정에 기반으로 하여 구성될 수 있다. 새로운 데이터 메시지가 송신되고 있기 때문에, 송신하는 간격과 관련된 상태는 미리 정의된 초기값으로 설정된다. 따라서, 메시지 스트림 상태는 효과적으로 재생성된다.
도 3c는 위에서 설명된 예시적인 메시지 스트림 상태 클리어링 기술과 조합하여 예시적인 정지 메시지 기술을 사용하는 예시적인 메시지들을 예시한다. 이 예에서는, 메시지 스트림 내의 각각의 메시지(데이터 메시지들 및 정지 메시지들 둘 모두)의 시퀀스 번호가 "1"만큼 증분된다. 시퀀스 번호 "0"을 갖는 데이터 메시지 M1이 송신되고, 시퀀스 번호 "1"을 갖는 데이터 메시지 M2가 송신되고, 시퀀스 번호 "2"를 갖는 정지 메시지 SM1이 송신된다. 정지 메시지 SM1을 송신한 후, 메시지 스트림 상태는 송신기, 수신기, 및 하나 또는 그보다 많은 중간 장치들 중의 하나 또는 그보다 많은 것에 의해 클리어링된다. 메시지 스트림 상태가 클리어링되었으므로, 송신될 추후의 데이터 메시지에 대한 시퀀스 번호는 미리 결정된 값 "0"으로 또한 재설정된다. 정지 메시지 SM1을 송신하는 것은 다음 수신된 메시지가 데이터 메시지이어야 하고 데이터 메시지의 시퀀스 번호는 "0"이어한 함을 수신자(및 임의의 중간 장치들)에게 표시한다. 이 예에서는, 더 나중의 시간에, 시퀀스 번호 "0"을 갖는 데이터 메시지 M3이 송신되고, 시퀀스 번호 "1"을 갖는 데이터 메시지 M4가 송신되고, 시퀀스 번호 "2"를 갖는 정지 메시지 SM2가 송신된다. 정지 메시지 SM1을 수신한 후, 수신자는 "0"의 시퀀스 번호를 갖는 데이터 메시지를 수신할 것을 예상할 것이다. 예를 들어, 데이터 메시지 M3이 손실되었을 경우, 수신자는 그 대신에 시퀀스 번호 "1"을 갖는 데이터 메시지 M4를 수신할 것이다. 수신자는 수신된 데이터 메시지 M4의 시퀀스 번호가 "0"이 아닐 것이므로 데이터 메시지가 손실된 것으로 결정할 것이다. 또 다른 예에서는, 데이터 메시지들 M3 및 M4가 손실되었을 경우, 수신자는 수신된 메시지가 "0" 및 "1"의 시퀀스 번호들을 갖는 데이터 메시지들 M3 및 M4가 아니라 "2"의 시퀀스 번호를 갖는 정지 메시지 SM2일 것이므로 데이터 메시지들 둘 모두가 손실된 것으로 결정할 것이다.
E. 위상 번호 기술
위에서 설명된 바와 같이, 메시지 스트림 상태 클리어링 기술을 이용할 때, 미리 정의된 시퀀스 번호와 함께 시작하는 새로운 메시지 스트림 상태가 생성된다. 예를 들어, 정지 메시지가 송신된 이후에 새로운 데이터 메시지가 송신될 때마다, 새로운 데이터 메시지에 대한 시퀀스 번호는 "0"으로 재설정된다. 정지 메시지를 송신한 이후에 메시지 스트림 상태를 클리어링하는 시스템은 전체 메시지 시퀀스가 손실될 때에는 손실된 데이터 메시지들을 검출하지 못할 수 있다. 메시지 시퀀스는 데이터 메시지들 및 대응하는 추후의 정지 메시지의 시퀀스이다. 이러한 시스템이 전체 메시지 시퀀스가 손실된, 시퀀스 번호들의 부정확한 정렬로 인해 손실된 데이터 메시지를 검출할 수는 있지만, 수신된 메시지들의 시퀀스 번호들은 정확하게 정렬되어 있다. 새로운 메시지 시퀀스에 대한 시퀀스 번호들은 "0"과 같은 미리 결정된 시퀀스 번호와 함께 재시작할 수 있으므로, 수신된 메시지들은 정확하게 정렬되어 있다. 새로운 메시지 시퀀스의 시퀀스 번호들이 재설정되는 경우, 전체 메시지 시퀀스의 손실은 검출되지 않을 수 있다. 이 쟁점의 예는 도 3d에 예시되어 있다.
도 3d는 전체 메시지 시퀀스가 검출 없이 손실될 수 있는 예시적인 메시지들을 예시한다. 이 예에서는, 각각의 메시지에 대한 시퀀스 번호가 1만큼 증분되고 정지 메시지의 송신 시에 "0"으로 재설정된다. 따라서, 시퀀스 번호 "0"을 갖는 데이터 메시지 M1가 송신되고, 시퀀스 번호 "1"을 갖는 데이터 메시지 M2가 송신되고, 시퀀스 번호 "2"를 갖는 정지 메시지 SM1이 송신된다. 정지 메시지가 송신되므로, 추후의 데이터 메시지의 시퀀스 번호는 "0"으로 재설정된다. 시퀀스 번호 "0"을 갖는 데이터 메시지 M3이 송신되고, 시퀀스 번호 "1"을 갖는 데이터 메시지 M4가 송신되고, 시퀀스 번호 "2"를 갖는 정지 메시지 SM2가 송신된다. 또 다른 정지 메시지가 송신되는 경우, 추후의 데이터 메시지의 시퀀스 번호가 재설정된다. 시퀀스 번호 "0"을 갖는 데이터 메시지 M5가 송신되고, 시퀀스 번호 "1"을 갖는 데이터 메시지 M6이 송신되고, 시퀀스 번호 "2"를 갖는 정지 메시지 SM3이 송신된다.
이 예에서는, 데이터 메시지 M3, 데이터 메시지 M4, 및 정지 메시지 SM2가 손실된다. 정지 메시지의 송신 이후에는 데이터 메시지의 시퀀스 번호가 재설정되므로, 이 예에서 수신자는 손실된 메시지들 M3, M4, 및 SM2를 검출하지 못할 것이다. 여기서, 수신자는 SM1의 수신 이후에 "0"의 시퀀스 번호를 갖는 데이터 메시지를 수신할 것이라고 예상할 것이지만, 메시지들 M3, M4, 및 SM2의 손실을 검출하지 못하면서 그렇게 수신한다.
또 다른 예로서, 네트워크 지연들 및 메시지 손실의 둘 모두로 인해, 하나의 메시지 시퀀스의 일부가 제 2 메시지 시퀀스의 일부와 검출 불가능하게 조합될 수 있고, 따라서, 시스템은 이 조합된 메시지들의 손실을 검출하지 못할 수 있다. 도 3e는 하나의 예를 예시한다. 이 예에서는, 위에서 논의되고 도 3d에 도시된 예와 유사하게, 각각의 메시지에 대한 시퀀스 번호가 "1"만큼 증분되고 정지 메시지의 송신 시에 "0"으로 재설정된다. 도 3e의 예에서는, 시퀀스 번호 "0"을 갖는 데이터 메시지 M1이 송신되고, 시퀀스 번호 "1"을 갖는 데이터 메시지 M2가 송신되고, 시퀀스 번호 "2"를 갖는 데이터 메시지 M3이 송신되고, 시퀀스 번호 "3"을 갖는 정지 메시지 SM1이 송신된다. 시퀀스 번호들은 재설정되고, 시퀀스 번호 "0"을 갖는 데이터 메시지 M4가 송신되고, 시퀀스 번호 "1"을 갖는 데이터 메시지 M5가 송신되고, 시퀀스 번호 "2"를 갖는 데이터 메시지 M6이 송신되고, 시퀀스 번호 "3"을 갖는 정지 메시지 SM2가 송신된다.
이 예에서는, 메시지들 M3, SM1, M4, 및 M5가 손실된다. 시퀀스 번호 "1"을 갖는 데이터 메시지 M2를 수신한 후, 수신자는 "2"의 시퀀스 번호를 갖는 데이터 메시지를 수신할 것으로 예상한다. 정지 메시지의 송신 후에 시퀀스 번호들이 재설정되므로, 수신자는 메시지들 M3, SM1, M4, 및 M5의 손실을 검출하지 못하면서 "2"에 대한 시퀀스 번호를 갖는 데이터 메시지를 수신한다. 이 시나리오(scenario)는 메시지들이 더 큰 간격들로 송신되지만 중간 장치에서 버퍼링 및/또는 지연되고 그 다음에 일부 메시지들이 누락될 경우에 발생할 수 있다.
메시지 스트림 상태가 클리어링되고 추후에 송신된 데이터 메시지들의 시퀀스 번호들이 재설정되어 메시지 시퀀스들이 손실될 수 있는 시나리오를 다루기 위하여, 특정한 실시예들은 시퀀스 번호에 부가하여 각각의 메시지 내에 포함되는 위상 번호(phase number)를 제공한다. 위상 번호는 전체 메시지 시퀀스에 대해 동일하게 되어 있는 식별자이고, 예를 들어, 정지 메시지가 송신된 후에는 추후의 메시지 시퀀스에 대해 또 다른 값으로 설정된다. 위상 번호는 예를 들어, 수치(numeric), 영숫자(alphanumeric), 또는 비트 패턴 값일 수 있다.
도 3f는 위상 번호 기술에 따라 위상 번호들을 갖는 도 3d의 예시적인 메시지들을 예시한다. 도 3f에 도시된 예에서는, 각각의 메시지 시퀀스의 위상 번호들이 1만큼 증분된다. 따라서, 위상 번호 "0"을 갖는 제 1 메시지 시퀀스가 송신되고, 위상 번호 "1"을 갖는 제 2 메시지 시퀀스가 송신되고, 위상 번호 "2"를 갖는 제 3 메시지 시퀀스가 송신된다. 이 예에서, 수신자는 1만큼 증분되는 위상 번호들을 갖는 메시지 시퀀스들을 수신하는 것을 예상한다. 그러므로, 위상 번호 "0"을 갖는 제 1 메시지 시퀀스가 수신된 이후에 위상 번호 "2"를 갖는 제 3 메시지 시퀀스가 수신될 때, 수신자는 위상 번호 "1"을 갖는 메시지 시퀀스가 손실된 것으로 결정할 수 있다.
도 3g는 포함된 위상 번호들을 갖는 도 3e의 예시적인 메시지들을 예시한다. 도 3g에서는, 각각의 메시지 시퀀스의 위상 번호들이 1만큼 증분된다. 따라서, 위상 번호 "0"을 갖는 제 1 메시지 시퀀스가 송신되고, 위상 번호 "1"을 갖는 제 2 메시지 시퀀스가 송신된다. 이 예에서, 수신자는 1만큼 증분된 위상 번호들을 갖는 메시지 시퀀스들을 수신하는 것을 예상한다. 시퀀스 번호 "1" 및 위상 번호 "0"을 갖는 데이터 메시지 M2를 수신한 후, 수신자는 "2"의 시퀀스 번호 및 "0"의 위상 번호를 갖는 데이터 메시지를 수신하는 것을 예상한다. 메시지들 M3, SM1, M4, 및 M5가 손실된 경우, 수신자는 그 대신에 시퀀스 번호 "2" 및 위상 번호 "1"을 갖는 데이터 메시지 M6을 수신한다. 수신된 데이터 메시지의 위상 번호가 "0"이 아니므로, 수신자는 손실된 메시지들의 시퀀스를 검출할 수 있다.
또 다른 예에서는, 동일한 메시지 시퀀스 내의 각각의 메시지가 동일한 위상을 가지므로, 위상 번호는 클리어링될 수 있는 메시지 스트림 상태의 일부이다. 메시지 스트림 상태를 클리어링하는 장점들은 위에서 설명되어 있다. 새로운 메시지 시퀀스가 시작될 때, 다음 메시지 시퀀스에 대한 위상의 값은 송신기로부터 새로운 시퀀스가 송신될 때마다 비-반복적인 또는 매우 드물게 반복적인 방식으로 변경되는 송신기 상에서 이용가능한 전체 값 또는 함수로부터 취해진다. 이것은 수신자가 예측가능하지 않은 다음 위상 번호로 귀착된다. 예를 들어, 송신기는 새로운 메시지 시퀀스가 시작될 때마다 1만큼 증분되며 프로토콜 구현에 이용가능한 단일 32-비트 부호 없는 정수 값을 유지할 수 있다. 수신자와 관계없이, 새로운 시퀀스가 송신기로부터 송신될 때마다 새로운 위상 번호가 선택된다. 따라서, 이 예에서는, 송신기가 메시지 시퀀스들을 많은 상이한 수신자들에게 송신하는 중일 수 있으므로, 수신자는 메시지 시퀀스들의 위상 번호를 예측할 수 없다.
도 3h는 수신자가 메시지 시퀀스의 위상 번호를 예측할 수 없는 예시적인 메시지들을 예시한다. 도 3h는 도 3g에 예시된 예와 유사하지만, 도 3h에서는, 위상 번호들이 무작위로 배정된다. 도 3h의 예에서는, 시퀀스 번호 "0"을 갖는 제 1 메시지 시퀀스가 송신되고, 위상 번호 "5"를 갖는 제 2 메시지 시퀀스가 송신된다. 시퀀스 번호 "1" 및 위상 번호 "0"을 갖는 데이터 메시지 M2를 수신한 후, 수신자는 위상 번호 "0"을 갖는 데이터 메시지 또는 정지 메시지를 수신하는 것을 예상할 것이다. 메시지들 M3, SM1, M4, 및 M5가 손실된 경우, 수신자는 시퀀스 번호 "2" 및 위상 번호 "5"를 갖는 데이터 메시지 M6을 수신한다. 데이터 메시지 M6의 위상 번호 "5"를 데이터 메시지 M2의 위상 번호 "0"과 비교하여, 수신자는 메시지들의 시퀀스가 손실된 것으로 결정한다.
수신자가 메시지 시퀀스의 위상 번호를 예측할 수 없는 또 다른 예에서는, 수신자가 위상 번호들이 메시지 스트림 상태와 함께 클리어링된 전체 메시지 시퀀스의 손실을 검출하지 못할 수 있다. 이 예에서 손실된 메시지들을 검출하기 위하여, 링크 상태 문제들을 검출할 수 있는 메커니즘이 채용될 수 있다. 예를 들어, 동일한 링크/트랜스포트 상에서 다수의 메시지 스트림들이 송신될 수 있기 때문에 특정 메시지 스트림들에 관계없이 각각의 링크/트랜스포트 메커니즘 상에서 주기적인 하트비트들을 송신하는 별도의 메커니즘은 이 유형들의 링크 불량들을 검출할 수 있고, 애플리케이션들은 이에 따라 완전한 시퀀스를 손실하는 것으로 인한 문제들을 방지하도록 작동할 수 있다. 또한, 일부 상황들에서는, 데이터의 본질로 인해, 메시지 시퀀스의 손실이 더 나중의 시퀀스를 처리하는 동안에 수신자에게 분명해질 수 있다.
도 4는 위에서 설명된 바와 같은 위상 번호들을 이용하는 메시지들을 송신하기 위한 방법의 예시적인 흐름도(400)를 예시한다. 이 예에서는, 시퀀스 번호들과 함께 위상 번호들이 각각의 메시지에 이용되고, 하트비트 메시지들은 전혀 이용되지 않으며, 데이터 메시지가 송신되지 않는 초기 간격 이후의 정지 메시지만이 이용된다. 특정한 실시예들에서는, 하트비트 메시지들이 정지 메시지가 송신된 이후에 송신될 수도 있다. 또한, 위에서 논의된 메시지 스트림 상태 클리어링 기술의 실시예도 통합된다.
블록(401)에서는, 새로운 메시지가 송신되어야 하는지에 대한 결정이 행해진다. 새로운 메시지는 예를 들어, 새로운 데이터 메시지 또는 정지 메시지일 수 있다. 예를 들어, 송신될 새로운 데이터 메시지는 애플리케이션으로부터 수신될 수 있다. 또 다른 예로서, 초기 간격과 연관된 타이머(timer)가 만료될 수 있고, 이것은 정지 메시지가 수신되어야 함을 표시한다. 특정한 실시예들에서는, 송신될 새로운 메시지가 하트비트 메시지일 수 있다. 새로운 메시지가 송신되지 않아야 한다고 결정되는 경우, 제어는 블록(401)으로 복귀한다.
(블록(401)에서 결정되는 바와 같이) 새로운 메시지가 송신되어야 하는 경우, 블록(402)에서는, 위상 번호가 결정된다. 새로운 데이터가 메시지 시퀀스 내의 제 1 데이터 메시지인 경우, 위상 번호는 예를 들어, 이전 메시지 시퀀스의 위상 번호를 증분시킴으로써(또는 이것이 송신된 제 1 메시지 시퀀스인 경우에 "0"과 같은 미리 정의된 값에서 시작함) 또는 전체 값 또는 함수로부터 새로운 위상 번호를 취함으로써 결정될 수 있다. 예를 들어, 최종 메시지 시퀀스의 위상 번호는 "0"으로부터 "1"까지 1만큼 증분될 수 있다. 새로운 메시지가 메시지 시퀀스 내의 제 1 데이터 메시지가 아닐 경우, 위상 번호는 송신된 최종 메시지의 위상 번호인 것으로 결정될 수 있다. 예를 들어, 송신된 최종 메시지의 위상 번호가 "1"이었을 경우, 송신될 새로운 메시지에 대한 위상 번호도 "1"이다.
블록(403)에서는, 시퀀스 번호가 결정된다. 새로운 메시지가 데이터 메시지인 경우, 시퀀스 번호는 이전에 송신된 데이터 메시지의 시퀀스 번호를 증분시킴으로써(또는 이것이 메시지 시퀀스 내의 제 1 데이터 메시지인 경우에 "0"과 같은 미리 정의된 값에서 시작함) 결정될 수 있다. 예를 들어, 시퀀스 번호는 "0"으로부터 "1"까지 1만큼 증분될 수 있다. 새로운 메시지가 정지 메시지(또는, 특정한 실시예들에서는 하트비트 메시지)인 경우, 시퀀스 번호는 메시지 시퀀스 내의 송신된 최종 데이터 메시지의 시퀀스 번호인 것으로 결정될 수 있다.
블록(404)에서는, 새로운 메시지가 데이터 메시지인 경우, 제어는 블록(405)으로 진행한다. 새로운 메시지가 정지 메시지인 경우, 제어는 블록(406)으로 진행한다.
블록(405)에서는, 새로운 메시지(데이터 메시지)가 송신되고 제어는 블록(401)으로 복귀한다.
블록(404)으로부터, 하트비트 메시지들을 통합하는 특정한 실시예들에서는, 제어는 새로운 하트비트 메시지를 송신하기 위한 블록으로 전달될 것이고 제어가 블록(401)으로 복귀하기 전에 새로운 다음 하트비트 시간을 결정할 것이다.
블록(406)에서는, 새로운 메시지(정지 메시지)가 송신된다. 블록(407)에서는, 메시지 스트림 상태가 위에서 논의된 바와 같이 클리어링되고 제어는 블록(401)으로 복귀한다.
도 5는 위에서 설명된 위상 번호 기술에 따라 메시지들을 수신하기 위한 방법의 예시적인 흐름도(500)를 예시한다. 이 예에서는, 시퀀스 번호들과 함께 위상 번호들이 각각의 메시지에 이용되고, 각각의 메시지 스트림은 상이한 위상 번호를 가진다. 예를 들어, 각각의 메시지 스트림은 이전 메시지 스트림의 위상 번호보다 하나 더 큰 위상 번호를 가질 수 있다. 또 다른 예로서, 각각의 메시지 스트림은 수신자가 예측가능하지 않은 위상 번호를 가질 수 있다. 또한, 이 예에서는, 각각의 데이터 메시지가 상이한 시퀀스 번호를 가진다. 예를 들어, 각각의 데이터 메시지는 이전 데이터 메시지의 시퀀스 번호보다 하나 더 큰 시퀀스 번호를 가질 수 있다. 이 예에서는, 하트비트 메시지들이 전혀 이용되지 않고, 데이터 메시지가 송신되지 않았던 초기 간격 이후의 정지 메시지만이 이용된다. 특정한 실시예들에서는, 하트비트 메시지들이 정지 메시지가 송신되기 전에 송신될 수도 있다. 또한, 위에서 논의된 메시지 스트림 상태 클리어링 기술의 실시예도 통합된다.
블록(501)에서는, 메시지가 수신된다. 메시지는 예를 들어, 데이터 메시지 또는 정지 메시지일 수 있다. 메시지가 예상된 시간 간격 내에 수신되지 않을 경우, 손실된 메시지가 보고될 수 있다. 예상된 시간 간격은 데이터 메시지와 제 1 하트비트 메시지(또는, 여기서는 정지 메시지) 사이의 초기 시간 간격에 기반으로 할 수 있거나, 예상된 시간 간격은 예를 들어, 2개의 하트비트 메시지들 사이의 간격에 기반으로 할 수 있다. 예를 들어, 예상된 시간 간격을 결정하기 위한 네트워크 지연 변동들을 허용하기 위하여, 초기 시간 간격 및/또는 2개의 하트비트 메시지들 사이의 간격은 일정한 양만큼 증가될 수 있거나 2배로 될 수 있다.
블록(502)에서는, 수신된 메시지의 예상된 위상 번호가 결정된다. 이 예에서, 수신된 메시지의 예상된 위상 번호는 메시지 시퀀스 내의 이전에 수신된 메시지의 위상 번호와 동일하다. 수신된 메시지가 (이전 메시지들이 수신되지 않았거나 이전 메시지가 정지 메시지이었는지에 기반으로 하여 결정될 수 있는) 메시지 시퀀스의 제 1 메시지인 경우, 예상된 위상 번호는 위상 번호가 수신기에 의해 예측가능한지 여부에 기반으로 하여 결정된다. 위상 번호가 수신기에 의해 예측가능한 경우, 예상된 위상 번호는 미리 결정된 함수에 따라 결정될 수 있다. 예를 들어, 예상된 위상 번호는 이전 메시지 시퀀스의 위상 번호를 증분시킴으로써(또는 이것이 수신된 제 1 메시지 시퀀스인 경우에 "0"과 같은 미리 정의된 값에서 시작함) 결정될 수 있다. 위상 번호가 수신기에 의해 예측가능하지 않은 경우, 메시지 시퀀스 내의 수신된 제 1 메시지의 위상 번호는 예상된 위상 번호로서 취해지고, 이전 메시지 시퀀스의 위상 번호와는 상이한 것으로 예상된다.
블록(503)에서는, 수신된 메시지의 예상된 시퀀스 번호가 결정된다. 수신된 메시지가 데이터 메시지인 경우, 예상된 시퀀스 번호는 이전에 수신된 메시지의 시퀀스 번호를 (또는 이전 메시지가 이 메시지 시퀀스에서 수신되지 않았을 경우에 미리 결정된 초기 시퀀스 번호로부터) 증분시킴으로써 결정될 수 있다. 예를 들어, 시퀀스 번호는 "0"으로부터 "1"까지 1만큼 증분될 수 있다. 수신된 메시지가 정지 메시지인 경우, 이 예에서는, 예상된 시퀀스 번호가 이전에 수신된 메시지의 시퀀스 번호와 동일할 것이다.
블록(504)에서는, 수신된 메시지의 위상 번호가 블록(502)에서 결정된 예상된 위상 번호와 비교된다.
수신된 메시지의 위상 번호가 (블록(504)에서 결정된 바와 같이) 예상된 위상 번호와 동일하지 않을 경우, 손실된 데이터 메시지가 보고될 수 있다. 특정한 실시예들에서는, 손실된 메시지가 데이터 메시지인 경우에만 손실된 메시지가 보고될 수 있다. 특정한 실시예들에서는, 시스템이 메시지가 분실되어 있는 것으로 결정할 수 있고, 분실된 메시지를 수신하기 위하여 시간 기간을 대기해야 할 수 있다. 분실된 메시지가 시간 기간 내에 수신되지 않을 경우, 시스템은 분실된 메시지를 손실된 것으로 보고할 수 있다.
수신된 메시지의 위상 번호가 (블록(504)에서 결정된 바와 같이) 예상된 위상 번호와 동일한 경우, 블록(506)에서는, 수신된 메시지의 시퀀스 번호가 블록(503)에서 결정된 예상된 시퀀스 번호와 비교된다.
수신된 메시지의 시퀀스 번호가 (블록(506)에서 결정된 바와 같이) 예상된 시퀀스 번호와 동일하지 않을 경우, 블록(505)에서는, 손실된 메시지가 위에서 논의된 바와 같이 보고될 수 있다.
수신된 메시지의 시퀀스 번호가 (블록(506)에서 결정된 바와 같이) 예상된 시퀀스 번호와 동일한 경우, 블록(507)에서는, 수신된 메시지가 데이터 메시지일 경우에는, 제어가 블록(508)으로 진행한다. 수신된 메시지가 정지 메시지일 경우, 제어는 블록(509)으로 진행한다.
수신된 메시지가 데이터 메시지일 경우, 블록(508)에서는, 데이터 메시지가 처리된다. 예를 들어, 수신된 데이터 메시지는 애플리케이션으로 전달될 수 있다. 다음으로, 제어는 블록(501)으로 복귀한다.
수신된 메시지가 정지 메시지일 경우, 블록(509)에서는, 메시지 스트림 상태가 위에서 논의된 바와 같이 클리어링되고, 제어는 블록(501)으로 복귀한다.
블록(507)으로부터, 하트비트 메시지들을 통합하는 특정한 실시예들에서는, 제어는 제어가 블록(501)으로 복귀할 다음 예상된 하트비트 시간을 업데이트하기 위한 블록으로 전달될 것이다.
IV. 예시적인 송신기 장치들 및 수신기 장치들
도 6은 예시적인 송신기 장치(600)의 블록도를 예시한다. 송신기 장치(600)는 위에서 논의된 기술을 개별적으로 그리고 조합하여 구현한다. 송신기 장치(600)는 메시지 송신기(601), 메시지 식별기(602), 위상 번호 발생기(603), 시퀀스 번호 발생기(604), 및 메시지 스트림 상태 클리어러(message stream state clearer)(605)를 포함한다.
특정한 실시예들에서는, 위에서 논의된 기술들의 서브세트(subset)(및/또는 조합들의 서브세트)만이 구현될 수 있다. 예를 들어, 위상 번호 기술을 제공하지 않는 송신기 장치는 위상 번호 발생기(603)를 포함하지 않을 수도 있다.
메시지 송신기(601)는 메시지들을 송신한다. 예를 들어, 메시지 송신기(601)는 데이터 메시지들, 하트비트 메시지들, 및 정지 메시지들을 송신할 수 있다. 사용되고 있는 특별한 기술(들)에 따라서는, 일부 메시지 유형들이 송신되지 않을 수도 있다. 예를 들어, 위상 번호 기술이 오직 정지 메시지들과 사용되고 있을 경우, 하트비트 메시지들은 송신되지 않을 것이다. 또 다른 예로서, 위상 번호 기술이 증가하는 간격 기술을 갖는 하트비트 및 정지 메시지 기술과 사용될 수 있으므로, 데이터 메시지들, 하트비트 메시지들, 및 정지 메시지들이 송신될 수 있다. 또한, 사용되고 있는 특별한 기술(들)에 따라서는, 메시지들이 시퀀스 번호, 또는 위상 번호들 및 시퀀스 번호들의 둘 모두를 포함할 수 있다. 예를 들어, 증가하는 간격 기술을 갖는 하트비트를 사용하여 송신된 메시지들은 위상 번호들을 포함하지 않을 수도 있다. 또 다른 예로서, 위상 번호 기술을 사용하여 송신된 메시지들은 위상 번호들 및 시퀀스 번호들의 둘 모두를 포함할 수 있다.
메시지 송신기(601)는 송신하기 위한 데이터를 애플리케이션으로부터 데이터 메시지로 수신할 수 있다. 메시지 송신기(601)는 하트비트 메시지들 및/또는 정지 메시지들이 사용되고 있는 특별한 기술(들)에 따라 적절한 간격들로 송신될 수 있도록 다음 하트비트 시간을 추적할 수 있다.
특정한 실시예들에서는, 상이한 메시지 유형들을 송신하기 위하여 별도의 메시지 송신기들이 사용될 수 있다.
메시지 식별기(602)는 송신되고 있는 메시지의 유형을 식별한다. 예를 들어, 메시지 식별기(602)는 송신될 메시지를 데이터 메시지, 하트비트 메시지, 또는 정지 메시지인 것으로 식별할 수 있다.
위상 번호 발생기(603)는 송신될 메시지에 대한 위상 번호를 결정하고 이를 제공한다. 위상 번호는 위상 번호를 포함하는 송신될 메시지들에 대하여 메시지 송신기(601)에 제공된다. 위상 번호는 위에서 논의된 바와 같이 결정될 수 있다. 송신될 메시지가 메시지 시퀀스 내의 제 1 메시지일 때, 위상 번호는 예를 들어, 이전 메시지 시퀀스의 위상 번호를 증분시킴으로써(또는 이것이 송신된 제 1 메시지 시퀀스일 경우에 "0"과 같은 미리 정의된 값에서 시작함) 또는 전체 값 또는 함수로부터 새로운 위상 번호를 취함으로써 결정될 수 있다. 송신될 메시지가 메시지 시퀀스 내의 제 1 메시지가 아닐 때, 위상 번호는 송신된 최종 메시지의 위상 번호인 것으로 결정될 수 있다.
시퀀스 번호 발생기(604)는 송신될 메시지에 대한 시퀀스 번호를 결정하고 이를 제공한다. 시퀀스 번호는 송신되고 있는 메시지의 유형에 기반으로 하여 결정될 수 있다. 시퀀스 번호는 위에서 논의된 바와 같이 결정될 수 있다. 일부 실시예들에서는, 하트비트 메시지 및/또는 정지 메시지에 대한 시퀀스 번호가 송신된 최종 데이터 메시지에 대한 시퀀스 번호와 동일하다. 일부 실시예들에서는, 최종 메시지가 데이터 메시지이었든지 또는 하트비트 메시지이었든지, 하트비트 메시지 및/또는 정지 메시지에 대한 시퀀스 번호가 송신된 최종 메시지의 시퀀스 번호로부터 증분된다. 일부 실시예들에서는, 새로운 메시지 시퀀스의 제 1 메시지에 대하여, 시퀀스 번호가 미리 정의된 값으로 재설정된다.
메시지 스트림 상태 클리어러(605)는 정지 메시지가 위에서 논의된 바와 같이 송신된 후에 메시지 스트림 상태를 클리어링한다.
도 7은 예시적인 수신기 장치(700)의 블록도를 예시한다. 수신기 장치(700)는 위에서 논의된 기술들을 개별적으로 그리고 조합하여 구현한다. 수신기 장치(700)는 메시지 수신기(701), 메시지 식별기(702), 예상된 위상 번호 발생기(703), 예상된 시퀀스 번호 발생기(704), 위상 번호 비교기(705), 시퀀스 번호 비교기(706), 손실된 메시지 보고기(707), 메시지 프로세서(708), 및 메시지 스트림 상태 클리어러(709)를 포함한다.
특정한 실시예들에서는, 위에서 논의된 기술들의 서브세트(및/또는 조합들의 서브세트)만이 구현될 수 있다. 예를 들어, 위상 번호 기술을 제공하지 않는 수신기 장치는 예상된 위상 번호 발생기(703) 및/또는 위상 번호 비교기(705)를 포함하지 않을 수도 있다.
메시지 수신기(701)는 메시지들을 수신한다. 예를 들어, 메시지 수신기(701)는 데이터 메시지들, 하트비트 메시지들, 및 정지 메시지들을 수신할 수 있다. 사용되고 있는 특별한 기술(들)에 따라서는, 일부 메시지 유형들이 수신되지 않을 수도 있다. 예를 들어, 위상 번호 기술이 오직 정지 메시지들과 사용되고 있을 경우, 하트비트 메시지들이 수신되지 않을 것이다. 또 다른 예로서, 위상 번호 기술은 증가하는 간격 기술을 갖는 하트비트 및 정지 메시지 기술과 사용될 수 있으므로, 데이터 메시지들, 하트비트 메시지들, 및 정지 메시지들이 수신될 수 있다. 또한, 사용되고 있는 특별한 기술(들)에 따라서는, 메시지들이 시퀀스 번호, 또는 위상 번호들 및 시퀀스 번호들의 둘 모두를 포함할 수 있다. 예를 들어, 증가하는 간격 기술을 갖는 하트비트를 사용하여 수신된 메시지들은 위상 번호들을 포함하지 않을 수도 있다. 또 다른 예로서, 위상 번호 기술을 사용하여 수신된 메시지들은 위상 번호들 및 시퀀스 번호들의 둘 모두를 포함할 수 있다.
메시지 수신기(701)는 하트비트 메시지들 및/또는 정지 메시지들이 예상된 시간 간격 내에 수신될 경우에 손실될 것으로 검출되도록 예상된 다음 하트비트 시간을 추적할 수 있다. 예상된 시간 간격은 데이터 메시지와 제 1 하트비트 메시지 또는 정지 메시지 사이의 초기 시간 간격에 기반으로 할 수 있거나, 예상된 시간 간격은 예를 들어, 2개의 하트비트 메시지들 사이의 간격에 기반으로 할 수 있다. 예를 들어, 예상된 시간 간격을 결정하기 위한 네트워크 지연 변동들을 허용하기 위하여, 초기 시간 간격 및/또는 2개의 하트비트 메시지들 사이의 간격은 일정한 양만큼 증가될 수 있거나 2배로 될 수 있다.
특정한 실시예들에서는, 상이한 메시지 유형들을 수신하기 위하여 별도의 메시지 수신기들이 사용될 수 있다.
메시지 식별기(702)는 수신된 메시지의 유형을 식별한다. 예를 들어, 메시지 식별기(702)는 수신된 메시지를 데이터 메시지, 하트비트 메시지, 또는 정지 메시지인 것으로 식별할 수 있다.
예상된 위상 번호 발생기(703)는 수신된 메시지에 대한 예상된 위상 번호를 결정하고 이를 제공한다. 위상 번호는 위에서 논의된 바와 같이 결정될 수 있다. 수신된 메시지의 예상된 위상 번호는 메시지 시퀀스 내의 이전에 수신된 메시지의 위상 번호와 동일하다. 수신된 메시지가 메시지의 시퀀스의 제 1 메시지(이전 메시지가 전혀 수신되지 않았는지 또는 이전 메시지가 정지 메시지이었는지에 기반으로 하여 결정될 수 있음)인 경우, 예상된 위상 번호는 위상 번호가 수신기에 의해 예측가능한지 여부에 기반으로 하여 결정된다. 위상 번호가 수신기에 의해 예측가능한 경우, 예상된 위상 번호는 미리 결정된 함수에 따라 결정될 수 있다. 예를 들어, 예상된 위상 번호는 이전 메시지 시퀀스의 위상 번호를 증분시킴으로써(또는 이것이 수신된 제 1 메시지 시퀀스일 경우에 "0"과 같은 미리 정의된 값에서 시작함) 결정될 수 있다. 위상 번호가 수신기에 의해 예측가능하지 않은 경우, 메시지 시퀀스 내의 수신된 제 1 메시지의 위상 번호는 예상된 위상 번호로서 취해지고, 이전 메시지 시퀀스의 위상 번호와는 상이한 것으로 예상된다.
예상된 시퀀스 번호 발생기(704)는 수신된 메시지에 대한 예상된 시퀀스 번호를 결정하고 이를 제공한다. 예상된 시퀀스 번호는 수신된 메시지의 유형에 기반으로 하여 결정될 수 있다. 예상된 시퀀스 번호는 위에서 논의된 바와 같이 결정될 수 있다. 일부 실시예들에서는, 하트비트 메시지 및/또는 정지 메시지에 대한 예상된 시퀀스 번호가 수신된 최종 데이터 메시지에 대한 시퀀스 번호와 동일하다. 일부 실시예들에서는, 하트비트 메시지 및/또는 정지 메시지에 대한 예상된 시퀀스 번호가 수신된 최종 데이터 메시지의 시퀀스 번호로부터 증분된다. 일부 실시예들에서는, 새로운 메시지 시퀀스의 제 1 메시지에 대하여, 예상된 시퀀스 번호가 미리 정의된 값으로 재설정된다.
위상 번호 비교기(705)는 수신된 메시지의 위상 번호가 예상된 위상 번호 발생기(703)에 의해 제공되는 예상된 위상 번호와 동일한지를 결정한다. 동일하지 않을 경우, 손실된 메시지 보고기(707)는 손실된 메시지를 보고하기 위해 이용된다.
시퀀스 번호 비교기(706)는 수신된 메시지의 시퀀스 번호가 예상된 시퀀스 번호 발생기(704)에 의해 제공되는 예상된 시퀀스 번호와 동일한지를 결정한다. 동일하지 않을 경우, 손실된 메시지 보고기(707)는 손실된 메시지를 보고하기 위해 이용된다.
손실된 메시지 보고기(707)는 손실된 메시지를 보고한다. 특정한 실시예들에서는, 손실된 메시지가 데이터 메시지일 경우에만 손실된 메시지가 보고될 수 있다. 특정한 실시예들에서는, 메시지 수신기(701)가 메시지가 분실되어 있는 것으로 결정할 수 있고, 분실된 메시지를 수신하기 위하여 시간 기간을 대기할 수 있다. 분실된 메시지가 시간 기간 내에 수신되지 않는 경우, 메시지 수신기(701)는 분실된 메시지를 손실된 것으로 보고하기 위하여 손실된 메시지 보고기(707)를 이용할 수 있다.
메시지 프로세서(708)는 수신된 메시지를 처리한다. 예를 들어, 수신된 데이터 메시지는 애플리케이션으로 전달될 수 있다.
메시지 스트림 상태 클리어러(709)는 정지 메시지가 위에서 논의된 바와 같이 수신된 후에 메시지 스트림 상태를 클리어링한다.
V. 예시적인 전자 트레이딩 시스템
상기한 것으로부터 명백한 바와 같이, 실시예들은 데이터가 접속된 장치들에 의해 송신되고 이 접속된 장치들로부터 수신되는 네트워크 환경에 적용된다. 예시적인 이러한 환경은 전자 거래소가 마켓 데이터(market data)와 관련된 메시지들을 트레이딩 장치로 전송하는 전자 트레이딩 시스템이다. 마켓 데이터는 예를 들어, 가격 데이터(price data), 마켓 깊이 데이터(market depth data), 최종 트레이딩된 수량 데이터(quantity data), 및/또는 트레이딩가능한 객체에 대한 마켓과 관련된 임의의 데이터를 포함한다. 일부 전자 트레이딩 시스템들에서는, 트레이딩 장치가 트레이드 주문(trade order)들과 관련된 메시지들을 전자 거래소에 송신한다. 트레이드 주문을 수신 시에, 전자 거래소는 트레이드 주문을 거래소 주문 대장(order book)에 입력하고 트레이드 주문의 수량을 하나 또는 그보다 많은 반대측(contra-side) 트레이드 주문들과 일치시키도록 시도한다. 특정한 실시예들에서는, 각각의 주문이 그 주문과 관련된 메시지들에 대한 연관된 메시지 스트림을 가질 수 있다.
일부 전자 트레이딩 시스템들에서는, 메시지들이 드물게 송신될 수 있다. 메시지들은 예를 들어, 주문들과 같이, 감시되고 있는 객체들과 관련될 수 있다. 예를 들어, 주문의 상태에 대한 정보는 그 주문의 상태에 있어서 변경이 있을 때에만 송신될 수 있다. 주문에 대한 상태 변경들은 예를 들어, 체결(fill)들, 부분적인 체결들, 주문 가격에 있어서의 변경, 또는 취소되고 있는 주문을 포함할 수 있다. 주문이 예를 들어, 마켓으로부터 계속되고 있는 경우, 그 상태는 1시간 또는 더 많은 시간 동안에 변경되지 않을 수 있다. 어떤 경우에는, 주문이 트리거링된(triggered) 주문들과 같이, 마켓에서 현재 작동하지 않는 주문일 수 있고, 상태는 수시간 또는 수일 동안에 변경되지 않을 수도 있다. 이러한 트리거링된 주문들은 예를 들어, 유지(hold), 취소시까지 유효("GTC : good till canceled"), 지정일까지 유효("GTD : good till date"), 리미트-이프-터치드(limit-if-touched), 마켓-이프-터치드(market-if-touched), 리미트-온-클로즈(limit-on-close), 마켓-온-클로즈(market-on-close), 리미트-온-오픈(limit-on-open), 및 마켓-온-오픈(market-on-open) 주문들을 포함할 수 있다. "GTC" 주문들은 취소 또는 실행될 때까지 활성 설정 가격을 보유한다. "GTD" 주문들은 설정일까지 활성을 유지한다. 체결된 주문들은 또한 마켓에서 현재 작동되지 않는다.
또 다른 예로서, 서버가 액세스 가능한지 또는 액세스 불가능한지 여부와, 거래소로의 접속이 액세스 가능한지 또는 액세스 불가능한지 여부와 같이, 서버-관련 상태 변경들에 대한 정보는 드물게 송신될 수 있다. 또 다른 예로서, 뉴스 메시지들과 같은 비-주문 관련 메시지들은 드물게 송신될 수 있다. 또 다른 예로서, 파일 및 초기 주문 대장 다운로드들은 기동시 및 손실된 메시지들이 추후에 검출될 때와 같이, 드물게 발생할 수 있다. 단일 트레이더는 많은 수의 주문들을 반드시 행하지 않을 수 있지만, 주문 대장이 다수의 사용자들에 의해 조합하여 공유될 경우, 많은 수의 주문들 또는 공유된 주문 대장에 관련된 다른 유형들의 상태는 드물게 송신된 정보를 가질 수 있다. 예를 들어, 리스크 매니저(risk manager)와 같은 관리자는 모든 트레이더의 주문 대장들에 액세스할 수 있다. 또 다른 예로서, 특별한 회사의 모든 트레이더들은 거래소에서 동일한 계정 상에서 트레이드하기 때문에 주문 대장을 공유할 수 있다. 공유된 주문 대장들을 갖는 경우에는, 주문 대장을 공유하는 각각의 수신자가 주문 대장과 관련된 메시지들을 수신할 가능성이 있다.
도 8은 특정한 실시예들이 채용될 수 있는 전자 트레이딩 시스템(800)의 블록도를 예시한다. 시스템(800)은 트레이딩 장치(810), 게이트웨이(820), 및 전자 거래소(830)를 포함한다. 트레이딩 장치(810)는 게이트웨이(820)와 통신하고 있다. 게이트웨이(820)는 거래소(830)와 통신하고 있다.
여기에서 이용된 바와 같이, 어구 "통신하고 있는"은 직접 통신과, 하나 또는 그보다 많은 중간 구성요소들을 통한 간접 통신을 포함할 수 있다.
동작 시에, 트레이딩 장치(810)는 거래소(830)에서 트레이딩가능한 객체들을 매수 또는 매도하기 위한 주문들을 송신할 수 있다. 예를 들어, 사용자는 주문들을 송신하기 위하여 트레이딩 장치(810)를 사용할 수 있다. 주문들은 게이트웨이(820)를 통해 거래소(830)에 송신된다. 또한, 마켓 데이터는 거래소(830)로부터 게이트웨이(820)를 통해 트레이딩 장치(810)에 송신된다. 또한, 사용자는 마켓 데이터를 감시하고 및/또는 트레이딩가능한 객체에 대한 주문을 송신하기 위한 판정을 마켓 데이터에 기반으로 하기 위하여 트레이딩 장치(810)를 사용할 수 있다.
트레이딩가능한 객체는 수량 및/또는 가격으로 트레이딩될 수 있는 임의의 것이다. 예를 들어, 주식(stock)들, 옵션(option)들, 채권(bond)들, 선물(future)들, 통화(currency), 워런트(warrant)들, 펀드(fund)들, 파생상품(derivative)들, 담보(security)들, 원자재(commodity)들, 스왑(swap)들, 이자율 상품(interest rate product)들, 인덱스 기반 상품들, 트레이딩된 이벤트들, 재화(goods), 및 수집품(collection)들 및/또는 이들의 조합들을 포함하는 금융 상품들이 트레이딩가능한 객체들일 수 있다. 트레이딩가능한 객체는 "리얼(real)" 또는 "합성(synthetic)"일 수 있다. 리얼 트레이딩가능한 객체는 거래소에 의해 열거 및/또는 운영되는 상품들을 포함한다. 합성 트레이딩가능한 객체는 사용자에 의해 정의되는 상품들을 포함한다. 예를 들어, 합성 트레이딩가능한 객체는 트레이딩 장치(810)를 사용하는 사용자에 의해 생성되는 합성 스프레드(synthetic spread)와 같은 리얼(또는 다른 합성) 상품들의 조합을 포함할 수 있다. 합성 트레이딩 객체에 대응하고 및/또는 이와 유사한 리얼 트레이딩가능한 객체가 있을 수 있다.
트레이딩 장치(810)는 예를 들어, 핸드-헬드 장치(hand-held device), 랩톱(laptop), 데스크톱(desktop) 컴퓨터, 단일 또는 멀티-코어 프로세서를 갖는 워크스테이션(workstation), 다수의 프로세서들을 갖는 서버, 및/또는 컴퓨터들의 클러스터(cluster)와 같은 하나 또는 그보다 많은 전자 컴퓨팅 플랫폼들을 포함할 수 있다. 예를 들어, 단일 장치로서 논리적으로 표현되어 있지만, 트레이딩 장치(810)는 서버와 통신하는 트레이딩 단말을 포함할 수 있고, 트레이딩 단말 및 서버는 집합적으로 트레이딩 장치(810)이다. 트레이딩 단말은 트레이딩 화면을 사용자에게 제공할 수 있고, 주문을 행하는 것과 같이, 트레이딩 화면을 통한 사용자의 입력들의 추가적인 처리를 위하여 명령들을 서버에 통신할 수 있다.
트레이딩 장치(810)는 사용자에 의해 일반적으로 소유되고, 동작되고, 제어되고, 프로그래밍되고, 구성되고, 또는 그렇지 않을 경우에는 이용된다. 여기에서 이용된 바와 같이, 어구 "사용자"는 인간(예를 들어, 트레이더) 또는 전자 트레이딩 장치(예를 들어, 알고리즘 트레이딩 시스템)를 포함할 수 있지만, 이것으로 제한되지 않는다. 하나 또는 그보다 많은 사용자들은 예를 들어, 소유권, 동작, 제어, 프로그래밍, 구성, 또는 다른 이용에 관여될 수 있다.
트레이딩 장치(810)는 하나 또는 그보다 많은 트레이딩 애플리케이션들을 포함할 수 있다. 트레이딩 애플리케이션(들)은 예를 들어, 트레이딩 및 차트작성(charting) 윈도우들에 마켓 데이터를 배치 및 디스플레이함으로써 마켓 데이터를 처리할 수 있다. 마켓 데이터는 예를 들어, 거래소(830)로부터 수신될 수 있다. 또 다른 예로서, 마켓 데이터는 이력 데이터를 제공하고 및/또는 교환을 시뮬레이팅하지만 실세계(real-world) 트레이드들을 유발하지 않는 시뮬레이션 환경으로부터 수신될 수 있다. 이 처리는 예를 들어, 사용자 선호도(user preference)들에 기반으로 할 수 있다. 트레이딩 애플리케이션(들)은 예를 들어, 자동화된 스프레드 트레이딩 도구와 같은 자동화된 트레이딩 도구를 포함할 수 있다. 하나 또는 그보다 많은 트레이딩 애플리케이션들은 트레이딩 장치(810)의 컴퓨팅 장치들 중의 하나 또는 그보다 많은 것에 걸쳐 분산될 수 있다. 예를 들어, 트레이딩 애플리케이션의 특정한 구성요소들은 트레이딩 워크스테이션 상에서 실행될 수 있고, 트레이딩 애플리케이션의 다른 구성요소들은 워크스테이션과 통신하는 서버 상에서 실행될 수 있다.
트레이딩 장치(810)는 예를 들어, 전자 트레이딩 워크스테이션, 휴대용 트레이딩 장치, "블랙 박스(black box)" 또는 "그레이 박스(grey box)" 시스템과 같은 알고리즘 트레이딩 시스템, 내장된 트레이딩 시스템, 및/또는 자동화된 트레이딩 도구를 포함할 수 있다. 예를 들어, 트레이딩 장치(810)는 일리노이, 시카고의 Trading Technologies International, Inc.에 의해 제공되는 전자 트레이딩 플랫폼인, X_TRADER®의 복사본을 실행하는 컴퓨팅 시스템일 수 있다. 또 다른 예로서, 트레이딩 장치(810)는 Trading Technologies International, Inc.에 의해 또한 제공되는 Autospreader® 및/또는 Autotrader™과 같은 자동화된 트레이딩 도구를 실행하는 컴퓨팅 장치일 수 있다.
또 다른 예로서, 트레이딩 장치(810)는 트레이딩 애플리케이션을 포함할 수 있고, 이 트레이딩 애플리케이션은 마켓 데이터를 알고리즘으로 처리하고 알고리즘 처리에 기반으로 하여 주문들을 수동으로 행하거나 자동으로 행해진 주문들을 조작하기 위한 사용자 인터페이스를 포함한다. 알고리즘 트레이딩 애플리케이션은 특정한 작업들을 수행하기 위하여 자동으로 처리되는 알고리즘을 포함하는 트레이딩 애플리케이션이다. 즉, 트레이딩 애플리케이션은 정의된 작업(들)을 수행하기 위한 자동화된 일련의 명령어들을 포함한다. 작업들은 예를 들어, 특별한 방식으로 마켓 데이터를 처리하는 것, 주문을 행하는 것, 기존의 주문을 수정하는 것, 주문을 삭제하는 것, 주문을 행하는 것을 억제하는 것, 어느 트레이딩가능한 객체(들)에 작용할 것인지를 선택하는 것, 주문을 행하거나 수정하기 위한 가격을 결정하는 것, 주문을 행하거나 주문을 수정하기 위한 수량을 결정하는 것, 주문이 매수 또는 매도해야 하는 것인지를 결정하는 것, 및 시간 기간 동안에 작업을 지연시키는 것을 포함할 수 있다.
여기에서 이용된 바와 같이, 알고리즘(트레이딩 알고리즘으로도 지칭됨)은 트레이딩 시에 이용될 알고리즘을 설명하는 논리 표현들 및 파라미터들을 포함하는 정의에 의해 명시된다. 논리 표현들은 파라미터들 사이의 관계를 명시하고 더 많은 파라미터들을 발생시킬 수 있다. 파라미터들은 예를 들어, 알고리즘의 논리 표현들로의 입력들을 포함할 수 있다. 알고리즘의 정의는 적어도 부분적으로 알고리즘 트레이딩 애플리케이션에 의해 명시될 수 있다. 예를 들어, 알고리즘 트레이딩 애플리케이션은 사용자가 미리 정의된 논리 표현들에 의해 이용될 파라미터들을 명시하기만 하도록 할 수 있다. 또 다른 예로서, 알고리즘 트레이딩 애플리케이션은 사용자가 논리 표현들의 일부 또는 전부와, 파라미터들의 일부 또는 전부를 명시하도록 할 수 있다. 논리 표현들이 사용자에 의해 명시되어 있는 트레이딩 알고리즘은 사용자-정의된 트레이딩 알고리즘이다.
트레이딩 애플리케이션들은 트레이딩 장치(810)의 컴퓨터 판독가능한 매체에 저장될 수 있다. 특정한 실시예들에서는, 트레이딩 애플리케이션의 하나 또는 그보다 많은 구성요소들이 트레이딩 워크스테이션 상에 저장될 수 있고, 트레이딩 애플리케이션의 다른 구성요소들은 워크스테이션과 통신하는 서버 상에 저장될 수 있다. 특정한 실시예들에서는, 트레이딩 애플리케이션의 하나 또는 그보다 많은 구성요소들이 또 다른 컴퓨터 판독가능한 매체로부터 트레이딩 장치(810)의 컴퓨터 판독가능한 매체로 로딩될 수 있다. 예를 들어, 트레이딩 애플리케이션(또는 트레이딩 애플리케이션에 대한 업데이트들)은 제조자(manufacturer), 개발자(developer), 또는 발행인(publisher)에 의해 하나 또는 그보다 많은 CD들 또는 DVD들 상에 저장될 수 있고, 그 다음으로, 이 CD들 또는 DVD들은 애플리케이션을 트레이딩 장치(810) 상으로 로딩하는 것을 담당하는 누군가에게 또는 트레이딩 장치(810)가 트레이딩 애플리케이션을 검색하는 서버에 제공된다. 또 다른 예로서, 트레이딩 장치(810)는 예를 들어, 인터넷 또는 내부 네트워크를 통해 서버로부터 트레이딩 애플리케이션(또는 트레이딩 애플리케이션에 대한 업데이트들)을 수신할 수 있다. 트레이딩 장치(810)는 트레이딩 장치(810)에 의해 요청될 때("풀 배포(pull distribution)") 및/또는 트레이딩 장치(810)에 의해 요청되지 않을 때("푸쉬 배포(push distribution)") 트레이딩 애플리케이션 또는 업데이트들을 수신할 수 있다.
트레이딩 장치(810)는 트레이딩가능한 객체에 대한 주문들을 송신하도록 구비된다. 주문들은 예를 들어, 하나 또는 그보다 많은 메시지들 또는 데이터 패킷들로 또는 공유된 메모리 시스템을 통해 송신될 수 있다. 또한, 트레이딩 장치(810)는 예를 들어, 주문들을 취소하고, 주문들을 변경하고, 및/또는 교환을 문의하도록 구비될 수 있다. 또 다른 예로서, 트레이딩 장치(810)는 실세계 트레이드들을 유발하지 않는 시뮬레이션 환경에서 시뮬레이팅된 교환에 대한 주문들을 송신하도록 구비될 수 있다.
트레이딩 장치(810)에 의해 송신된 주문들은 예를 들어, 사용자의 요청 시에 또는 자동으로 송신될 수 있다. 예를 들어, 트레이더는 특별한 트레이딩가능한 객체에 대해 주문을 행하기 위하여 전자 트레이딩 워크스테이션을 사용할 수 있고, 주문 가격 및/또는 수량과 같은, 주문에 대한 하나 또는 그보다 많은 파라미터들을 수동으로 제공할 수 있다. 또 다른 예로서, 자동화된 트레이딩 도구는 주문에 대한 하나 또는 그보다 많은 파라미터들을 계산할 수 있고 주문으로 자동으로 송신할 수 있다. 일부 사례들에서, 자동화된 트레이딩 도구는 송신될 것이지만 사용자로부터의 확인 없이는 실제로 송신하지 않는 주문을 준비할 수 있다.
특정한 실시예들에서는, 트레이딩 장치(810)가 사용자 인터페이스를 포함한다. 사용자 인터페이스는 예를 들어, 트레이딩 애플리케이션의 텍스트-기반 및/또는 그래픽 인터페이스를 사용자에게 제시하기 위한 하나 또는 그보다 많은 디스플레이 장치들을 포함할 수 있다. 예를 들어, 디스플레이 장치들은 컴퓨터 모니터들, 핸드-헬드 장치 디스플레이들, 프로젝터들, 및/또는 텔레비전들을 포함할 수 있다. 사용자 인터페이스는 트레이딩 애플리케이션을 이용하여 주문에 대한 파라미터들을 명시하거나 검토하기 위해 이용될 수 있다. 사용자 인터페이스는 예를 들어, 입력을 수신하기 위한 하나 또는 그보다 많은 입력 장치들을 포함할 수 있다. 예를 들어, 입력 장치들은 키보드, 트랙볼(trackball), 2-버튼 또는 3-버튼 마우스, 및/또는 터치 스크린을 포함할 수 있다. 사용자 인터페이스는 사용자와 인터페이스하기 위한 다른 장치들을 포함할 수 있다. 예를 들어, 스피커를 통해 사용자에게 청각적으로 제공될 수 있고 및/또는 마이크로폰(microphone)을 통해 수신될 수 있다.
특정한 실시예들에서는, 트레이딩 애플리케이션이 사용자가 하나 또는 그보다 많은 마켓들과 상호작용하는 것을 가능하게 하기 위한 하나 또는 그보다 많은 트레이딩 스크린들을 포함한다. 트레이딩 스크린들은 예를 들어, 사용자들이 마켓 정보를 획득 및 시청하고, 주문 입력 파라미터들을 설정하고, 주문들을 입력 및 취소하고, 및/또는 다양한 트레이딩 전략들을 이행하면서 포지션(position)들을 감시하는 것을 가능하게 할 수 있다. 예를 들어, 트레이딩 애플리케이션은 거래소(830)로부터 (비드(bid) 가격들, 비드 수량들, 요구(ask) 가격들, 요구 수량들, 과거의 판매들을 위한 가격들 및 수량들, 및/또는 다른 마켓 관련 정보와 같은) 정보를 수신할 수 있고, 이들 중의 일부 또는 전부는 결국, 트레이딩 장치(810)의 사용자 인터페이스로 디스플레이될 수 있다. 수신된 정보에 기반으로 하여, 트레이딩 스크린은 트레이딩가능한 객체들에 관하여 가격 레벨들의 범위와, 가격 레벨들에 대한 대응하는 비드 및 요구 수량들을 디스플레이할 수 있다. 사용자에게 관련 트레이딩 정보를 제공하기 위하여, 트레이딩 스크린은 내부 마켓(inside market) 주위의 가격들(및 대응하는 비드 및 요구 수량들)의 범위를 디스플레이할 수 있다. 정보는 연속적으로 또는 규칙적으로 트레이딩 애플리케이션에 제공될 수 있고, 이것은 트레이딩 애플리케이션이 현재의 마켓 정보로 트레이딩 스크린을 업데이트하도록 한다. 사용자는 예를 들어, 트레이딩가능한 객체들에 대한 매수 및 매도 주문들을 행하거나 그렇지 않을 경우에는 디스플레이된 정보에 기반으로 하여 트레이딩가능한 객체들을 트레이드하기 위하여 트레이딩 스크린을 이용할 수 있다.
트레이딩 스크린들은 하나 또는 그보다 많은 트레이딩 도구들을 디스플레이할 수 있다. 트레이딩 도구들은 전자 트레이딩을 가능하게 하고, 이를 보조하고, 및/또는 이를 용이하게 하는 전자 도구들이다. 예시적인 트레이딩 도구들은 차트들, 트레이딩 래더(trading ladder)들, 주문 입력 도구들, 자동화된 트레이딩 도구들, 자동화된 스프레딩 도구들, 리스크 관리 도구들, 주문 파라미터 도구들, 주문 입력 시스템들, 마켓 그리드(market grid)들, 체결 윈도우들, 및 마켓 주문 윈도우들, 그 조합들, 트레이딩, 트레이드 준비, 트레이드들을 관리, 또는 마켓 분석을 위해 이용되는 다른 전자 도구들을 포함하지만, 이것으로 제한되지 않는다.
특정한 실시예들에서는, 트레이딩 장치(810)로부터의 주문들은 게이트웨이(820)를 통해 거래소(830)로 송신된다. 트레이딩 장치(810)는 예를 들어, 로컬 영역 네트워크, 광역 네트워크, 무선 네트워크, 가상 사설 네트워크, T1 라인, T3 라인, 통합 서비스 디지털 네트워크("ISDN") 라인, 상호접속위치(point-of-presence), 인터넷, 및/또는 공유된 메모리 시스템을 이용하여 게이트웨이(820)와 통신할 수 있다.
게이트웨이(820)는 트레이딩 장치(810) 및 거래소(830)와 통신하도록 구비된다. 게이트웨이(820)는 트레이딩 장치(810) 및 거래소(830) 사이의 통신을 용이하게 한다. 예를 들어, 게이트웨이(820)는 트레이딩 장치(810)로부터 주문들을 수신할 수 있고 주문들을 거래소(830)에 전송할 수 있다. 또 다른 예로서, 게이트웨이(820)는 거래소(830)로부터 마켓 데이터를 수신할 수 있고, 마켓 데이터를 트레이딩 장치(810)에 전송할 수 있다.
특정한 실시예들에서는, 게이트웨이(820)가 트레이딩 장치(810)와 거래소(830) 사이에서 통신되는 데이터에 대한 처리를 수행한다. 예를 들어, 게이트웨이(820)는 트레이딩 장치(810)로부터 수신된 주문을 거래소(830)에 의해 이행되는 데이터 포맷으로 처리할 수 있다. 유사하게, 게이트웨이(820)는 거래소(830)로부터 수신된 거래소-특정 포맷의 마켓 데이터를 트레이딩 장치(810)에 의해 이해되는 포맷으로 변환할 수 있다. 게이트웨이(820)의 처리는 예를 들어, 트레이딩 장치(810)로부터 주문들을 추적하는 것과, 거래소(830)로부터 수신된 체결 확인들에 기반으로 하여 주문의 상태를 업데이트하는 것을 포함할 수도 있다. 또 다른 예로서, 게이트웨이(820)는 거래소(830)로부터 마켓 데이터를 합병할 수 있고 그것을 트레이딩 장치(810)에 제공할 수 있다.
특정한 실시예들에서는, 게이트웨이(820)가 트레이딩 장치(810)와 거래소(830) 사이에서 통신되는 처리 데이터 이외의 서비스들을 제공한다. 예를 들어, 게이트웨이(820)는 리스크 처리를 제공할 수 있다.
게이트웨이(820)는 예를 들어, 핸드-헬드 장치, 랩톱, 데스크톱 컴퓨터, 단일 또는 멀티-코어 프로세서를 갖는 워크스테이션, 다수의 프로세서들을 갖는 서버, 및/또는 컴퓨터들의 클러스터들과 같은 하나 또는 그보다 많은 전자 컴퓨팅 플랫폼들을 포함할 수 있다.
게이트웨이(820)는 하나 또는 그보다 많은 게이트웨이 애플리케이션들을 포함할 수 있다. 게이트웨이 애플리케이션(들)은 예를 들어, 주문 처리 및 마켓 데이터 처리를 다룰 수 있다. 이 처리는 예를 들어, 사용자 선호도들에 기반으로 할 수 있다.
특정한 실시예들에서는, 게이트웨이(820)가 예를 들어, 로컬 영역 네트워크, 광역 네트워크, 가상 사설 네트워크, T1 라인, T3 라인, ISDN 라인, 상호접속위치, 인터넷, 및/또는 공유된 메모리 시스템을 이용하여 거래소(830)와 통신한다.
일반적으로, 거래소(830)는 거래소 기관(exchange entity)에 의해 소유, 동작, 제어, 또는 이용될 수 있다. 예시적인 거래소 기관들은 CME 그룹, 런던 국제 금융 선물옵션 거래소("LIFFE : London International Financial Futures and Options Exchange"), 대륙간거래소("ICE : IntercontinentalExchange"), 및 유렉스(Eurex)를 포함한다. 거래소(830)는 거래소에 의해 트레이딩을 위해 제공되는 예를 들어, 트레이딩가능한 객체들이 매수 및 매도되도록 구비되는 컴퓨터, 서버, 또는 다른 컴퓨팅 장치와 같은 전자 정합 시스템(electronic matching system)을 포함할 수 있다. 전자 정합 시스템은 예를 들어, 정합 엔진을 포함할 수 있다. 거래소(830)는 별도의 기관들을 포함할 수 있고, 예를 들어, 그 일부는 트레이딩가능한 객체들을 열거 및/또는 운영하고, 다른 것들은 주문들을 수신하고 정합한다. 거래소(830)는 예를 들어, 전자 통신 네트워크("ECN : electronic communication network")를 포함할 수 있다.
거래소(830)는 트레이딩가능한 객체들을 매수 및 매도하기 위하여 주문들을 정합하도록 구비된다. 트레이딩가능한 객체들은 거래소(830)에 의한 트레이딩을 위해 열거될 수 있다. 주문들은 예를 들어, 트레이딩 장치(810)로부터 수신된 주문들을 포함할 수 있다. 주문들은 예를 들어, 게이트웨이(820)를 통해 트레이딩 장치(810)로부터 수신될 수 있다. 또한, 주문들은 거래소(830)와 통신하는 다른 장치들로부터 수신될 수 있다. 즉, 전형적으로 거래소(830)는 정합될 주문들을 또한 제공하는 다양한 다른 트레이딩 장치들(트레이딩 장치(810)와 유사할 수 있음)과 통신할 것이다.
거래소(830)는 마켓 데이터를 제공하도록 구비된다. 마켓 데이터는 예를 들어, 공유된 메모리 시스템을 통해 하나 또는 그보다 많은 메시지들 또는 데이터 패킷들로 제공될 수 있다. 마켓 데이터는 예를 들어, 트레이딩 장치(810)에 제공될 수 있다. 마켓 데이터는 예를 들어, 게이트웨이(820)를 통해 트레이딩 장치(810)에 제공될 수 있다. 마켓 데이터는 예를 들어, 내부 마켓을 나타내는 데이터를 포함할 수 있다. 내부 마켓은 (내부 마켓이 시간에 걸쳐 변동될 수 있기 때문에) 특별한 시점의 최저 매도 가격("최적 요구(best ask)"라고도 지칭됨) 및 최고 매수 가격("최적 비드(best bid)"라고도 지칭됨)이다. 마켓 데이터는 마켓 깊이를 포함할 수도 있다. 마켓 깊이는 내부 마켓에서 이용가능한 수량들을 지칭하고, 내부 마켓으로부터 떨어진 다른 가격들에서 이용가능한 수량들을 지칭할 수도 있다. 따라서, 내부 마켓은 마켓 깊이의 제 1 레벨로 간주될 수 있다. 내부 마켓으로부터 떨어진 하나의 틱(tick)은 예를 들어, 마켓 깊이의 제 2 레벨로 간주될 수 있다. 특정한 실시예들에서는, 마켓 깊이가 모든 가격 레벨들에 대해 제공된다. 특정한 실시예들에서는, 마켓 깊이가 모든 가격 레벨들 미만에 대해 제공된다. 예를 들어, 마켓 깊이는 내부 마켓의 양쪽의 제 1 의 5개의 가격 레벨들에 대해서만 제공될 수 있다. 또 다른 예로서, 마켓 깊이는 마켓에서 수량이 이용가능한 제 1 의 10개의 가격 레벨들에 대해 제공될 수 있다. 마켓 데이터는 최종 트레이딩된 가격(LTP : last traded price), 최종 트레이딩된 수량(LTQ : last traded quantity), 및 주문 체결 정보와 같은 정보를 포함할 수도 있다.
특정한 실시예들에서는, 시스템(800)이 하나를 초과하는 트레이딩 장치(810)를 포함한다. 예를 들어, 위에서 논의된 트레이딩 장치(810)와 유사한 다수의 트레이딩 장치들은 주문들을 거래소(830)에 송신하기 위하여 게이트웨이(820)와 통신할 수 있다.
특정한 실시예들에서는, 시스템(800)이 하나를 초과하는 게이트웨이(820)를 포함한다. 예를 들어, 위에서 논의된 게이트웨이(820)와 유사한 다수의 게이트웨이들은 트레이딩 장치(810) 및 거래소(830)와 통신할 수 있다. 이러한 배치는 예를 들어, 하나의 게이트웨이(820)이 불량일 경우에 중복성(redundancy)을 제공하기 위해 이용될 수 있다.
특정한 실시예들에서는, 시스템(800)이 하나를 초과하는 거래소(830)를 포함한다. 예를 들어, 게이트웨이(820)는 위에서 논의된 거래소(830)와 유사한 다수의 거래소들과 통신할 수 있다. 이러한 배치는 예를 들어, 트레이딩 장치(810)가 게이트웨이(820)를 통해 하나를 초과하는 거래소에서 트레이딩하도록 할 수 있다.
특정한 실시예들에서는, 시스템(800)이 하나를 초과하는 거래소(830) 및 하나를 초과하는 게이트웨이(820)를 포함한다. 예를 들어, 위에서 논의된 게이트웨이(820)와 유사한 다수의 게이트웨이들은 위에서 논의된 거래소(830)와 유사한 다수의 거래소들과 통신할 수 있다. 각각의 게이트웨이는 예를 들어, 하나 또는 그보다 많은 상이한 거래소들과 통신할 수 있다. 이러한 배치는 예를 들어, 하나 또는 그보다 많은 트레이딩 장치들(810)이 하나를 초과하는 거래소에서 트레이딩하도록(및/또는 다수의 거래소들에 중복 접속들을 제공하도록) 할 수 있다.
특정한 실시예들에서는, 트레이딩 장치(810)가 하나 또는 그보다 많은 컴퓨팅 장치들 또는 처리 구성요소들을 포함한다. 다시 말해서, 트레이딩 장치(810)의 기능성(functionality)은 하나를 초과하는 컴퓨팅 장치에 의해 수행될 수 있다. 예를 들어, 하나의 컴퓨팅 장치는 거래소(830)에 송신될 주문들을 발생할 수 있는 반면, 또 다른 컴퓨팅 장치는 사용자에게 그래픽 사용자 인터페이스를 제공할 수 있다. 특정한 실시예들에서는, 게이트웨이(820)가 하나 또는 그보다 많은 컴퓨팅 장치들 또는 처리 구성요소들을 포함한다. 다시 말해서, 게이트웨이(820)의 기능성은 하나를 초과하는 컴퓨팅 장치에 의해 수행될 수 있다. 특정한 실시예들에서는, 거래소(830)가 하나 또는 그보다 많은 컴퓨팅 장치들 또는 처리 구성요소들을 포함한다. 다시 말해서, 거래소(830)의 기능성은 하나를 초과하는 컴퓨팅 장치에 의해 수행될 수 있다.
특정한 실시예들에서는, 게이트웨이(820)가 트레이딩 장치(810)의 일부이다. 예를 들어, 게이트웨이(820)의 구성요소들은 트레이딩 장치(810)와 동일한 컴퓨팅 플랫폼의 일부일 수 있다. 또 다른 예로서, 게이트웨이(820)의 기능성은 트레이딩 장치(810)의 구성요소들에 의해 수행될 수 있다. 특정한 실시예들에서는, 게이트웨이(820)가 존재하지 않는다. 이러한 배치는 트레이딩 장치(810)가 예를 들어, 거래소(830)와 통신하기 위하여 게이트웨이(820)를 사용할 필요가 없을 때에 발생할 수 있다. 예를 들어, 트레이딩 장치(810)가 거래소(830)와 직접 통신하도록 구비되었을 경우이다.
특정한 실시예들에서는, 게이트웨이(820)가 트레이딩 장치(810)와 동일한 장소에 물리적으로 위치되어 있다. 특정한 실시예들에서는, 게이트웨이(820)는 거래소(830)와 동일한 장소에 물리적으로 위치되어 있다. 특정한 실시예들에서는, 트레이딩 장치(810)가 거래소(830)와 동일한 장소에 물리적으로 위치되어 있다. 특정한 실시예들에서는, 게이트웨이(820)가 트레이딩 장치(810) 및 거래소(830)의 둘 모두로부터 분리된 장소에 물리적으로 위치되어 있다.
특정한 실시예들에서는, 시스템(800)이 미들웨어(middleware), 방화벽(firewall)들, 허브(hub)들, 스위치들, 라우터들, 거래소-특정 통신 장비, 모뎀들, 보안 관리자들, 및/또는 암호화/복호화 장치들과 같은 통신 아키텍처에 특정되어 있는 다른 장치들을 포함할 수 있다.
도 9는 도 8의 전자 트레이딩 시스템(800)의 예시적인 구현예(900)를 예시한다. 시스템(900)은 트레이딩 장치들(810a-810e), 게이트웨이(820), 전자 거래소(830), 제 1 WAN 라우터(940), 제 2 WAN 라우터(950), 및 WAN 링크(960)를 포함한다. 트레이딩 장치들(810a 및 810b)은 게이트웨이(820)와 통신한다. 게이트웨이(820)는 거래소(830)와 통신한다. 트레이딩 장치들(810c-810e)은 WAN 라우터(940) 및 WAN 라우터(950)를 이용하여 게이트웨이(820)와 통신한다.
동작 시에, 트레이딩 장치들(810a-810e)은 거래소(830)에서 트레이딩가능한 객체들을 매수 또는 매도하기 위하여 주문들을 송신할 수 있다. 예를 들어, 사용자는 주문들을 송신하기 위하여 트레이딩 장치들(810a-810e)을 사용할 수 있다. 주문들은 트레이딩 장치들(810a 및 810b)로부터 게이트웨이(820)를 통해 거래소(830)에 송신된다. 주문들은 트레이딩 장치들(810c-810e)로부터 WAN 라우터들(950 및 940)을 통해 게이트웨이(820)에, 그리고 게이트웨이(820)를 통해 거래소(830)에 송신된다. 또한, 마켓 데이터는 거래소(830)로부터 게이트웨이(820)를 통해 트레이딩 장치들(810a 및 810b) 및 WAN 라우터(940)에 송신된다. 마켓 데이터는 WAN 라우터(940)로부터 WAN 라우터(950)에, 그리고 다음으로, WAN 라우터(950)로부터 트레이딩 장치들(810c-810e)에 송신된다.
전자 트레이딩 시스템(800)의 예시적인 구현예(900)에서는, 예를 들어, WAN 라우터(940)에서 메시지 지연 및/또는 손실이 발생할 수 있다. 메시지 지연 및/또는 손실은 예를 들어, WAN 라우터(940)가 메시지를 누락하는 것으로 인해, 또는 WAN 라우터(940), WAN 라우터(950), 및/또는 WAN 링크(960)의 불량으로 인한 것일 수 있다. 예를 들어, WAN 라우터(940)는 메모리 또는 처리 용량의 부족과 같은 제한된 자원들로 인해, 및/또는 WAN 링크(960)에 걸쳐 메시지들을 전송함에 있어서의 지연들로 인해 메시지를 누락할 수 있다. 또 다른 예로서, WAN 라우터(940) 및/또는 WAN 라우터(950)는 전력 손실 또는 하드웨어 불량으로 인해 고장일 수도 있다. 또 다른 예로서, WAN 링크(960)는 절단된 케이블 또는 하드웨어 불량으로 인해 고장일 수도 있다.
위에서 논의된 다양한 기술들 및 실시예들은 전자 트레이딩 시스템에서 채용될 수 있다. 예를 들어, 도 8의 예시적인 전자 트레이딩 시스템(800)은 도 2c와 관련하여 설명된 예시적인 방법을 구현할 수 있다. 예시적인 방법은 도 8의 게이트웨이(820)로부터 트레이딩 장치(810)에 송신된 메시지들에 시퀀스 번호들을 배정한다. 예시적인 방법에 의해 데이터 및 하트비트 메시지들에 시퀀스 번호들을 배정하는 것은 도 8의 트레이딩 장치(810)가 데이터 메시지가 손실되고 추후의 메시지가 수신되는 시간 내에 손실된 메시지를 검출하도록 한다.
또 다른 예로서, 도 8의 예시적인 전자 트레이딩 시스템(800)은 도 2d와 관련하여 설명된 예시적인 방법을 구현할 수 있다. 도 8의 트레이딩 장치(810)는 게이트웨이(820)로부터 메시지들을 수신한다. 트레이딩 장치(810)는 게이트웨이(820)로부터 송신될 메시지들에 대한 예상된 시퀀스 번호들을 결정한다. 트레이딩 장치(810)는 데이터 메시지가 손실되었는지를 결정하기 위하여 수신된 메시지들의 시퀀스 번호들을 예상된 시퀀스 번호들과 비교한다.
또 다른 예로서, 도 8의 예시적인 전자 트레이딩 시스템(800)은 도 4와 관련하여 설명된 예시적인 방법을 구현할 수 있다. 예시적인 방법은 도 8의 게이트웨이(820)에 의해 트레이딩 장치(810)에 송신된 메시지들에 시퀀스 번호들 및 위상 번호들을 배정한다. 예시적인 방법에 의해 시퀀스 번호들 및 위상 번호들을 메시지 시퀀스들에 배정하는 것은 도 8의 트레이딩 장치(810)가 손실된 메시지 시퀀스를 검출하도록 한다. 또한, 예시적인 방법은 게이트웨이(820)가 완전한 메시지 시퀀스를 송신한 후에 메시지 스트림 상태를 클리어링하도록 한다.
또 다른 예로서, 도 8의 예시적인 전자 트레이딩 시스템(800)은 도 5와 관련하여 설명된 예시적인 방법을 구현할 수 있다. 도 8의 트레이딩 장치(810)는 게이트웨이(820)로부터 메시지들을 수신한다. 트레이딩 장치(810)는 메시지가 손실되었는지를 결정하기 위하여, 게이트웨이(820)로부터 수신된 메시지들의 위상 번호들 및 시퀀스 번호들을 예상된 위상 번호들 및 시퀀스 번호들과 각각 비교한다. 또한, 예시적인 방법은 트레이딩 장치(810)가 완전한 메시지 시퀀스를 수신한 후에 메시지 스트림 상태를 클리어링하도록 한다.
설명된 도면들의 일부는 특정한 실시예들의 전부 또는 일부를 구현하기 위해 이용될 수 있는 방법들을 나타내는 블록도들, 시스템들, 및/또는 흐름도들을 도시한다. 예시적인 블록도들, 시스템들, 및/또는 흐름도들의 구성요소들, 소자들, 및/또는 기능성의 하나 또는 그보다 많은 것은 단독으로 또는 조합하여, 예를 들어, 하드웨어, 펌웨어, 이산 로직으로, 유형의 컴퓨터 판독가능한 매체 상에 저장된 컴퓨터 판독가능한 명령어들의 세트로서, 및/또는 그 임의의 조합들로 구현될 수 있다.
예시적인 블록도들, 시스템들, 및/또는 흐름도들은 예를 들어, 애플리케이션 특정 집적 회로(ASIC : application specific integrated circuit)들, 프로그래밍가능한 로직 장치(PLD : programmable logic device)들, 필드 프로그래밍가능한 로직 장치(FPLD : field programmable logic device)들, 이산 로직, 하드웨어, 및/또는 펌웨어의 임의의 조합을 이용하여 구현될 수 있다. 또한, 예시적인 방법들의 일부 또는 전부는 예를 들어, 수동으로 또는 상기한 기술들과 조합하여 구현될 수 있다.
예시적인 블록도들, 시스템들, 및/또는 흐름도들은 예를 들어, 하나 또는 그보다 많은 프로세서들, 제어기들, 및/또는 다른 처리 장치들을 이용하여 수행될 수 있다. 예를 들어, 상기 예들은 코딩된 명령어들, 예를 들어, 유형의 컴퓨터 판독가능한 매체 상에 저장된 컴퓨터 판독가능한 명령어들을 이용하여 구현될 수 있다. 유형의 컴퓨터 판독가능한 매체는 예를 들어, 랜덤 액세스 메모리(RAM : random access memory), 판독-전용 메모리(ROM : read-only memory), 프로그래밍가능한 판독-전용 메모리(PROM : programmable read-only memory), 전기적 프로그래밍가능한 판독-전용 메모리(EPROM : electrically programmable read-only memory), 전기적 소거가능한 판독-전용 메모리(EEPROM : electrically erasable read-only memory), 플래쉬 메모리(flash memory), 하드 디스크 드라이브, 광학 매체들, 자기 테이프, 파일 서버, 임의의 다른 유형의 데이터 저장 장치, 또는 그 임의의 조합을 포함하는 다양한 유형들의 휘발성 및 비-휘발성 저장 매체들을 포함할 수 있다. 유형의 컴퓨터 판독가능한 매체는 비-일시적(non-transitory)이다.
또한, 예시적인 블록도들, 시스템들, 및/또는 흐름도들은 도면들을 참조하여 위에서 설명되어 있지만, 다른 구현예들이 채용될 수도 있다. 예를 들어, 구성요소들, 소자들, 블록들, 및/또는 기능성의 실행 순서는 변경될 수 있고, 및/또는 설명된 구성요소들, 소자들, 블록들, 및/또는 기능성의 일부는 변경, 제거, 다시 분할, 또는 조합될 수 있다. 또한, 구성요소들, 소자들, 블록들, 및/또는 기능성의 임의의 것 또는 전부는 예를 들어, 별도의 처리 스레드(thread)들, 프로세서들, 장치들, 이산 로직, 및/또는 회로들에 의해 순차적으로 및/또는 병렬로 수행될 수 있다.
실시예들이 개시되었지만, 다양한 변경들이 행해질 수 있고 등가물들이 대체될 수 있다. 또한, 특별한 상황 또는 재료를 적응시키기 위하여 많은 수정들이 행해질 수 있다. 그러므로, 개시된 기술은 개시된 특별한 실시예들에 제한되는 것이 아니라, 첨부된 청구항들의 범위 내에 속하는 모든 실시예들을 포함할 것을 의도한 것이다.

Claims (174)

  1. 방법으로서,
    컴퓨팅 장치에 의해 제 1 데이터 메시지를 송신하는 단계 ― 상기 제 1 데이터 메시지는 미리 정의된 초기 시퀀스 번호의 값을 갖는 제 1 데이터 메시지 시퀀스 번호를 포함하고, 상기 제 1 데이터 메시지는 제 1 데이터 메시지 위상 번호를 포함함 ―;
    상기 컴퓨팅 장치에 의해, 제 1 정지 메시지를 송신하는 단계 ― 상기 제 1 정지 메시지는 정지 메시지 위상 번호를 포함하고, 상기 정지 메시지 위상 번호는 상기 제 1 데이터 메시지 위상 번호와 동일함 ―; 및
    상기 컴퓨팅 장치에 의해, 제 2 데이터 메시지를 송신하는 단계 ― 상기 제 2 데이터 메시지는 상기 제 1 정지 메시지 이후에 송신되고, 상기 제 2 데이터 메시지는 상기 미리 정의된 초기 시퀀스 번호의 값을 갖는 제 2 데이터 메시지 시퀀스 번호를 포함하고, 상기 제 2 데이터 메시지는 제 2 데이터 메시지 위상 번호를 포함하고, 상기 제 2 데이터 메시지 위상 번호는 상기 제 1 데이터 메시지 위상 번호와 상이함 ―,
    방법.
  2. 제 1 항에 있어서,
    상기 제 1 데이터 메시지는 서버의 상태와 관련된 데이터를 포함하는,
    방법.
  3. 제 2 항에 있어서,
    상기 서버는 상기 컴퓨팅 장치인,
    방법.
  4. 제 1 항에 있어서,
    상기 제 1 정지 메시지는 상기 제 1 데이터 메시지 이후에 송신되는,
    방법.
  5. 제 1 항에 있어서,
    상기 제 1 데이터 메시지는 상기 제 1 데이터 메시지가 또한 상기 제 1 정지 메시지임을 표시하는 플래그를 포함하는,
    방법.
  6. 제 1 항에 있어서,
    상기 컴퓨팅 장치에 의해, 제 1 하트비트(heartbeat) 메시지를 송신하는 단계를 더 포함하고, 상기 제 1 하트비트 메시지는 상기 제 1 데이터 메시지가 송신된 후에 제 1 시간 간격으로 송신되고, 상기 제 1 하트비트 메시지는 제 1 하트비트 메시지 위상 번호를 포함하고, 상기 제 1 하트비트 메시지 위상 번호는 상기 제 1 데이터 메시지 위상 번호와 동일한,
    방법.
  7. 제 6 항에 있어서,
    상기 제 1 하트비트 메시지는 제 1 하트비트 메시지 시퀀스 번호를 포함하고, 상기 제 1 하트비트 메시지 시퀀스 번호는 상기 제 1 데이터 메시지 시퀀스 번호와 동일한,
    방법.
  8. 제 6 항에 있어서,
    상기 제 1 하트비트 메시지는 상기 제 1 정지 메시지가 송신되기 전에 송신되는,
    방법.
  9. 제 6 항에 있어서,
    상기 제 1 하트비트 메시지는 상기 제 1 하트비트 메시지가 또한 상기 제 1 정지 메시지임을 표시하는 플래그를 포함하는,
    방법.
  10. 제 6 항에 있어서,
    상기 컴퓨팅 장치에 의해, 제 2 하트비트 메시지를 송신하는 단계를 더 포함하고, 상기 제 2 하트비트 메시지는 상기 제 1 하트비트 메시지가 송신된 후에 제 2 시간 간격으로 송신되고, 상기 제 2 하트비트 메시지는 제 2 하트비트 메시지 위상 번호를 포함하고, 상기 제 2 하트비트 메시지 위상 번호는 상기 제 1 데이터 메시지 위상 번호와 동일한,
    방법.
  11. 제 6 항에 있어서,
    상기 제 2 시간 간격은 상기 제 1 시간 간격으로부터 고정된 양만큼 증가되는,
    방법.
  12. 제 6 항에 있어서,
    상기 제 2 시간 간격은 상기 제 1 시간 간격의 배수, 상기 제 1 시간 간격의 지수 함수, 소수(prime number) 시퀀스, 및 피보나치(Fibonacci) 시퀀스 중의 하나에 따라 상기 제 1 시간 간격으로부터 증가되는,
    방법.
  13. 제 1 항에 있어서,
    상기 컴퓨팅 장치에 의해, 감시되고 있는 객체와 연관된 메시지 스트림 상태를 클리어링하는 단계를 더 포함하고, 상기 메시지 스트림 상태는 상기 정지 메시지가 송신된 후에 클리어링되고, 상기 메시지 스트림 상태는 메시지 스트림에 특별한 정보를 포함하고, 상기 메시지 스트림은 상기 감시되고 있는 객체와 관련된 메시지들에 대한 논리적 통신 채널인,
    방법.
  14. 제 13 항에 있어서,
    상기 메시지 스트림에 특별한 정보는 상기 제 1 데이터 메시지 위상 번호를 포함하는,
    방법.
  15. 제 13 항에 있어서,
    상기 메시지 스트림 상태를 클리어링하는 단계는 상기 컴퓨팅 장치의 메모리로부터 상기 메시지 스트림 상태를 할당해제하는 단계를 포함하는,
    방법.
  16. 명령어들을 포함하는 유형의(tangible) 컴퓨터 판독가능한 저장 매체로서,
    상기 명령어들은, 실행될 때, 컴퓨팅 장치가 적어도:
    제 1 데이터 메시지를 송신하고 ― 상기 제 1 데이터 메시지는 미리 정의된 초기 시퀀스 번호의 값을 갖는 제 1 데이터 메시지 시퀀스 번호를 포함하고, 상기 제 1 데이터 메시지는 제 1 데이터 메시지 위상 번호를 포함함 ―;
    제 1 정지 메시지를 송신하고 ― 상기 제 1 정지 메시지는 정지 메시지 위상 번호를 포함하고, 상기 정지 메시지 위상 번호는 상기 제 1 데이터 메시지 위상 번호와 동일함 ―;
    제 2 데이터 메시지를 송신 ― 상기 제 2 데이터 메시지는 상기 제 1 정지 메시지 이후에 송신되고, 상기 제 2 데이터 메시지는 상기 미리 정의된 초기 시퀀스 번호의 값을 갖는 제 2 데이터 메시지 시퀀스 번호를 포함하고, 상기 제 2 데이터 메시지는 제 2 데이터 메시지 위상 번호를 포함하고, 상기 제 2 데이터 메시지 위상 번호는 상기 제 1 데이터 메시지 위상 번호와 상이함 ―
    하도록 하는,
    유형의 컴퓨터 판독가능한 저장 매체.
  17. 제 16 항에 있어서,
    상기 제 1 데이터 메시지는 서버의 상태와 관련된 데이터를 포함하는,
    유형의 컴퓨터 판독가능한 저장 매체.
  18. 제 17 항에 있어서,
    상기 서버는 상기 컴퓨팅 장치인,
    유형의 컴퓨터 판독가능한 저장 매체.
  19. 제 16 항에 있어서,
    상기 제 1 정지 메시지는 상기 제 1 데이터 메시지 이후에 송신되는,
    유형의 컴퓨터 판독가능한 저장 매체.
  20. 제 16 항에 있어서,
    상기 제 1 데이터 메시지는 상기 제 1 데이터 메시지가 또한 상기 제 1 정지 메시지임을 표시하는 플래그를 포함하는,
    유형의 컴퓨터 판독가능한 저장 매체.
  21. 제 16 항에 있어서,
    실행될 때, 상기 컴퓨팅 장치가 제 1 하트비트 메시지를 송신하도록 하는 명령어들을 더 포함하고, 상기 제 1 하트비트 메시지는 상기 제 1 데이터 메시지가 송신된 후에 제 1 시간 간격으로 송신되고, 상기 제 1 하트비트 메시지는 제 1 하트비트 메시지 위상 번호를 포함하고, 상기 제 1 하트비트 메시지 위상 번호는 상기 제 1 데이터 메시지 위상 번호와 동일한,
    유형의 컴퓨터 판독가능한 저장 매체.
  22. 제 21 항에 있어서,
    상기 제 1 하트비트 메시지는 제 1 하트비트 메시지 시퀀스 번호를 포함하고, 상기 제 1 하트비트 메시지 시퀀스 번호는 상기 제 1 데이터 메시지 시퀀스 번호와 동일한,
    유형의 컴퓨터 판독가능한 저장 매체.
  23. 제 21 항에 있어서,
    상기 제 1 하트비트 메시지는 상기 제 1 정지 메시지가 송신되기 전에 송신되는,
    유형의 컴퓨터 판독가능한 저장 매체.
  24. 제 21 항에 있어서,
    상기 제 1 하트비트 메시지는 상기 제 1 하트비트 메시지가 또한 상기 제 1 정지 메시지임을 표시하는 플래그를 포함하는,
    유형의 컴퓨터 판독가능한 저장 매체.
  25. 제 21 항에 있어서,
    실행될 때, 상기 컴퓨팅 장치가 제 2 하트비트 메시지를 송신하도록 하는 명령어들을 더 포함하고, 상기 제 2 하트비트 메시지는 상기 제 1 하트비트 메시지가 송신된 후에 제 2 시간 간격으로 송신되고, 상기 제 2 하트비트 메시지는 제 2 하트비트 메시지 위상 번호를 포함하고, 상기 제 2 하트비트 메시지 위상 번호는 상기 제 1 데이터 메시지 위상 번호와 동일한,
    유형의 컴퓨터 판독가능한 저장 매체.
  26. 제 21 항에 있어서,
    상기 제 2 시간 간격은 상기 제 1 시간 간격으로부터 고정된 양만큼 증가되는,
    유형의 컴퓨터 판독가능한 저장 매체.
  27. 제 21 항에 있어서,
    상기 제 2 시간 간격은 상기 제 1 시간 간격의 배수, 상기 제 1 시간 간격의 지수 함수, 소수 시퀀스, 및 피보나치 시퀀스 중의 하나에 따라 상기 제 1 시간 간격으로부터 증가되는,
    유형의 컴퓨터 판독가능한 저장 매체.
  28. 제 16 항에 있어서,
    실행될 때, 상기 컴퓨팅 장치가 감시되고 있는 객체와 연관된 메시지 스트림 상태를 클리어링하도록 하는 명령어들을 더 포함하고, 상기 메시지 스트림 상태는 상기 정지 메시지가 송신된 후에 클리어링되고, 상기 메시지 스트림 상태는 메시지 스트림에 특별한 정보를 포함하고, 상기 메시지 스트림은 상기 감시되고 있는 객체와 관련된 메시지들에 대한 논리적 통신 채널인,
    유형의 컴퓨터 판독가능한 저장 매체.
  29. 제 28 항에 있어서,
    상기 메시지 스트림에 특별한 정보는 상기 제 1 데이터 메시지 위상 번호를 포함하는,
    유형의 컴퓨터 판독가능한 저장 매체.
  30. 제 28 항에 있어서,
    상기 메시지 스트림 상태를 클리어링하는 것은 상기 컴퓨팅 장치의 메모리로부터 상기 메시지 스트림 상태를 할당해제하는 것을 포함하는,
    유형의 컴퓨터 판독가능한 저장 매체.
  31. 시스템으로서,
    제 1 데이터 메시지를 송신하기 위한 제 1 데이터 메시지 송신기 ― 상기 제 1 데이터 메시지는 미리 정의된 초기 시퀀스 번호의 값을 갖는 제 1 데이터 메시지 시퀀스 번호를 포함하고, 상기 제 1 데이터 메시지는 제 1 데이터 메시지 위상 번호를 포함함 ―;
    제 1 정지 메시지를 송신하기 위한 제 1 정지 메시지 송신기 ― 상기 제 1 정지 메시지는 정지 메시지 위상 번호를 포함하고, 상기 정지 메시지 위상 번호는 상기 제 1 데이터 메시지 위상 번호와 동일함 ―; 및
    제 2 데이터 메시지를 송신하기 위한 제 2 데이터 메시지 송신기 ― 상기 제 2 데이터 메시지는 상기 제 1 정지 메시지 이후에 송신되고, 상기 제 2 데이터 메시지는 상기 미리 정의된 초기 시퀀스 번호의 값을 갖는 제 2 데이터 메시지 시퀀스 번호를 포함하고, 상기 제 2 데이터 메시지는 제 2 데이터 메시지 위상 번호를 포함하고, 상기 제 2 데이터 메시지 위상 번호는 상기 제 1 데이터 메시지 위상 번호와 상이함 ―
    를 포함하는,
    시스템.
  32. 제 31 항에 있어서,
    상기 제 1 데이터 메시지는 서버의 상태와 관련된 데이터를 포함하는,
    시스템.
  33. 제 32 항에 있어서,
    상기 서버는 상기 제 1 데이터 메시지 송신기, 상기 제 1 정지 메시지 송신기, 및 상기 제 2 데이터 메시지 송신기를 포함하는,
    시스템.
  34. 제 31 항에 있어서,
    상기 제 1 정지 메시지는 상기 제 1 데이터 메시지 이후에 송신되는,
    시스템.
  35. 제 31 항에 있어서,
    상기 제 1 데이터 메시지는 상기 제 1 데이터 메시지가 또한 상기 제 1 정지 메시지임을 표시하는 플래그를 포함하는,
    시스템.
  36. 제 31 항에 있어서,
    제 1 하트비트 메시지를 송신하기 위한 제 1 하트비트 메시지 송신기를 더 포함하고, 상기 제 1 하트비트 메시지는 상기 제 1 데이터 메시지가 송신된 후에 제 1 시간 간격으로 송신되고, 상기 제 1 하트비트 메시지는 제 1 하트비트 메시지 위상 번호를 포함하고, 상기 제 1 하트비트 메시지 위상 번호는 상기 제 1 데이터 메시지 위상 번호와 동일한,
    시스템.
  37. 제 36 항에 있어서,
    상기 제 1 하트비트 메시지는 제 1 하트비트 메시지 시퀀스 번호를 포함하고, 상기 제 1 하트비트 메시지 시퀀스 번호는 상기 제 1 데이터 메시지 시퀀스 번호와 동일한,
    시스템.
  38. 제 36 항에 있어서,
    상기 제 1 하트비트 메시지는 상기 제 1 정지 메시지가 송신되기 전에 송신되는,
    시스템.
  39. 제 36 항에 있어서,
    상기 제 1 하트비트 메시지는 상기 제 1 하트비트 메시지가 또한 상기 제 1 정지 메시지임을 표시하는 플래그를 포함하는,
    시스템.
  40. 제 36 항에 있어서,
    제 2 하트비트 메시지를 송신하기 위한 제 2 하트비트 메시지 송신기를 더 포함하고, 상기 제 2 하트비트 메시지는 상기 제 1 하트비트 메시지가 송신된 후에 제 2 시간 간격으로 송신되고, 상기 제 2 하트비트 메시지는 제 2 하트비트 메시지 위상 번호를 포함하고, 상기 제 2 하트비트 메시지 위상 번호는 상기 제 1 데이터 메시지 위상 번호와 동일한,
    시스템.
  41. 제 36 항에 있어서,
    상기 제 2 시간 간격은 상기 제 1 시간 간격으로부터 고정된 양만큼 증가되는,
    시스템.
  42. 제 36 항에 있어서,
    상기 제 2 시간 간격은 상기 제 1 시간 간격의 배수, 상기 제 1 시간 간격의 지수 함수, 소수 시퀀스, 및 피보나치 시퀀스 중의 하나에 따라 상기 제 1 시간 간격으로부터 증가되는,
    시스템.
  43. 제 31 항에 있어서,
    감시되고 있는 객체와 연관된 메시지 스트림 상태를 클리어링하기 위한 메시지 스트림 상태 클리어러(clearer)를 더 포함하고, 상기 메시지 스트림 상태는 상기 정지 메시지가 송신된 후에 클리어링되고, 상기 메시지 스트림 상태는 메시지 스트림에 특별한 정보를 포함하고, 상기 메시지 스트림은 상기 감시되고 있는 객체와 관련된 메시지들에 대한 논리적 통신 채널인,
    시스템.
  44. 제 43 항에 있어서,
    상기 메시지 스트림에 특별한 정보는 상기 제 1 데이터 메시지 위상 번호를 포함하는,
    시스템.
  45. 제 43 항에 있어서,
    상기 메시지 스트림 상태를 클리어링하는 것은 컴퓨팅 장치의 메모리로부터 상기 메시지 스트림 상태를 할당해제하는 것을 포함하는,
    시스템.
  46. 시스템으로서,
    메시지에 대해 위상 번호를 제공하기 위한 위상 번호 발생기;
    상기 메시지에 대해 시퀀스 번호를 제공하기 위한 시퀀스 번호 발생기;
    제 1 데이터 메시지를 송신하기 위한 제 1 데이터 메시지 송신기 ― 상기 제 1 데이터 메시지는 상기 시퀀스 번호 발생기에 의해 미리 정의된 초기 시퀀스 번호의 값이 제공되는 제 1 데이터 메시지 시퀀스 번호를 포함하고, 상기 제 1 데이터 메시지는 상기 위상 번호 발생기에 의해 제공되는 제 1 데이터 메시지 위상 번호를 포함함 ―;
    제 1 정지 메시지를 송신하기 위한 제 1 정지 메시지 송신기 ― 상기 제 1 정지 메시지는 상기 위상 번호 발생기에 의해 제공되는 정지 메시지 위상 번호를 포함하고, 상기 정지 메시지 위상 번호는 상기 제 1 데이터 메시지 위상 번호와 동일함 ―; 및
    제 2 데이터 메시지를 송신하기 위한 제 2 데이터 메시지 송신기 ― 상기 제 2 데이터 메시지는 상기 제 1 정지 메시지 이후에 송신되고, 상기 제 2 데이터 메시지는 상기 시퀀스 번호 발생기에 의해 상기 미리 정의된 초기 시퀀스 번호의 값이 제공되는 제 2 데이터 메시지 시퀀스 번호를 포함하고, 상기 제 2 데이터 메시지는 상기 위상 번호 발생기에 의해 제공되는 제 2 데이터 메시지 위상 번호를 포함하고, 상기 제 2 데이터 메시지 위상 번호는 상기 제 1 데이터 메시지 위상 번호와 상이함 ―
    를 포함하는,
    시스템.
  47. 제 46 항에 있어서,
    상기 제 1 데이터 메시지는 서버의 상태와 관련된 데이터를 포함하는,
    시스템.
  48. 제 47 항에 있어서,
    상기 서버는 상기 위상 번호 발생기, 상기 시퀀스 번호 발생기, 상기 제 1 데이터 메시지 송신기, 상기 제 1 정지 메시지 송신기, 및 상기 제 2 데이터 메시지 송신기를 포함하는,
    시스템.
  49. 제 46 항에 있어서,
    상기 제 1 정지 메시지는 상기 제 1 데이터 메시지 이후에 송신되는,
    시스템.
  50. 제 46 항에 있어서,
    상기 제 1 데이터 메시지는 상기 제 1 데이터 메시지가 또한 상기 제 1 정지 메시지임을 표시하는 플래그를 포함하는,
    시스템.
  51. 제 46 항에 있어서,
    제 1 하트비트 메시지를 송신하기 위한 제 1 하트비트 메시지 송신기를 더 포함하고, 상기 제 1 하트비트 메시지는 상기 제 1 데이터 메시지가 송신된 후에 제 1 시간 간격으로 송신되고, 상기 제 1 하트비트 메시지는 상기 위상 번호 발생기에 의해 제공되는 제 1 하트비트 메시지 위상 번호를 포함하고, 상기 제 1 하트비트 메시지 위상 번호는 상기 제 1 데이터 메시지 위상 번호와 동일한,
    시스템.
  52. 제 51 항에 있어서,
    상기 제 1 하트비트 메시지는 상기 시퀀스 번호 발생기에 의해 제공되는 제 1 하트비트 메시지 시퀀스 번호를 포함하고, 상기 제 1 하트비트 메시지 시퀀스 번호는 상기 제 1 데이터 메시지 시퀀스 번호와 동일한,
    시스템.
  53. 제 51 항에 있어서,
    상기 제 1 하트비트 메시지는 상기 제 1 정지 메시지가 송신되기 전에 송신되는,
    시스템.
  54. 제 51 항에 있어서,
    상기 제 1 하트비트 메시지는 상기 제 1 하트비트 메시지가 또한 상기 제 1 정지 메시지임을 표시하는 플래그를 포함하는,
    시스템.
  55. 제 51 항에 있어서,
    제 2 하트비트 메시지를 송신하기 위한 제 2 하트비트 메시지 송신기를 더 포함하고, 상기 제 2 하트비트 메시지는 상기 제 1 하트비트 메시지가 송신된 후에 제 2 시간 간격으로 송신되고, 상기 제 2 하트비트 메시지는 상기 위상 번호 발생기에 의해 제공되는 제 2 하트비트 메시지 위상 번호를 포함하고, 상기 제 2 하트비트 메시지 위상 번호는 상기 제 1 데이터 메시지 위상 번호와 동일한,
    시스템.
  56. 제 51 항에 있어서,
    상기 제 2 시간 간격은 상기 제 1 시간 간격으로부터 고정된 양만큼 증가되는,
    시스템.
  57. 제 51 항에 있어서,
    상기 제 2 시간 간격은 상기 제 1 시간 간격의 배수, 상기 제 1 시간 간격의 지수 함수, 소수 시퀀스, 및 피보나치 시퀀스 중의 하나에 따라 상기 제 1 시간 간격으로부터 증가되는,
    시스템.
  58. 제 46 항에 있어서,
    감시되고 있는 객체와 연관된 메시지 스트림 상태를 클리어링하기 위한 메시지 스트림 상태 클리어러를 더 포함하고, 상기 메시지 스트림 상태는 상기 정지 메시지가 송신된 후에 클리어링되고, 상기 메시지 스트림 상태는 메시지 스트림에 특별한 정보를 포함하고, 상기 메시지 스트림은 상기 감시되고 있는 객체와 관련된 메시지들에 대한 논리적 통신 채널인,
    시스템.
  59. 제 58 항에 있어서,
    상기 메시지 스트림에 특별한 정보는 상기 제 1 데이터 메시지 위상 번호를 포함하는,
    시스템.
  60. 제 58 항에 있어서,
    상기 메시지 스트림 상태를 클리어링하는 것은 컴퓨팅 장치의 메모리로부터 상기 메시지 스트림 상태를 할당해제하는 것을 포함하는,
    시스템.
  61. 제 46 항에 있어서,
    상기 제 1 데이터 메시지 송신기, 상기 제 1 정지 메시지 송신기, 및 상기 제 2 데이터 메시지 송신기는 동일한 메시지 송신기의 일부인,
    시스템.
  62. 방법으로서,
    컴퓨팅 장치에 의해, 새로운 메시지가 송신될 것임을 검출하는 단계;
    상기 컴퓨팅 장치에 의해, 상기 새로운 메시지에 대한 위상 번호를 결정하는 단계;
    상기 컴퓨팅 장치에 의해, 상기 새로운 메시지에 대한 시퀀스 번호를 결정하는 단계; 및
    상기 컴퓨팅 장치에 의해, 상기 위상 번호 및 상기 시퀀스 번호를 갖는 상기 새로운 메시지를 송신하는 단계
    를 포함하는,
    방법.
  63. 제 62 항에 있어서,
    상기 새로운 메시지가 송신될 것임을 검출하는 단계는 타이머의 만료에 기반으로 하고, 상기 타이머는 최종 메시지가 송신된 후의 제 1 시간 간격 동안인,
    방법.
  64. 제 63 항에 있어서,
    상기 최종 메시지는 데이터 메시지인,
    방법.
  65. 제 63 항에 있어서,
    상기 최종 메시지는 하트비트 메시지인,
    방법.
  66. 제 65 항에 있어서,
    상기 제 1 시간 간격은 이전 시간 간격으로부터 고정된 양만큼 증가되고, 상기 이전 시간 간격은 최종 바로 앞 메시지가 송신되었을 때와 상기 최종 메시지가 송신되었을 때 사이의 시간 간격인,
    방법.
  67. 제 66 항에 있어서,
    상기 제 1 시간 간격은 상기 이전 시간 간격의 배수, 상기 이전 시간 간격의 지수함수, 소수 시퀀스, 및 피보나치 시퀀스 중의 하나에 따라 상기 이전 시간 간격으로부터 증가되는,
    방법.
  68. 제 62 항에 있어서,
    상기 새로운 메시지가 송신될 것임을 검출하는 단계는 애플리케이션으로부터 데이터를 수신하는 것에 기반으로 하는,
    방법.
  69. 제 62 항에 있어서,
    상기 새로운 메시지는 데이터 메시지인,
    방법.
  70. 제 69 항에 있어서,
    상기 데이터 메시지는 트레이딩가능한 객체에 대한 주문과 관련된 데이터를 포함하는,
    방법.
  71. 제 69 항에 있어서,
    상기 데이터 메시지는 상기 데이터 메시지가 또한 정지 메시지임을 표시하는 플래그를 포함하는,
    방법.
  72. 제 62 항에 있어서,
    상기 새로운 메시지는 하트비트 메시지인,
    방법.
  73. 제 72 항에 있어서,
    상기 하트비트 메시지는 상기 하트비트 메시지가 또한 정지 메시지임을 표시하는 플래그를 포함하는,
    방법.
  74. 제 72 항에 있어서,
    상기 하트비트 메시지에 대한 상기 시퀀스 번호는 송신된 최종 데이터 메시지에 대한 시퀀스 번호와 동일한,
    방법.
  75. 제 62 항에 있어서,
    상기 새로운 메시지는 정지 메시지인,
    방법.
  76. 제 75 항에 있어서,
    상기 컴퓨팅 장치에 의해, 메시지 스트림 상태를 클리어링하는 단계를 더 포함하고, 상기 메시지 스트림 상태는 상기 정지 메시지가 송신된 후에 클리어링되고, 상기 메시지 스트림 상태는 메시지 스트림에 특별한 정보를 포함하고, 상기 메시지 스트림은 관련된 메시지들에 대한 논리적 통신 채널인,
    방법.
  77. 명령어들을 포함하는 유형의 컴퓨터 판독가능한 저장 매체로서,
    상기 명령어들은, 실행될 때, 컴퓨팅 장치가 적어도:
    새로운 메시지가 송신될 것임을 검출하고;
    상기 새로운 메시지에 대한 위상 번호를 결정하고;
    상기 새로운 메시지에 대한 시퀀스 번호를 결정하고;
    상기 위상 번호 및 상기 시퀀스 번호를 갖는 상기 새로운 메시지를 송신
    하도록 하는,
    유형의 컴퓨터 판독가능한 저장 매체.
  78. 제 77 항에 있어서,
    상기 새로운 메시지가 송신될 것임을 검출하는 단계는 타이머의 만료에 기반으로 하고, 상기 타이머는 최종 메시지가 송신된 후의 제 1 시간 간격 동안인,
    유형의 컴퓨터 판독가능한 저장 매체.
  79. 제 78 항에 있어서,
    상기 최종 메시지는 데이터 메시지인,
    유형의 컴퓨터 판독가능한 저장 매체.
  80. 제 78 항에 있어서,
    상기 최종 메시지는 하트비트 메시지인,
    유형의 컴퓨터 판독가능한 저장 매체.
  81. 제 80 항에 있어서,
    상기 제 1 시간 간격은 이전 시간 간격으로부터 고정된 양만큼 증가되고, 상기 이전 시간 간격은 최종 바로 앞 메시지가 송신되었을 때와 상기 최종 메시지가 송신되었을 때 사이의 시간 간격인,
    유형의 컴퓨터 판독가능한 저장 매체.
  82. 제 81 항에 있어서,
    상기 제 1 시간 간격은 상기 이전 시간 간격의 배수, 상기 이전 시간 간격의 지수함수, 소수 시퀀스, 및 피보나치 시퀀스 중의 하나에 따라 상기 이전 시간 간격으로부터 증가되는,
    유형의 컴퓨터 판독가능한 저장 매체.
  83. 제 77 항에 있어서,
    상기 새로운 메시지가 송신될 것임을 검출하는 단계는 애플리케이션으로부터 데이터를 수신하는 것에 기반으로 하는,
    유형의 컴퓨터 판독가능한 저장 매체.
  84. 제 77 항에 있어서,
    상기 새로운 메시지는 데이터 메시지인,
    유형의 컴퓨터 판독가능한 저장 매체.
  85. 제 84 항에 있어서,
    상기 데이터 메시지는 트레이딩가능한 객체에 대한 주문과 관련된 데이터를 포함하는,
    유형의 컴퓨터 판독가능한 저장 매체.
  86. 제 84 항에 있어서,
    상기 데이터 메시지는 상기 데이터 메시지가 또한 정지 메시지임을 표시하는 플래그를 포함하는,
    유형의 컴퓨터 판독가능한 저장 매체.
  87. 제 77 항에 있어서,
    상기 새로운 메시지는 하트비트 메시지인,
    유형의 컴퓨터 판독가능한 저장 매체.
  88. 제 87 항에 있어서,
    상기 하트비트 메시지는 상기 하트비트 메시지가 또한 정지 메시지임을 표시하는 플래그를 포함하는,
    유형의 컴퓨터 판독가능한 저장 매체.
  89. 제 87 항에 있어서,
    상기 하트비트 메시지에 대한 상기 시퀀스 번호는 송신된 최종 데이터 메시지에 대한 시퀀스 번호와 동일한,
    유형의 컴퓨터 판독가능한 저장 매체.
  90. 제 77 항에 있어서,
    상기 새로운 메시지는 정지 메시지인,
    유형의 컴퓨터 판독가능한 저장 매체.
  91. 제 90 항에 있어서,
    실행될 때, 상기 컴퓨팅 장치가 메시지 스트림 상태를 클리어링하도록 하는 명령어들을 더 포함하고, 상기 메시지 스트림 상태는 상기 정지 메시지가 송신된 후에 클리어링되고, 상기 메시지 스트림 상태는 메시지 스트림에 특별한 정보를 포함하고, 상기 메시지 스트림은 관련된 메시지들에 대한 논리적 통신 채널인,
    유형의 컴퓨터 판독가능한 저장 매체.
  92. 시스템으로서,
    새로운 메시지가 송신될 것임을 검출하기 위한 새로운 메시지 검출기;
    상기 새로운 메시지에 대한 위상 번호를 결정하기 위한 위상 번호 발생기;
    상기 새로운 메시지에 대한 시퀀스 번호를 결정하기 위한 시퀀스 번호 발생기; 및
    상기 위상 번호 및 상기 시퀀스 번호를 갖는 상기 새로운 메시지를 송신하기 위한 메시지 송신기
    를 포함하는,
    시스템.
  93. 제 92 항에 있어서,
    상기 새로운 메시지가 송신될 것임을 검출하는 것은 타이머의 만료에 기반으로 하고, 상기 타이머는 최종 메시지가 송신된 후의 제 1 시간 간격 동안인,
    시스템.
  94. 제 93 항에 있어서,
    상기 최종 메시지는 데이터 메시지인,
    시스템.
  95. 제 93 항에 있어서,
    상기 최종 메시지는 하트비트 메시지인,
    시스템.
  96. 제 95 항에 있어서,
    상기 제 1 시간 간격은 이전 시간 간격으로부터 고정된 양만큼 증가되고, 상기 이전 시간 간격은 최종 바로 앞 메시지가 송신되었을 때와 상기 최종 메시지가 송신되었을 때 사이의 시간 간격인,
    시스템.
  97. 제 96 항에 있어서,
    상기 제 1 시간 간격은 상기 이전 시간 간격의 배수, 상기 이전 시간 간격의 지수함수, 소수 시퀀스, 및 피보나치 시퀀스 중의 하나에 따라 상기 이전 시간 간격으로부터 증가되는,
    시스템.
  98. 제 92 항에 있어서,
    상기 새로운 메시지가 송신될 것임을 검출하는 것은 애플리케이션으로부터 데이터를 수신하는 것에 기반으로 하는,
    시스템.
  99. 제 92 항에 있어서,
    상기 새로운 메시지는 데이터 메시지인,
    시스템.
  100. 제 99 항에 있어서,
    상기 데이터 메시지는 트레이딩가능한 객체에 대한 주문과 관련된 데이터를 포함하는,
    시스템.
  101. 제 99 항에 있어서,
    상기 데이터 메시지는 상기 데이터 메시지가 또한 정지 메시지임을 표시하는 플래그를 포함하는,
    시스템.
  102. 제 92 항에 있어서,
    상기 새로운 메시지는 하트비트 메시지인,
    시스템.
  103. 제 102 항에 있어서,
    상기 하트비트 메시지는 상기 하트비트 메시지가 또한 정지 메시지임을 표시하는 플래그를 포함하는,
    시스템.
  104. 제 103 항에 있어서,
    상기 하트비트 메시지에 대한 상기 시퀀스 번호는 송신된 최종 데이터 메시지에 대한 시퀀스 번호와 동일한,
    시스템.
  105. 제 92 항에 있어서,
    상기 새로운 메시지는 정지 메시지인,
    시스템.
  106. 제 105 항에 있어서,
    메시지 스트림 상태를 클리어링하기 위한 메시지 스트림 상태 클리어러를 더 포함하고, 상기 메시지 스트림 상태는 상기 정지 메시지가 송신된 후에 클리어링되고, 상기 메시지 스트림 상태는 메시지 스트림에 특별한 정보를 포함하고, 상기 메시지 스트림은 관련된 메시지들에 대한 논리적 통신 채널인,
    시스템.
  107. 방법으로서,
    컴퓨팅 장치에 의해, 새로운 메시지를 수신하는 단계 ― 상기 새로운 메시지는 메시지 위상 번호 및 메시지 시퀀스 번호를 포함함 ―;
    상기 컴퓨팅 장치에 의해, 상기 새로운 메시지에 대한 예상된 위상 번호를 결정하는 단계;
    상기 컴퓨팅 장치에 의해, 상기 새로운 메시지에 대한 예상된 시퀀스 번호를 결정하는 단계;
    상기 컴퓨팅 장치에 의해, 상기 메시지 위상 번호를 상기 예상된 위상 번호와 비교하는 단계;
    상기 컴퓨팅 장치에 의해, 상기 메시지 시퀀스 번호를 상기 예상된 시퀀스 번호와 비교하는 단계;
    상기 컴퓨팅 장치에 의해, (a) 상기 메시지 위상 번호 및 상기 예상된 위상 번호와, (b) 상기 메시지 시퀀스 번호 및 상기 예상된 시퀀스 번호 중의 적어도 하나가 일치하지 않을 때, 손실된 메시지를 보고하는 단계
    를 포함하는,
    방법.
  108. 제 107 항에 있어서,
    이전 메시지가 정지 메시지가 아니었을 때, 상기 예상된 위상 번호는 상기 이전 메시지에 대한 이전 위상 번호와 동일한,
    방법.
  109. 제 107 항에 있어서,
    이전 메시지가 정지 메시지이었을 때, 상기 예상된 위상 번호는 상기 메시지 위상 번호와 동일한,
    방법.
  110. 제 107 항에 있어서,
    상기 예상된 시퀀스 번호는 이전 메시지에 대한 이전 시퀀스 번호에 기반으로 하는,
    방법.
  111. 제 110 항에 있어서,
    상기 예상된 시퀀스 번호는 상기 이전 시퀀스 번호를 증분시킴으로써 결정되는,
    방법.
  112. 제 107 항에 있어서,
    상기 새로운 메시지가 하트비트 메시지일 때, 상기 예상된 시퀀스 번호는 이전 데이터 메시지에 대한 이전 시퀀스 번호와 동일한,
    방법.
  113. 제 107 항에 있어서,
    상기 새로운 메시지가 정지 메시지일 때, 상기 예상된 시퀀스 번호는 이전 데이터 메시지에 대한 이전 시퀀스 번호와 동일한,
    방법.
  114. 제 107 항에 있어서,
    상기 컴퓨팅 장치에 의해, 상기 새로운 메시지가 데이터 메시지일 때, 상기 새로운 메시지 내의 데이터를 처리하는 단계를 더 포함하는,
    방법.
  115. 제 107 항에 있어서,
    상기 컴퓨팅 장치에 의해, 상기 새로운 메시지가 정지 메시지일 때, 메시지 스트림 상태를 클리어링하는 단계를 더 포함하고, 상기 메시지 스트림 상태는 메시지 스트림에 특별한 정보를 포함하고, 상기 메시지 스트림은 관련된 메시지들에 대한 논리적 통신 채널인,
    방법.
  116. 명령어들을 포함하는 유형의 컴퓨터 판독가능한 저장 매체로서,
    상기 명령어들은, 실행될 때, 컴퓨팅 장치가 적어도:
    새로운 메시지를 수신하고 ― 상기 새로운 메시지는 메시지 위상 번호 및 메시지 시퀀스 번호를 포함함 ―;
    상기 새로운 메시지에 대한 예상된 위상 번호를 결정하고;
    상기 새로운 메시지에 대한 예상된 시퀀스 번호를 결정하고;
    상기 메시지 위상 번호를 상기 예상된 위상 번호와 비교하고;
    상기 메시지 시퀀스 번호를 상기 예상된 시퀀스 번호와 비교하고;
    (a) 상기 메시지 위상 번호 및 상기 예상된 위상 번호와, (b) 상기 메시지 시퀀스 번호 및 상기 예상된 시퀀스 번호 중의 적어도 하나가 일치하지 않을 때, 손실된 메시지를 보고하도록 하는,
    유형의 컴퓨터 판독가능한 저장 매체.
  117. 제 116 항에 있어서,
    이전 메시지가 정지 메시지가 아니었을 때, 상기 예상된 위상 번호는 상기 이전 메시지에 대한 이전 위상 번호와 동일한,
    유형의 컴퓨터 판독가능한 저장 매체.
  118. 제 116 항에 있어서,
    이전 메시지가 정지 메시지이었을 때, 상기 예상된 위상 번호는 상기 메시지 위상 번호와 동일한,
    유형의 컴퓨터 판독가능한 저장 매체.
  119. 제 116 항에 있어서,
    상기 예상된 시퀀스 번호는 이전 메시지에 대한 이전 시퀀스 번호에 기반으로 하는,
    유형의 컴퓨터 판독가능한 저장 매체.
  120. 제 119 항에 있어서,
    상기 예상된 시퀀스 번호는 상기 이전 시퀀스 번호를 증분시킴으로써 결정되는,
    유형의 컴퓨터 판독가능한 저장 매체.
  121. 제 116 항에 있어서,
    상기 새로운 메시지가 하트비트 메시지일 때, 상기 예상된 시퀀스 번호는 이전 데이터 메시지에 대한 이전 시퀀스 번호와 동일한,
    유형의 컴퓨터 판독가능한 저장 매체.
  122. 제 116 항에 있어서,
    상기 새로운 메시지가 정지 메시지일 때, 상기 예상된 시퀀스 번호는 이전 데이터 메시지에 대한 이전 시퀀스 번호와 동일한,
    유형의 컴퓨터 판독가능한 저장 매체.
  123. 제 116 항에 있어서,
    실행될 때, 상기 새로운 메시지가 데이터 메시지이면, 컴퓨팅 장치가 상기 새로운 메시지 내의 데이터를 처리하도록 하는 명령어들을 더 포함하는,
    유형의 컴퓨터 판독가능한 저장 매체.
  124. 제 116 항에 있어서,
    실행될 때, 상기 새로운 메시지가 정지 메시지이면, 컴퓨팅 장치가 메시지 스트림 상태를 클리어링하도록 하는 명령어들을 더 포함하고, 상기 메시지 스트림 상태는 메시지 스트림에 특별한 정보를 포함하고, 상기 메시지 스트림은 관련된 메시지들에 대한 논리적 통신 채널인,
    유형의 컴퓨터 판독가능한 저장 매체.
  125. 시스템으로서,
    새로운 메시지를 수신하기 위한 메시지 수신기 ― 상기 새로운 메시지는 메시지 위상 번호 및 메시지 시퀀스 번호를 포함함 ―;
    새로운 메시지에 대한 예상된 위상 번호를 결정하기 위한 예상된 위상 번호 발생기;
    상기 새로운 메시지에 대한 예상된 시퀀스 번호를 결정하기 위한 예상된 시퀀스 번호 발생기;
    상기 메시지 위상 번호를 상기 예상된 위상 번호와 비교하기 위한 위상 번호 비교기;
    상기 메시지 시퀀스 번호를 상기 예상된 시퀀스 번호와 비교하기 위한 시퀀스 번호 비교기; 및
    (a) 상기 메시지 위상 번호 및 상기 예상된 위상 번호와, (b) 상기 메시지 시퀀스 번호 및 상기 예상된 시퀀스 번호 중의 적어도 하나가 일치하지 않을 때, 손실된 메시지를 보고하기 위한 손실된 메시지 보고기
    를 포함하는,
    시스템.
  126. 제 125 항에 있어서,
    이전 메시지가 정지 메시지가 아니었을 때, 상기 예상된 위상 번호는 상기 이전 메시지에 대한 이전 위상 번호와 동일한,
    시스템.
  127. 제 125 항에 있어서,
    이전 메시지가 정지 메시지이었을 때, 상기 예상된 위상 번호는 상기 메시지 위상 번호와 동일한,
    시스템.
  128. 제 125 항에 있어서,
    상기 예상된 시퀀스 번호는 이전 메시지에 대한 이전 시퀀스 번호에 기반으로 하는,
    시스템.
  129. 제 128 항에 있어서,
    상기 예상된 시퀀스 번호는 상기 이전 시퀀스 번호를 증분시킴으로써 결정되는,
    시스템.
  130. 제 125 항에 있어서,
    상기 새로운 메시지가 하트비트 메시지일 때, 상기 예상된 시퀀스 번호는 이전 데이터 메시지에 대한 이전 시퀀스 번호와 동일한,
    시스템.
  131. 제 125 항에 있어서,
    상기 새로운 메시지가 정지 메시지일 때, 상기 예상된 시퀀스 번호는 이전 데이터 메시지에 대한 이전 시퀀스 번호와 동일한,
    시스템.
  132. 제 125 항에 있어서,
    상기 새로운 메시지가 데이터 메시지일 때, 상기 새로운 메시지 내의 데이터를 처리하기 위한 메시지 프로세서를 더 포함하는,
    시스템.
  133. 제 125 항에 있어서,
    상기 새로운 메시지가 정지 메시지일 때, 메시지 스트림 상태를 클리어링하기 위한 메시지 스트림 상태 클리어러를 더 포함하고, 상기 메시지 스트림 상태는 메시지 스트림에 특별한 정보를 포함하고, 상기 메시지 스트림은 관련된 메시지들에 대한 논리적 통신 채널인,
    시스템.
  134. 방법으로서,
    컴퓨팅 장치에 의해, 제 1 데이터 메시지를 송신하는 단계;
    상기 컴퓨팅 장치에 의해, 제 1 하트비트 메시지를 송신하는 단계 ― 상기 제 1 하트비트 메시지는 상기 제 1 데이터 메시지가 송신된 후에 제 1 시간 간격으로 송신되고, 상기 제 1 시간 간격은 미리 정의된 길이임 ―; 및
    상기 컴퓨팅 장치에 의해, 제 2 하트비트 메시지를 송신하는 단계 ― 상기 제 2 하트비트 메시지는 상기 제 1 하트비트 메시지가 송신된 후에 제 2 시간 간격으로 송신되고, 상기 제 2 시간 간격은 상기 제 1 시간 간격으로부터 증가됨 ―
    를 포함하는,
    방법.
  135. 제 134 항에 있어서,
    상기 제 1 데이터 메시지는 트레이딩가능한 객체에 대한 주문과 관련된 데이터를 포함하는,
    방법.
  136. 제 134 항에 있어서,
    상기 제 2 시간 간격은 상기 제 1 시간 간격으로부터 고정된 양만큼 증가되는,
    방법.
  137. 제 134 항에 있어서,
    상기 제 2 시간 간격은 상기 제 1 시간 간격을 2배로 함으로써 상기 제 1 시간 간격으로부터 증가되는,
    방법.
  138. 제 134 항에 있어서,
    상기 제 2 시간 간격은 상기 제 1 시간 간격의 배수, 상기 제 1 시간 간격의 지수함수, 소수 시퀀스, 및 피보나치 시퀀스 중의 하나에 따라 상기 제 1 시간 간격으로부터 증가되는,
    방법.
  139. 명령어들을 포함하는 유형의 컴퓨터 판독가능한 저장 매체로서,
    상기 명령어들은, 실행될 때, 컴퓨팅 장치가 적어도:
    제 1 데이터 메시지를 송신하고;
    제 1 하트비트 메시지를 송신하고 ― 상기 제 1 하트비트 메시지는 상기 제 1 데이터 메시지가 송신된 후에 제 1 시간 간격으로 송신되고, 상기 제 1 시간 간격은 미리 정의된 길이임 ―;
    제 2 하트비트 메시지를 송신 ― 상기 제 2 하트비트 메시지는 상기 제 1 하트비트 메시지가 송신된 후에 제 2 시간 간격으로 송신되고, 상기 제 2 시간 간격은 상기 제 1 시간 간격으로부터 증가됨 ―
    하도록 하는,
    유형의 컴퓨터 판독가능한 저장 매체.
  140. 제 139 항에 있어서,
    상기 제 1 데이터 메시지는 트레이딩가능한 객체에 대한 주문과 관련된 데이터를 포함하는,
    유형의 컴퓨터 판독가능한 저장 매체.
  141. 제 139 항에 있어서,
    상기 제 2 시간 간격은 상기 제 1 시간 간격으로부터 고정된 양만큼 증가되는,
    유형의 컴퓨터 판독가능한 저장 매체.
  142. 제 139 항에 있어서,
    상기 제 2 시간 간격은 상기 제 1 시간 간격을 2배로 함으로써 상기 제 1 시간 간격으로부터 증가되는,
    유형의 컴퓨터 판독가능한 저장 매체.
  143. 제 139 항에 있어서,
    상기 제 2 시간 간격은 상기 제 1 시간 간격의 배수, 상기 제 1 시간 간격의 지수함수, 소수 시퀀스, 및 피보나치 시퀀스 중의 하나에 따라 상기 제 1 시간 간격으로부터 증가되는,
    유형의 컴퓨터 판독가능한 저장 매체.
  144. 시스템으로서,
    제 1 데이터 메시지를 송신하기 위한 제 1 데이터 메시지 송신기;
    제 1 하트비트 메시지를 송신하기 위한 제 1 하트비트 메시지 송신기 ― 상기 제 1 하트비트 메시지는 상기 제 1 데이터 메시지가 송신된 후에 제 1 시간 간격으로 송신되고, 상기 제 1 시간 간격은 미리 정의된 길이임 ―; 및
    제 2 하트비트 메시지를 송신하기 위한 제 2 하트비트 메시지 송신기 ― 상기 제 2 하트비트 메시지는 상기 제 1 하트비트 메시지가 송신된 후에 제 2 시간 간격으로 송신되고, 상기 제 2 시간 간격은 상기 제 1 시간 간격으로부터 증가됨 ―
    를 포함하는,
    시스템.
  145. 제 144 항에 있어서,
    상기 제 1 데이터 메시지는 트레이딩가능한 객체에 대한 주문과 관련된 데이터를 포함하는,
    시스템.
  146. 제 144 항에 있어서,
    상기 제 2 시간 간격은 상기 제 1 시간 간격으로부터 고정된 양만큼 증가되는,
    시스템.
  147. 제 144 항에 있어서,
    상기 제 2 시간 간격은 상기 제 1 시간 간격을 2배로 함으로써 상기 제 1 시간 간격으로부터 증가되는,
    시스템.
  148. 제 144 항에 있어서,
    상기 제 2 시간 간격은 상기 제 1 시간 간격의 배수, 상기 제 1 시간 간격의 지수함수, 소수 시퀀스, 및 피보나치 시퀀스 중의 하나에 따라 상기 제 1 시간 간격으로부터 증가되는,
    시스템.
  149. 제 144 항에 있어서,
    상기 제 1 데이터 메시지 송신기, 상기 제 1 하트비트 메시지 송신기, 및 상기 제 2 하트비트 메시지 송신기는 동일한 메시지 송신기의 일부인,
    시스템.
  150. 방법으로서,
    컴퓨팅 장치에 의해, 제 1 데이터 메시지를 송신하는 단계; 및
    상기 컴퓨팅 장치에 의해, 제 1 정지 메시지를 송신하는 단계
    를 포함하는,
    방법.
  151. 제 150 항에 있어서,
    상기 제 1 데이터 메시지는 트레이딩가능한 객체에 대한 주문과 관련된 데이터를 포함하는,
    방법.
  152. 제 150 항에 있어서,
    상기 제 1 데이터 메시지는 상기 제 1 데이터 메시지가 또한 상기 제 1 정지 메시지임을 표시하는 플래그를 포함하는,
    방법.
  153. 제 150 항에 있어서,
    상기 컴퓨팅 장치에 의해, 메시지 스트림 상태를 클리어링하는 단계를 더 포함하고, 상기 메시지 스트림 상태는 상기 정지 메시지가 송신된 후에 클리어링되고, 상기 메시지 스트림 상태는 메시지 스트림에 특별한 정보를 포함하고, 상기 메시지 스트림은 관련된 메시지들에 대한 논리적 통신 채널인,
    방법.
  154. 명령어들을 포함하는 유형의 컴퓨터 판독가능한 저장 매체로서,
    상기 명령어들은, 실행될 때, 컴퓨팅 장치가 적어도:
    제 1 데이터 메시지를 송신하고;
    제 1 정지 메시지를 송신
    하도록 하는,
    유형의 컴퓨터 판독가능한 저장 매체.
  155. 제 154 항에 있어서,
    상기 제 1 데이터 메시지는 트레이딩가능한 객체에 대한 주문과 관련된 데이터를 포함하는,
    유형의 컴퓨터 판독가능한 저장 매체.
  156. 제 154 항에 있어서,
    상기 제 1 데이터 메시지는 상기 제 1 데이터 메시지가 또한 상기 제 1 정지 메시지임을 표시하는 플래그를 포함하는,
    유형의 컴퓨터 판독가능한 저장 매체.
  157. 제 154 항에 있어서,
    실행될 때, 상기 컴퓨팅 장치가 메시지 스트림 상태를 클리어링하도록 하는 명령어들을 더 포함하고, 상기 메시지 스트림 상태는 상기 정지 메시지가 송신된 후에 클리어링되고, 상기 메시지 스트림 상태는 메시지 스트림에 특별한 정보를 포함하고, 상기 메시지 스트림은 관련된 메시지들에 대한 논리적 통신 채널인,
    유형의 컴퓨터 판독가능한 저장 매체.
  158. 시스템으로서,
    제 1 데이터 메시지를 송신하기 위한 제 1 데이터 메시지 송신기; 및
    제 1 정지 메시지를 송신하기 위한 제 1 정지 메시지 송신기
    를 포함하는,
    시스템.
  159. 제 158 항에 있어서,
    상기 제 1 데이터 메시지는 트레이딩가능한 객체에 대한 주문과 관련된 데이터를 포함하는,
    시스템.
  160. 제 158 항에 있어서,
    상기 제 1 데이터 메시지는 상기 제 1 데이터 메시지가 또한 상기 제 1 정지 메시지임을 표시하는 플래그를 포함하는,
    시스템.
  161. 제 158 항에 있어서,
    메시지 스트림 상태를 클리어링하기 위한 메시지 스트림 상태 클리어러를 더 포함하고, 상기 메시지 스트림 상태는 상기 정지 메시지가 송신된 후에 클리어링되고, 상기 메시지 스트림 상태는 메시지 스트림에 특별한 정보를 포함하고, 상기 메시지 스트림은 관련된 메시지들에 대한 논리적 통신 채널인,
    시스템.
  162. 제 158 항에 있어서,
    상기 제 1 데이터 메시지 송신기 및 상기 제 1 정지 메시지 송신기는 동일한 메시지 송신기의 일부인,
    시스템.
  163. 방법으로서,
    컴퓨팅 장치에 의해, 시퀀스 번호 및 위상 번호를 포함하는 메시지를 송신하는 단계를 포함하는,
    방법.
  164. 제 163 항에 있어서,
    상기 메시지는 트레이딩가능한 객체에 대한 주문과 관련된 데이터를 포함하는 데이터 메시지인,
    방법.
  165. 명령어들을 포함하는 유형의 컴퓨터 판독가능한 저장 매체로서,
    상기 명령어들은, 실행될 때, 컴퓨팅 장치가 적어도:
    시퀀스 번호 및 위상 번호를 포함하는 메시지를 송신하도록 하는,
    유형의 컴퓨터 판독가능한 저장 매체.
  166. 제 165 항에 있어서,
    상기 메시지는 트레이딩가능한 객체에 대한 주문과 관련된 데이터를 포함하는 데이터 메시지인,
    유형의 컴퓨터 판독가능한 저장 매체.
  167. 시스템으로서,
    시퀀스 번호 및 위상 번호를 포함하는 메시지를 송신하기 위한 메시지 송신기를 포함하는,
    시스템.
  168. 제 167 항에 있어서,
    상기 메시지는 트레이딩가능한 객체에 대한 주문과 관련된 데이터를 포함하는 데이터 메시지인,
    시스템.
  169. 방법으로서,
    컴퓨팅 장치에 의해, 시퀀스 번호 및 위상 번호를 포함하는 메시지를 수신하는 단계; 및
    상기 컴퓨팅 장치에 의해, 상기 시퀀스 번호 및 상기 위상 번호에 기반으로 하여 손실된 메시지를 보고하는 단계
    를 포함하는,
    방법.
  170. 제 169 항에 있어서,
    상기 메시지는 트레이딩가능한 객체에 대한 주문과 관련된 데이터를 포함하는 데이터 메시지인,
    방법.
  171. 명령어들을 포함하는 유형의 컴퓨터 판독가능한 저장 매체로서,
    상기 명령어들은, 실행될 때, 컴퓨팅 장치가 적어도:
    시퀀스 번호 및 위상 번호를 포함하는 메시지를 수신하고;
    상기 시퀀스 번호 및 상기 위상 번호에 기반으로 하여 손실된 메시지를 보고
    하도록 하는,
    유형의 컴퓨터 판독가능한 저장 매체.
  172. 제 171 항에 있어서,
    상기 메시지는 트레이딩가능한 객체에 대한 주문과 관련된 데이터를 포함하는 데이터 메시지인,
    유형의 컴퓨터 판독가능한 저장 매체.
  173. 시스템으로서,
    시퀀스 번호 및 위상 번호를 포함하는 메시지를 수신하기 위한 메시지 수신기; 및
    상기 시퀀스 번호 및 상기 위상 번호에 기반으로 하여 손실된 메시지를 보고하기 위한 손실된 메시지 보고기
    를 포함하는,
    시스템.
  174. 제 173 항에 있어서,
    상기 메시지는 트레이딩가능한 객체에 대한 주문과 관련된 데이터를 포함하는 데이터 메시지인,
    시스템.
KR1020147008784A 2011-09-02 2012-08-30 메시지 스트림 무결성 KR101644996B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/225,047 US8745157B2 (en) 2011-09-02 2011-09-02 Order feed message stream integrity
US13/225,047 2011-09-02
PCT/US2012/053169 WO2013033416A1 (en) 2011-09-02 2012-08-30 Message stream integrity

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020167020626A Division KR101875915B1 (ko) 2011-09-02 2012-08-30 메시지 스트림 무결성

Publications (2)

Publication Number Publication Date
KR20140060333A true KR20140060333A (ko) 2014-05-19
KR101644996B1 KR101644996B1 (ko) 2016-08-02

Family

ID=46832626

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020197018370A KR20190076077A (ko) 2011-09-02 2012-08-30 메시지 스트림 무결성
KR1020187018908A KR101995058B1 (ko) 2011-09-02 2012-08-30 메시지 스트림 무결성
KR1020167020626A KR101875915B1 (ko) 2011-09-02 2012-08-30 메시지 스트림 무결성
KR1020147008784A KR101644996B1 (ko) 2011-09-02 2012-08-30 메시지 스트림 무결성

Family Applications Before (3)

Application Number Title Priority Date Filing Date
KR1020197018370A KR20190076077A (ko) 2011-09-02 2012-08-30 메시지 스트림 무결성
KR1020187018908A KR101995058B1 (ko) 2011-09-02 2012-08-30 메시지 스트림 무결성
KR1020167020626A KR101875915B1 (ko) 2011-09-02 2012-08-30 메시지 스트림 무결성

Country Status (14)

Country Link
US (5) US8745157B2 (ko)
EP (3) EP2793417B1 (ko)
JP (4) JP5840782B2 (ko)
KR (4) KR20190076077A (ko)
CN (3) CN103907306B (ko)
AU (1) AU2012301829B2 (ko)
BR (4) BR122015015223A2 (ko)
CA (2) CA2847350C (ko)
ES (1) ES2488672T3 (ko)
HK (4) HK1188520A1 (ko)
IL (1) IL230900A0 (ko)
MX (3) MX2014002222A (ko)
SG (2) SG10201607252VA (ko)
WO (1) WO2013033416A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8232962B2 (en) 2004-06-21 2012-07-31 Trading Technologies International, Inc. System and method for display management based on user attention inputs
US7725764B2 (en) * 2006-08-04 2010-05-25 Tsx Inc. Failover system and method
US8745157B2 (en) 2011-09-02 2014-06-03 Trading Technologies International, Inc. Order feed message stream integrity
US9021109B1 (en) * 2012-01-23 2015-04-28 Amazon Technologies, Inc. Controlling requests through message headers
US10755351B2 (en) * 2012-03-29 2020-08-25 Trading Technologies International, Inc. Controlling operation of a trading algorithm based on operating condition rules
US9756089B2 (en) * 2012-08-28 2017-09-05 Facebook, Inc. Maintain persistent connections between servers and mobile clients
US10467691B2 (en) * 2012-12-31 2019-11-05 Trading Technologies International, Inc. User definable prioritization of market information
US9798639B2 (en) 2013-06-13 2017-10-24 Tsx Inc. Failover system and method replicating client message to backup server from primary server
US10664548B2 (en) 2013-07-12 2020-05-26 Trading Technologies International, Inc. Tailored messaging
CN104703146B (zh) * 2013-12-09 2019-03-08 腾讯科技(深圳)有限公司 信息推送方法、客户端及系统
US10142202B2 (en) * 2014-01-30 2018-11-27 Qualcomm Incorporated Determination of end-to-end transport quality
JP6514165B2 (ja) * 2016-09-16 2019-05-15 株式会社東芝 通信装置および通信方法
CA2984275A1 (en) * 2016-11-01 2018-05-01 Tsx Inc. Electronic trading system and method for mutual funds and exchange traded funds
US10776428B2 (en) * 2017-02-16 2020-09-15 Nasdaq Technology Ab Systems and methods of retrospectively determining how submitted data transaction requests operate against a dynamic data structure
FR3074396A1 (fr) * 2017-11-30 2019-05-31 Orange Procedes de detection, de gestion et de relais d'un probleme de communication multimedia, entites d'execution, de controle et de gestion de regles et programme d'ordinateur correspondants.
CN111107509B (zh) * 2018-10-26 2023-04-14 深圳市理邦精密仪器股份有限公司 一种监护数据传输方法、系统及探头
JP7288662B2 (ja) * 2019-04-15 2023-06-08 明京電機株式会社 障害監視復旧システム、その方法、およびそのプログラム
CN110806993B (zh) * 2019-11-05 2021-06-01 积成电子股份有限公司 一种定制的modbus通信方法及利用该方法的低耦合远动装置
CN112511368A (zh) * 2020-10-16 2021-03-16 深圳市科漫达智能管理科技有限公司 一种服务心跳监控方法及相关装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6389016B1 (en) * 1998-10-14 2002-05-14 Nortel Networks Limited Data communication system and method for transporting data
KR20090057286A (ko) * 2006-09-28 2009-06-04 루센트 테크놀러지스 인크 통신 네트워크 요소를 자동으로 구성하는 기술

Family Cites Families (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3268875B2 (ja) * 1993-02-26 2002-03-25 株式会社野村総合研究所 同報ファイル転送方法およびシステム
JPH0832531A (ja) * 1994-07-20 1996-02-02 Hitachi Ltd 同報通信方式
JP3833746B2 (ja) * 1996-07-31 2006-10-18 株式会社東芝 チェックポイント通信処理システム、及びチェックポイント通信処理方法
US6072857A (en) * 1996-12-19 2000-06-06 Bellsouth Intellectual Property Management Corporation Methods and system for monitoring the operational status of a network component in an advanced intelligent network
US6574234B1 (en) 1997-09-05 2003-06-03 Amx Corporation Method and apparatus for controlling network devices
US6144669A (en) 1997-12-12 2000-11-07 Newbridge Networks Corporation Prioritized PVC management queues for improved frame processing capabilities
US6178439B1 (en) * 1997-12-23 2001-01-23 British Telecommunications Public Limited Company HTTP session control
US8862507B2 (en) * 1999-06-14 2014-10-14 Integral Development Corporation System and method for conducting web-based financial transactions in capital markets
AU6610300A (en) * 1999-07-28 2001-02-19 Terrance A. Tomkow System and method for verifying delivery and integrity of electronic messages
US6631431B1 (en) * 1999-09-15 2003-10-07 Koninklijke Philips Electronics N.V. Semaphore coding method to ensure data integrity in a can microcontroller and a can microcontroller that implements this method
US7107240B1 (en) * 1999-10-06 2006-09-12 Goldman Sachs & Co. Order centric tracking system and protocol for communications with handheld trading units
JP3509847B2 (ja) * 2000-01-20 2004-03-22 日本電気株式会社 Nmsシステムにおける通信の信頼性向上方法及びnmsシステム
US7133407B2 (en) * 2000-01-25 2006-11-07 Fujitsu Limited Data communications system
US6983317B1 (en) * 2000-02-28 2006-01-03 Microsoft Corporation Enterprise management system
US6904593B1 (en) 2000-03-24 2005-06-07 Hewlett-Packard Development Company, L.P. Method of administering software components using asynchronous messaging in a multi-platform, multi-programming language environment
US7539638B1 (en) * 2000-04-10 2009-05-26 Stikine Technology, Llc Representation of order in multiple markets
US8249975B1 (en) * 2000-04-10 2012-08-21 Stikine Technology, Llc Automated first look at market events
US6907044B1 (en) * 2000-08-04 2005-06-14 Intellon Corporation Method and protocol to support contention-free intervals and QoS in a CSMA network
US6744765B1 (en) 2000-08-24 2004-06-01 Sun Microsystems, Inc. Mechanism for completing messages in memory
US8692695B2 (en) * 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
JP2002135350A (ja) * 2000-10-30 2002-05-10 Sony Corp データ配信方法、データ受信方法、端末状態通知サービス提供方法および通信端末
US6615221B2 (en) * 2001-03-09 2003-09-02 Hewlett-Packard Development Company, Lp. Scalable transport layer protocol for multiprocessor interconnection networks that tolerates interconnection component failure
US6782496B2 (en) 2001-04-13 2004-08-24 Hewlett-Packard Development Company, L.P. Adaptive heartbeats
US8473396B2 (en) * 2001-08-14 2013-06-25 Bloomberg L.P. Distribution and mapping of financial records from data stream
JP2003067264A (ja) * 2001-08-23 2003-03-07 Hitachi Ltd ネットワークシステムの監視間隔制御方法
US8090640B2 (en) * 2002-06-05 2012-01-03 The Nasdaq Omx Group, Inc. Order delivery in a securities market
US7747506B2 (en) * 2002-06-05 2010-06-29 The Nasdaq Omx Group, Inc. Recipient status indicator system and method
US8176186B2 (en) * 2002-10-30 2012-05-08 Riverbed Technology, Inc. Transaction accelerator for client-server communications systems
US7720043B2 (en) * 2002-11-20 2010-05-18 Qualcomm Incorporated Use of idle frames for early transmission of negative acknowledgement of frame receipt
JP4167511B2 (ja) * 2003-02-25 2008-10-15 株式会社東芝 伝送路二重化判定処理方法
US20050021836A1 (en) * 2003-05-01 2005-01-27 Reed Carl J. System and method for message processing and routing
US20040236829A1 (en) * 2003-05-13 2004-11-25 Yikang Xu Reliable delivery of multi-cast conferencing data
JP2004364168A (ja) * 2003-06-06 2004-12-24 Daikin Ind Ltd 通信制御装置、通信制御システム及び通信制御方法
CN1820262A (zh) * 2003-06-09 2006-08-16 范拉诺公司 事件监控及管理
JP2005109849A (ja) * 2003-09-30 2005-04-21 Fujitsu Ltd 送信サーバ用データ交換処理プログラムおよび受信サーバ用データ交換処理プログラム
US7778915B2 (en) * 2003-10-14 2010-08-17 Ften, Inc. Financial data processing system
US9350565B1 (en) * 2003-10-14 2016-05-24 Amazon Technologies, Inc. Method and system for reliable distribution of messages
US7355975B2 (en) 2004-04-30 2008-04-08 International Business Machines Corporation Method and apparatus for group communication with end-to-end reliability
US7228331B2 (en) * 2004-05-04 2007-06-05 Nokia, Inc. User oriented penalty count random rejection of electronic messages
US7477749B2 (en) * 2004-05-12 2009-01-13 Nokia Corporation Integrity protection of streamed content
US8949395B2 (en) * 2004-06-01 2015-02-03 Inmage Systems, Inc. Systems and methods of event driven recovery management
GB0414057D0 (en) 2004-06-23 2004-07-28 Koninkl Philips Electronics Nv Method of,and system for,communicating data, and a station for transmitting data
US20060056403A1 (en) * 2004-09-13 2006-03-16 Pleasant Daniel L System and method for robust communication via a non-reliable protocol
US7483943B2 (en) * 2004-09-21 2009-01-27 Microsoft Corporation Reliable messaging using clocks with synchronized rates
US8095601B2 (en) * 2004-10-22 2012-01-10 Microsoft Corporation Inter-proximity communication within a rendezvous federation
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
US8082304B2 (en) * 2004-12-10 2011-12-20 Cisco Technology, Inc. Guaranteed delivery of application layer messages by a network element
US7292665B2 (en) * 2004-12-16 2007-11-06 Genesis Microchip Inc. Method and apparatus for reception of data over digital transmission link
US8700738B2 (en) * 2005-02-01 2014-04-15 Newsilike Media Group, Inc. Dynamic feed generation
US8239449B2 (en) 2005-07-20 2012-08-07 Wms Gaming Inc. Transmission protocol for a gaming system
US9471925B2 (en) * 2005-09-14 2016-10-18 Millennial Media Llc Increasing mobile interactivity
US8200563B2 (en) * 2005-09-23 2012-06-12 Chicago Mercantile Exchange Inc. Publish and subscribe system including buffer
US20070174429A1 (en) * 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
CN101060424A (zh) * 2006-04-21 2007-10-24 英业达股份有限公司 一种实现负载平衡与高可用性的系统及其方法
US7752123B2 (en) * 2006-04-28 2010-07-06 Townsend Analytics Ltd. Order management system and method for electronic securities trading
US7725764B2 (en) * 2006-08-04 2010-05-25 Tsx Inc. Failover system and method
US7434096B2 (en) * 2006-08-11 2008-10-07 Chicago Mercantile Exchange Match server for a financial exchange having fault tolerant operation
US8041985B2 (en) * 2006-08-11 2011-10-18 Chicago Mercantile Exchange, Inc. Match server for a financial exchange having fault tolerant operation
US8015294B2 (en) * 2006-08-22 2011-09-06 Embarq Holdings Company, LP Pin-hole firewall for communicating data packets on a packet network
US9479341B2 (en) * 2006-08-22 2016-10-25 Centurylink Intellectual Property Llc System and method for initiating diagnostics on a packet network node
US9648147B2 (en) * 2006-12-29 2017-05-09 Futurewei Technologies, Inc. System and method for TCP high availability
US20160277261A9 (en) * 2006-12-29 2016-09-22 Prodea Systems, Inc. Multi-services application gateway and system employing the same
KR20090000228A (ko) * 2007-02-05 2009-01-07 삼성전자주식회사 무결성 검증이 가능한 컨텐츠 제공 방법 및 컨텐츠 이용방법과 그 장치
JP4808645B2 (ja) * 2007-02-15 2011-11-02 富士通株式会社 装置監視ネットワークシステム及びsnmpのトラップ管理方法
US7809841B1 (en) 2007-03-29 2010-10-05 Trading Technologies International, Inc. System and method for communicating with an electronic exchange in an electronic trading environment
US7916741B2 (en) * 2007-04-02 2011-03-29 William Marsh Rice University System and method for preventing count-to-infinity problems in ethernet networks
US8275905B2 (en) * 2007-04-17 2012-09-25 Oracle International Corporation System and method for store-and-forward for highly available message production
US8307114B2 (en) * 2007-05-22 2012-11-06 International Business Machines Corporation High availability message transmission
US7782851B2 (en) * 2007-06-26 2010-08-24 At&T Intellectual Property I, L.P. System and method of detecting lost video data packets
US20090018944A1 (en) * 2007-07-13 2009-01-15 Omx Technology Ab Method and system for trading
US8782274B2 (en) * 2007-10-19 2014-07-15 Voxer Ip Llc Method and system for progressively transmitting a voice message from sender to recipients across a distributed services communication network
US7907533B2 (en) 2007-11-28 2011-03-15 Tekelec Methods, systems, and computer program products for performing IP link proving using heartbeat messages
CN101188527B (zh) * 2007-12-24 2012-03-14 杭州华三通信技术有限公司 一种心跳检测方法和装置
FR2926939A1 (fr) * 2008-01-30 2009-07-31 Canon Kk Procede de transmission de donnees avec anticipation des acquittements, dispositif d'entree, produit programme d'ordinateur et moyen de stockage correspondants
US20100325229A1 (en) * 2008-02-08 2010-12-23 Verbal World, Inc. Methods and Apparatus for Exchange of Electronic Communications
JP4964164B2 (ja) * 2008-02-15 2012-06-27 三菱電機株式会社 通信装置の冗長構成制御方法
US7983622B1 (en) * 2008-03-12 2011-07-19 Sprint Spectrum L.P. Using phase difference to determine valid neighbors
US8958460B2 (en) * 2008-03-18 2015-02-17 On-Ramp Wireless, Inc. Forward error correction media access control system
JP4557028B2 (ja) * 2008-03-19 2010-10-06 ソニー株式会社 情報処理装置、情報処理方法、クライアント機器、情報処理システム
US8022822B2 (en) 2008-06-27 2011-09-20 Microsoft Corporation Data collection protocol for wireless sensor networks
US8165080B2 (en) 2008-08-22 2012-04-24 Qualcomm Incorporated Addressing schemes for wireless communication
US9119165B2 (en) * 2009-09-10 2015-08-25 Nextnav, Llc Coding in a wide area positioning system (WAPS)
EP2254046B1 (en) * 2009-05-18 2014-07-30 Amadeus S.A.S. A method and system for managing the order of messages
US8880524B2 (en) 2009-07-17 2014-11-04 Apple Inc. Scalable real time event stream processing
US20110040668A1 (en) * 2009-08-17 2011-02-17 Darren Lee Automated spread trading system
US8417618B2 (en) * 2009-09-03 2013-04-09 Chicago Mercantile Exchange Inc. Utilizing a trigger order with multiple counterparties in implied market trading
US9979589B2 (en) * 2009-12-10 2018-05-22 Royal Bank Of Canada Coordinated processing of data by networked computing resources
US20110178915A1 (en) * 2010-01-15 2011-07-21 Lime Brokerage Holding Llc Trading Order Validation System and Method and High-Performance Trading Data Interface
EP2534622A4 (en) * 2010-02-12 2015-07-15 Mastercard International Inc DEVICE AND METHOD FOR INVOICE PRESENTATION AND PAYMENT
US8595234B2 (en) * 2010-05-17 2013-11-26 Wal-Mart Stores, Inc. Processing data feeds
US8732324B2 (en) * 2010-05-25 2014-05-20 Cisco Technology, Inc. Keep-alive hiatus declaration
US9373102B2 (en) * 2010-07-30 2016-06-21 Mcgraw Hill Financial, Inc. System and method using a simplified XML format for real-time content publication
US8959163B1 (en) * 2010-08-04 2015-02-17 Open Invention Network, Llc Method and apparatus of organizing and delivering data to intended recipients
CN102014416B (zh) * 2010-12-03 2014-07-16 中兴通讯股份有限公司 一种对连接进行双向检测的方法及系统
US10453131B2 (en) * 2011-02-28 2019-10-22 Nyse Group, Inc. Apparatuses, methods and systems for a locked-in trade facilitation engine
US8676937B2 (en) * 2011-05-12 2014-03-18 Jeffrey Alan Rapaport Social-topical adaptive networking (STAN) system allowing for group based contextual transaction offers and acceptances and hot topic watchdogging
US8799135B2 (en) * 2011-06-13 2014-08-05 Trading Technologies International, Inc Generating market information based on causally linked events
US8812708B2 (en) * 2011-07-22 2014-08-19 Cisco Technology, Inc. Transient unpruning for faster layer-two convergence
US8745157B2 (en) 2011-09-02 2014-06-03 Trading Technologies International, Inc. Order feed message stream integrity
US9461876B2 (en) * 2012-08-29 2016-10-04 Loci System and method for fuzzy concept mapping, voting ontology crowd sourcing, and technology prediction

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6389016B1 (en) * 1998-10-14 2002-05-14 Nortel Networks Limited Data communication system and method for transporting data
KR20090057286A (ko) * 2006-09-28 2009-06-04 루센트 테크놀러지스 인크 통신 네트워크 요소를 자동으로 구성하는 기술

Also Published As

Publication number Publication date
US20140344363A1 (en) 2014-11-20
CA2847350A1 (en) 2013-03-07
IL230900A0 (en) 2014-03-31
EP2793417B1 (en) 2018-10-10
US10311518B2 (en) 2019-06-04
US8745157B2 (en) 2014-06-03
HK1255332A1 (zh) 2019-08-16
JP6313842B2 (ja) 2018-04-18
JP2017097889A (ja) 2017-06-01
BR122015015223A2 (pt) 2019-08-27
KR101875915B1 (ko) 2018-07-06
BR122015015215A2 (pt) 2019-08-27
US9154393B2 (en) 2015-10-06
WO2013033416A1 (en) 2013-03-07
SG10201607252VA (en) 2016-10-28
KR20190076077A (ko) 2019-07-01
MX337872B (es) 2016-03-23
US10152751B2 (en) 2018-12-11
US20130060887A1 (en) 2013-03-07
JP2015172963A (ja) 2015-10-01
CN108055169A (zh) 2018-05-18
KR101644996B1 (ko) 2016-08-02
EP3496315A1 (en) 2019-06-12
KR20180078357A (ko) 2018-07-09
CA3027550A1 (en) 2013-03-07
KR20160093103A (ko) 2016-08-05
US20150371331A1 (en) 2015-12-24
HK1202725A1 (en) 2015-10-02
EP2652895A1 (en) 2013-10-23
CN103907306B (zh) 2018-06-05
HK1255333A1 (zh) 2019-08-16
EP2793417A1 (en) 2014-10-22
BR112014004455A2 (pt) 2017-03-28
AU2012301829B2 (en) 2014-09-11
EP2652895B1 (en) 2014-05-14
JP2014529828A (ja) 2014-11-13
JP2018077905A (ja) 2018-05-17
MX2014002222A (es) 2014-05-28
CN108055113A (zh) 2018-05-18
JP5840782B2 (ja) 2016-01-06
SG2014011753A (en) 2014-09-26
CN103907306A (zh) 2014-07-02
BR122015015211A2 (pt) 2019-08-27
JP6091545B2 (ja) 2017-03-08
KR101995058B1 (ko) 2019-07-01
HK1188520A1 (en) 2014-05-02
MX346140B (es) 2017-03-08
US20190236707A1 (en) 2019-08-01
AU2012301829A1 (en) 2013-05-02
CA2847350C (en) 2019-02-12
US20190066210A1 (en) 2019-02-28
ES2488672T3 (es) 2014-08-28

Similar Documents

Publication Publication Date Title
KR101995058B1 (ko) 메시지 스트림 무결성
US20220394111A1 (en) Message processing protocol which mitigates optimistic messaging behavior
AU2016269451B2 (en) Message stream integrity
AU2014265010B2 (en) Message stream integrity

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant