DE69937762T2 - Bidirektionelles Verfahren-zu-Verfahren Bytestromprotokoll - Google Patents

Bidirektionelles Verfahren-zu-Verfahren Bytestromprotokoll Download PDF

Info

Publication number
DE69937762T2
DE69937762T2 DE69937762T DE69937762T DE69937762T2 DE 69937762 T2 DE69937762 T2 DE 69937762T2 DE 69937762 T DE69937762 T DE 69937762T DE 69937762 T DE69937762 T DE 69937762T DE 69937762 T2 DE69937762 T2 DE 69937762T2
Authority
DE
Germany
Prior art keywords
request
messages
client system
response
server system
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Lifetime
Application number
DE69937762T
Other languages
English (en)
Other versions
DE69937762D1 (de
Inventor
Michael D. Palo Alto Dixon
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of DE69937762D1 publication Critical patent/DE69937762D1/de
Application granted granted Critical
Publication of DE69937762T2 publication Critical patent/DE69937762T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/30Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/029Firewall traversal, e.g. tunnelling or, creating pinholes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/324Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the data link layer [OSI layer 2], e.g. HDLC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die Erfindung betrifft das Gebiet der verteilten Computerprogramme. Insbesondere betrifft diese Erfindung die Technik der bidirektionalen Prozess-zu-Prozess-Bytestream-Protokolle.
  • Hintergrund der Technik
  • Fortschritte in der Computertechnologie sowie die Einführung des Internets haben Computerbenutzer dazu befähigt, von Orten, die um die ganze Welt verteilt sind, gemeinsam Computerprogramme auszuführen. Beispiele von verteilten Computerprogrammen umfassen Chaträume, Konferenzführungsprogramme und Spiele-Programme, wobei eine Vielzahl von Computerbenutzern interaktiv Informationen in Echtzeit austauschen können. So kann es ein Chatraum beispielsweise einer Vielzahl von verteilten Benutzern ermöglichen, den Text eines Gespräches anzusehen, wenn dieser durch einen beliebigen der einzelnen verteilten Benutzer getippt wird, eine Konferenzführungsanwendung kann es verteilten Benutzern ermöglichen, gemeinsam ein einzelnes Textdokument zu entwerfen und zu bearbeiten, und Spiele-Programme können es verteilten Benutzern ermöglichen, in einer virtuellen Spieleumgebung gegeneinander zu kämpfen oder zu miteinander zu kollaborieren.
  • Um verteiltes Programmieren durchzuführen, ist es erforderlich, dass zwei einzelne Prozesse einen bidirektionalen Bytestream beibehalten. Ein Prozess betrifft eine aktive Ausführung einer Berechnung auf einem Computer und wird allgemein auch als eine Aufgabe, ein Job oder ein Thread bezeichnet. Verteiltes Programmieren basiert oftmals auf dem Client-Server-Paradigma, bei dem ein Prozess, der auf einem Client-System ausgeführt wird, mit einem Prozess kommunizieren muss, der auf einem Server-System ausgeführt wird.
  • Bei dem Client-Server-Paradigma erstellt ein Client-Prozess Anforderungen für einen Zugriff auf und Informationen von einem Server-Prozess. Ein Client-Prozess und ein Server-Prozess können auf demselben Computersystem ausgeführt werden, oder sie können auch auf getrennten, kommunikativ miteinander gekoppelten Systemen ausgeführt werden. Dort, wo auf ein Server-System über ein Netzwerk, wie beispielsweise dem Internet zugegriffen werden kann, richtet eine enorm große Anzahl von Client-Systemen auf der ganzen Welt Anforderungen an ein Server-System.
  • Kommunikationen zwischen Clients und Servern umfassen oftmals das Übertragen von Daten über verschiedene Medien innerhalb verschiedener Netzwerke oder zwischen verschiedenen Netzwerken. Diese Kommunikationsmedien sind oftmals unzuverlässig. Das Internet hat beispielsweise ein globales Ausmaß und stützt sich auf unzählige einzelne Computer und Verbindungen. Die Störung irgendeines beliebigen Teils des Internets kann nicht vorhergesagt oder verhindert werden, wodurch das Internet inhärent unzuverlässig ist. Der Standard Transmission Control Protocol/Internet Protocol (TCP/IP) umfasst eine Anzahl von Kommunikationsprotokollen, die ausgelegt sind, um trotz der inhärenten Unzuverlässigkeit des Internets Daten auf zuverlässige Weise zu übertragen. Sehr allgemein formuliert, verifiziert das TCP/IP die eintreffenden Daten und führt automatisch eine erneute Übertragung der Segmente durch, die nicht eingetroffen sind. Die meisten verteilten Programme, die über das Internet kommunizieren, verwenden gemäß dem TCP/IP-Protokoll formatierte Nachrichten, um Zuverlässigkeit zu gewährleisten.
  • Zusätzlich zu der Zuverlässigkeit ist die Sicherheit ein großes Problem für Netzwerkbenutzer. Viele Systeme verwenden Firewalls, um selektiv bestimmte Arten von Netzwerkkommunikationen zu blockieren. So verhindern beispielsweise die meisten Firewalls TCP/IP-Kommunikationen, wodurch die bidirektionalen Bytestreams blockiert werden, die allgemein für verteiltes Programmieren verwendet werden.
  • Dementsprechend besteht, um verteiltes Programmieren anwenden zu können, ein Bedarf an einem bidirektionalen, Prozess-zu-Prozess-Bytestream-Protokoll, das eine Firewall durchlaufen kann, das den durch die Firewall bereitgestellten Grad an Sicherheit aufrechterhalten kann und das zuverlässige Kommunikationen über inhärent unzuverlässige Medien bereitstellen kann.
  • Das Dokument EP 0838774 A2 beschreibt ein elektronisches Dokumentübertragungssystem. Ein Dokument wird zu einem entfernten Server weitergeleitet. Der Server sendet eine generische Benachrichtigung hinsichtlich des Dokumentes zu einem beabsichtigen Empfänger, und der Empfänger kann das Dokument von dem Server unter Verwendung von lokalen Protokollen herunterladen. Es werden darüber hinaus ein Verfahren und ein System bereitgestellt, die Dokumente von einem Desktopcomputer in einem Intranet über eine Reihe von Firewalls und/oder Proxy-Servern zu einem Server senden, der im Internet vorhanden ist.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die Erfindung wird durch den Gegenstand der unabhängigen Ansprüche definiert.
  • Bevorzugte Ausführungsformen sind in den abhängigen Ansprüchen spezifiziert.
  • Ein Client-System speichert Nachrichten und sendet die Nachrichten zu einem Server-System. Die Nachrichten sind in einer Anforderung enthalten, die gemäß einem Protokoll formatiert sind, das eine Firewall durchlaufen kann. Das Client-System wartet auf eine Antwort von dem Server-System. Die Antwort ist ebenfalls gemäß dem Protokoll formatiert, das die Firewall durchlaufen kann. Die Antwort enthält eine Anzeige dahingehend, welche Nachrichten das Server-System in der letzten Anforderung von dem Client-System empfangen hat. Wenn sich eine bestimmte Anzahl von Nachrichten an dem Client-System gesammelt hat, oder wenn eine bestimmte Menge an Zeit verstrichen ist, bevor die Antwort empfangen wird, sendet das Client-System eine zweite Anforderung.
  • Das Server-System speichert ebenfalls Nachrichten und sendet die Nachrichten an das Client-System. Das Server-System wartet auf eine erste Anforderung und auf eine zweite Anforderung von dem Client-System. Wenn die erste Anforderung empfangen worden ist und sich eine bestimmte Anzahl von Nachrichten an dem Server-System gesammelt hat, sendet das Server-System eine Antwort, die der ersten Anforderung entspricht. Wenn die zweite Anforderung empfangen wird, sendet das Server-System die Antwort, die der ersten Anforderung entspricht, selbst wenn sich keine Nachrichten gesammelt haben. Die Antwort enthält jegliche gesammelte Nachricht. Das nächste Mal, wenn das Client-System eine Anforderung sendet, enthält die Anforderung eine Anzeige dahingehend, welche Nachrichten das Client-System in der letzten Antwort von dem Server-System empfangen hat.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • In den begleitenden Zeichnungen sind Beispiele der vorliegenden Erfindung illustriert. Die begleitenden Zeichnungen schränken den Umfang der Erfindung jedoch nicht ein. Gleiche Referenznummern in den Zeichnungen bezeichnen ähnliche Elemente.
  • 1 illustriert eine Ausführungsform eines Computernetzwerkes.
  • 2 illustriert eine Ausführungsform eines Client-Systems.
  • 3 illustriert eine Ausführungsform eines Server-Systems.
  • 4 illustriert eine Ausführungsform einer Anforderung die gemäß dem HTTP-Protokoll formatiert ist.
  • 5 illustriert eine Ausführungsform einer Antwort, die gemäß dem HTTP-Protokoll formatiert ist.
  • 6 illustriert den Prozess einer Ausführungsform eines Client-Systems.
  • 7 illustriert den Prozess einer Ausführungsform eines Server-Systems.
  • 8 illustriert eine Ausführungsform eines Hardwaresystems, das arbeitet, um die Funktionen eines Client-Systems oder eines Server-Systems auszuführen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden ausführlichen Beschreibung werden zahlreiche spezifische Einzelheiten dargelegt, um ein tiefgehendes Verständnis der vorliegenden Erfindung zu gewährleisten. Es wird den Personen mit der gewöhnlichen Erfahrung auf dem Gebiet der Technik jedoch offensichtlich sein, dass die vorliegende Erfindung auch ohne diese spezifischen Einzelheiten praktiziert werden kann, und dass die vorliegende Erfindung auch in einer Reihe verschiedener alternativer Ausführungsformen praktiziert werden kann. Ansonsten wurden gut bekannte Verfahren, Prozeduren, Komponenten und Schaltungen nicht auf ausführliche Weise beschrieben.
  • 1 illustriert eine Ausführungsform eines Computernetzwerkes, in dem eine Firewall die Ausführung eines verteilten Computerprogramms beeinträchtigt. Es wird unter Verwendung von Kommunikationen, die gemäß eines Netzwerkprotokolls Transmission Control Protocol/Internet Protocol (TCP/IP) formatiert worden sind, verhindert, dass ein Prozess, der auf einem Client-System 110 ausgeführt wird, mit einem Prozess, der auf einem Server-System 120 ausgeführt wird, kommuniziert. Wie dies im weiteren Verlauf der Beschreibung noch ausführlicher diskutiert wird, macht sich die vorliegende Erfindung jedoch den Vorteil eines allgemeinen Schlupflochs (loop-hole) zu Nutze, um Kommunikationen des TCP/IP-Typs zu erstellen, die Firewalls durchlaufen können.
  • Verteiltes Programmieren umfasst praktisch jede beliebige Art von Client-Server-Interaktion. So kann beispielsweise ein Prozess auf einem Client-System ausgeführt werden, der mit einem anderen Prozess kommuniziert, der auf einem Server-System ausgeführt wird. In bestimmten Anwendungen wird der Client-Prozess als ein Applet (kleines Programm) bezeichnet, und der Server-Prozess wird als ein Servlet bezeichnet. Kommunikationen zwischen den zwei Prozessen umfassen das verteilte Programmieren. Es können mehrere Client-Prozesse gleichzeitig mit einem einzigen Server-Prozess interagieren.
  • In der illustrierten Ausführungsform sind das Client-System 110 und Client-Systeme 145 mit dem Internet 130 gekoppelt. Das Internet 130 enthält das Server-System 120. In einer Ausführungsform führen das Client-System 110, die Client-Systeme 145 und das Server-System 120 gemeinsam ein verteiltes Computerprogramm aus, wobei ein Teil des Programms auf dem Server-System 120 ausgeführt wird, und ein Teil des Programms auf einem jeden der Client-Systeme ausgeführt wird. Abgesehen von den Lehren der vorliegenden Erfindung repräsentieren das Client-System 110, das Server-System 120 und die Client-Systeme 145 ein beliebiges einer Anzahl von verteilten Systemen, die auf dem Gebiet der Technik bekannt sind.
  • Es werden Nachrichten zu einem jeden und von einem jeden der Client-Systeme und zu und von dem Server-System 120 über eine Reihe verschiedener Verbindungen über das Internet 130 gesendet. Mit Ausnahme der Lehren der vorliegenden Erfindung, werden Kommunikationen über das Internet 130 auf eine beliebige einer Anzahl von auf dem Gebiet der Technik bekannten Vorgehensweisen durchgeführt. Das verteilte Programm kann ein beliebiges einer Anzahl von verteilten Programmen, einschließlich Computer-Chaträumen, Konferenzführungsprogrammen und Spiele-Programmen sein.
  • Das Client-System 110 wird durch die Firewall 140 geschützt, die selektiv Kommunikationen, einschließlich gemäß dem TCP/IP-Protokoll 160 formatierter Kommunikationen blockiert, wodurch die Ausführung der meisten verteilten Programme unmöglich wird. Wie dies häufig der Fall ist, ermöglicht die Firewall 140 es den Benutzern des Client-Systems 110 jedoch, Webseiten im Internet 130 zu durchsuchen. Zu diesem Zweck wird das Schlupfloch 150 bereitgestellt, und es ermöglicht es den gemäß dem HyperText Transfer Protocol (HTTP) formatierten Transaktionen, die Firewall zu durchlaufen. HTTP-Transaktionen werden verwendet, um auf Webseiten in dem Internet 130 zuzugreifen. Eine einzelne HTTP-Transaktion besitzt zwei Teile. Der erste Teil der HTTP-Transaktion ist eine HTTP-Anforderung, und sie kann nur durch einen Client initiiert werden. Das Client-System sendet eine HTTP-Anforderung aus, um Zugriff auf eine Webseite anzufordern. Der zweite Teil der Transaktion ist eine HTTP-Antwort. Eine Webseite, die auf einem Server-System positioniert ist, sendet die HTTP-Antwort zurück.
  • Selbst mit dem Schlupfloch 150 gewährleistet die Firewall 140 ein bestimmtes Maß an Sicherheit für das Client-System 110. Das heißt, da HTTP-Transaktionen nur durch Client-Systeme initiiert werden können, kann die Firewall 140 lediglich ausgelegt sein, um abgehende HTTP-Anforderungen zuzulassen und lediglich eingehende HTTP-Antworten zuzulassen, die den abgehenden HTTP-Anforderungen entsprechen. Ein beliebiges einer Anzahl von bekannten Firewall-Sicherheitssystemen mit HTTP-Schlupfloch kann unter Verwendung der vorliegenden Erfindung durchlaufen werden.
  • Wie dies im folgenden Verlauf der Beschreibung auf ausführlichere Weise diskutiert wird, verwendet die vorliegende Erfindung das Schlupfloch 150, um eine TCP/IP-ähnliche Verbindung zwischen dem Client-System 110 und dem Server-System 120 zu schaffen, indem Nachrichten als gemäß dem HTTP-Protokoll formatierte Anforderungen ausgesendet werden und die Nachrichten als gemäß dem HTTP-Protokoll formatierte Antworten wieder empfangen werden. Auf diese Weise hält die vorliegende Erfindung den Grad an Sicherheit aufrecht, der durch die Firewall 140 gewährleistet wird, während eine Verbindung eines TCP/IP-Typs bereitgestellt wird.
  • 2 zeigt eine Ausführungsform des Client-Systems 110 und der Firewall 140. Das Client-System 110 enthält den Client-Prozess 210, den Speicher 220 und ein HTTP-Gateway 230, das wie dargestellt gekoppelt ist. Das HTTP-Gateway 230 repräsentiert ein beliebiges einer Anzahl von HTTP-Gateways, die auf dem Gebiet der Technik bekannt sind und wird durch das Client-System 110 für das Durchsuchen des Webs (Web Browsing) im Internet verwendet. Der Client-Prozess 210 ist der Abschnitt eines verteilten Programms, der auf dem Client-System 110 ausgeführt wird. Wenn es sich nicht um die Firewall 140 handeln würde, könnte der Client-Prozess 210 unter Verwendung des TCP/IP-Protokolls 160 mit dem Server-System 120 kommunizieren. So verwendet beispielsweise das verteilte Programm, das in der voranstehend als Referenz herangezogenen Patentanmeldung beschrieben ist, ein asynchrones TCP/IP-Protokoll, in dem Nachrichten von dem Client-System 110 oder dem Server-System 120 initiiert werden können. In dem illustrierten Beispiel verhindert jedoch die Firewall 140 TCP/IP-Kommunikationen. In diesen Fall kann das Client-System 110 über das HTTP-Schlupfloch 150 auf Kommunikationen umschalten.
  • Das Client-System 110 kann die Firewall 140 auf irgendeinen beliebigen von mehreren unterschiedlichen Wegen automatisch erkennen. So könnte das Client-System 110 beispielsweise eine gemäß dem TCP/IP-Protokoll formatierte Anforderung zu dem Server-System 120 senden, in der eine Antwort von dem Server-System 120 angefordert wird. Wenn innerhalb eines bestimmten Zeitrahmens keine Antwort empfangen würde, könnte das Client-System 110 eine Unterbrechung einlegen und eine gemäß einem HTTP-Protokoll formatierte Anforderung, die durch das Schlupfloch 150 gesendet worden ist, testen.
  • 3 illustriert eine Ausführungsform des Server-Systems 120. Das Server-System 120 enthält einen Server-Prozess 310, einen Speicher 320 und einen HTTP-Server 330, die wie dargestellt gekoppelt sind. In einer Ausführungsform umfasst der HTTP-Server 330 eine dedizierte Software, um die Rolle eines HTTP-Servers zu spielen, jedoch ist er speziell ausgelegt, um Nachrichten ohne den auf dem Gebiet der Technik bekannten Overhead von HTTP-Servern in Übertragungen einzufügen. Alternativ dazu kann der HTTP-Server 330 einen beliebigen einer Anzahl von auf dem Gebiet der Technik bekannten HTTP-Servern, die ein Common Gateway Interface, CGI (eine Allgemeine Vermittlungsrechner-Schnittstelle) besitzen, repräsentieren. Software kann ein Common Gateway Interface (CGI) verwenden, um HTTP-Transaktionen in Übereinstimmung mit den Lehren der vorliegenden Erfindung zu modifizieren.
  • Der Server-Prozess 310 ist der Abschnitt des verteilten Programms, der auf dem Server-System 120 ausgeführt wird. Der Server-Prozess 310 kann unter Verwendung von TCP/IP-Kommunikationen mit einem beliebigen einer Anzahl von Client-Systemen 145 kommunizieren. Die Firewall 140 verhindert jedoch, dass der Server-Prozess 310 unter Verwendung des TCP/IP-Protokolls 160 mit dem Client-System 110 kommuniziert. Wie das Client-System 110, könnte das Server-System 120 die Firewall 140 mit irgendeiner beliebigen von mehreren unterschiedlichen Vorgehensweisen erfassen. Das Server-System 120 kann jedoch keine HTTP-Transaktion initiieren, und deshalb wartet es auf eine HTTP-Anforderung von dem Client-System 110.
  • Da HTTP-Transaktionen notwendigerweise Transaktionen sind, die aus zwei Teilen bestehen, die durch einen Client initiiert werden, sind HTTP-Kommunikationen tendenziell etwas langsamer und umständlicher als die meisten gemäß einem TCP/IP-Protokoll formatierten Kommunikationen. Dementsprechend werden aller Wahrscheinlichkeit nach verteilte Programme zuerst den Versuch für eine TCP/IP-Verbindung unternehmen. Wenn dies nicht gelingt, speichern das Client-System 110 und das Server-System 120 gemäß dem TCP/IP-Protokoll formatierte Nachrichten und senden Sätze von Nachrichten in Bündeln, um die Häufigkeit von HTTP-Transaktionen zu reduzieren, wodurch der Durchsatz erhöht wird, um diesen dem Durchsatz der TCP/IP-Verbindungen anzunähern. Da darüber hinaus die Internetverbindungen inhärent unzuverlässig sind, setzen das Client-System 110 und das Server-System 120 das Speichern der Nachrichten, selbst nachdem diese gesendet worden sind, fort, um eine Zuverlässigkeit zu gewährleisten. Nachrichten werden erst bei Benachrichtigung durch das andere System dahingehend, dass die Nachrichten korrekt empfangen worden sind, aus ihren jeweiligen Speichern entfernt.
  • In 2 führt das Client-System 110 diese Funktionen durch Speichern der Nachrichten von dem Client-Prozess 210 in dem Speicher 220 durch. Von dort aus werden die Nachrichten in ein Bündel gruppiert und über das HTTP-Gateway 230, durch das HTTP-Schlupfloch 150 in der Firewall und weiter zu dem Server-System 120 gesendet. Wenn eine entsprechende HTTP-Antwort von dem Server-System 120 empfangen wird, kommt die Antwort zurück durch das Schlupfloch 150, zu dem HTTP-Gateway 230 und weiter zu dem Client-Prozess 210.
  • In 3 speichert das Server-System 120 Nachrichten von dem Server-Prozess 310 in dem Speicher 320. Nachdem eine Anforderung eingeht, gruppiert das Server-System 120 in dem Speicher 320 gespeicherte Nachrichten in ein Bündel und fügt diese Nachrichten über den HTTP-Server 330 in eine gemäß dem HTTP-Protokoll formatierte Antwort ein. Jegliche Nachrichten, die zusammen mit der Anforderung eintreffen, werden dem Server-Prozess 310 bereitgestellt.
  • Da jede HTTP-Transaktion aus einer Anforderung und einer entsprechenden Antwort besteht, und da eine HTTP-Transaktion durch ein Client-System initiiert wird, verlassen sich beide Systeme auf das jeweils andere System, um die Kommunikationsleitungen offen zu halten. Das heißt, das Server-System 120 kann nur antworten, nachdem es eine Anforderung empfangen hat. Damit die HTTP-Verbindung wie eine bidirektionale TCP/IP-Verbindung arbeiten kann, bei der sowohl das Client-System 110 als auch das Server-System 120 in der Lage sein können, Übertragungen zu initiieren, müssen das Client-System 110 und das Server-System 120 zusammenarbeiten, um eine Anforderung offen stehen zu lassen.
  • In einer Ausführungsform sendet das Client-System 110 eine erste Anforderung, die jegliche in dem Speicher 220 gespeicherte Nachrichten bis zu einer maximalen Bündelgröße enthält. Das Client-System 110 verbleibt jedoch nicht untätig im Ruhezustand und wartet auf eine Antwort von dem Server-System 120. Stattdessen setzt das Client-System 110 das Speichern von zusätzlichen Nachrichten, insofern vorhanden, fort und sendet eine weitere Anforderung bei Auftreten von einem von drei Ereignissen.
  • Wenn sich erstens eine bestimmte Anzahl von zusätzlichen Nachrichten in dem Speicher 220 sammelt, sendet das Client-System 110 eine zweite Anforderung, die die zu sätzlichen Nachrichten enthält. So kann beispielsweise eine maximale Bündelgröße zehn Nachrichten groß sein, und sobald sich zehn Nachrichten gesammelt haben, sendet das Client-System 110 eine zweite Anforderung, die die 10 zusätzlichen Nachrichten enthält.
  • Wenn zweitens eine bestimmte Menge an Zeit verstrichen ist, ohne dass eine Antwort empfangen worden ist, sendet das Client-System eine zweite Anforderung, selbst wenn sich keine zusätzlichen Nachrichten gesammelt haben, einschließlich irgendwelcher gespeicherten Nachrichten. Wenn beispielsweise eine Anforderung in einem unzuverlässigen Netzwerk verloren geht, kann eine Antwort möglicherweise niemals empfangen werden. Das Client-System 110 kann beispielsweise eine Sekunde lang eine Unterbrechung einlegen und von der Annahme ausgehen, dass ein Fehler aufgetreten ist. In dem Fall, in dem die erste Anforderung fünf Nachrichten enthielt und sich drei zusätzliche Nachrichten gesammelt haben, bevor das Client-System 110 eine Unterbrechung eingelegt hat, wird das Client-System 110 eine zweite Anforderung senden, die alle acht Nachrichten enthält.
  • Wenn drittens das Client-System 110 eine Antwort von einem Server-System 120 empfängt, sendet das Client-System 110 eine zweite Anforderung. In diesem dritten Fall kann, in Abhängigkeit von den Faktoren wie beispielsweise die verfügbare Bandbreite und die Anzahl von angesammelten zusätzlichen Nachrichten, das Client-System 110 die zweite Anforderung direkt bei Empfang der Antwort von dem Server-System 120 senden, oder das Client-System 120 kann sich um eine kurze Zeitperiode verzögern, um es mehr Nachrichten zu ermöglichen, sich zu sammeln.
  • Auf der Server-Seite der Transaktion muss das Server-System 120 warten, um eine erste Anforderung zu empfangen. Während das Server-System 120 wartet, speichert es abgehende Nachrichten. Wenn ein Server-System 120 eine erste Anforderung empfängt, antwortet das Server-System 120 möglicherweise nicht sofort. Wenn sich zuerst eine bestimmte Anzahl von Nachrichten gesammelt hat, oder wenn zu irgendeinem Zeitpunkt, nachdem die Anforderung empfangen wird, sich die bestimmte Anzahl von Nachrichten sammelt, dann sendet das Server-System 120 eine Antwort. Wenn die maximale Bündelgröße beispielsweise bei 10 Nachrichten liegt, und das Server-System 120 10 Nachrichten gespeichert hat, wenn die erste Anforderung empfangen wird, ant wortet das Server-System 120 sofort. Wenn jedoch die Anzahl von Nachrichten geringer ist als die bestimmte Anzahl von Nachrichten, wartet das Server-System 120 darauf, dass sich mehr Nachrichten sammeln, oder darauf, dass eine zweite Anforderung eintrifft. Wenn eine zweite Anforderung empfangen wird, sendet das Server-System 120 eine Antwort, die der ersten Anforderung entspricht, und es wird jegliche Nachrichten, die sich gesammelt haben, bis zum Erreichen der maximalen Bündelgröße einschließen, selbst wenn sich keine Nachrichten gesammelt haben. So wie dies mit dem Client-System 110 der Fall ist, kann in Abhängigkeit von Faktoren wie beispielsweise die verfügbare Bandbreite und die Anzahl von sich gesammelten Nachrichten, das Server-System 120 bei Empfang der zweiten Anforderung sofort antworten, oder das Server-System 120 kann sich um eine kurze Zeitperiode verzögern, um es mehr Nachrichten zu ermöglichen, sich zu sammeln.
  • Während des Betriebs kann eine Reihe von fehlerfreien Übertragungen auf die folgende Weise ablaufen. Das Client-System 110 sendet eine erste Anforderung. Das Server-System 120 empfängt die erste Anforderung, antwortet jedoch nicht. Eine kurze Zeit später sendet das Client-System 110 eine zweite Anforderung. Das Server-System 120 antwortet auf die erste Anforderung, nachdem die zweite Anforderung empfangen wird. Das Client-System 110 setzt das Senden von mehr Anforderungen fort, und für jede neue Anforderung antwortet das Server-System 120 auf die vorhergehende Anforderung. Auf diese Weise arbeiten das Client-System 110 und das Server-System 120 zusammen, um eine Anforderung an dem Server-System 120 so offen stehen zu lassen, dass das Server-System 120 immer antworten kann.
  • In verschiedenen Ausführungsformen können die Verzögerung und die maximale Anzahl von Nachrichten in einem Bündel optimiert werden, um einen größeren Durchsatz zu erzielen und um den Durchsatz an den einer TCP-/IP-Verbindung anzunähern. Die Implementierung kann für Anwendungen höherer Ebenen wie beispielsweise den Client-Prozess 210 und den Server-Prozess 310 transparent sein. So kann beispielsweise eine Anwendung, die unter der Annahme einer direkten TCP/IP-Verbindung zwischen dem Client-System 110 und dem Server-System 120 geschrieben worden ist, so umgeschaltet werden, dass sie das HTTP-Protokoll verwendet, wobei keine Veränderungen an dem Anwendungscode oder dem Anwendungsverhalten auftreten und wobei für viele Anwendungen lediglich eine verschwindend geringe Leistungsverschlechterung verursacht wird.
  • In alternativen Ausführungsformen kann das Server-System 120 mehr als eine offen stehende Anforderung halten, so dass beispielsweise das Server-System 120 mehrere Antworten dicht aufeinanderfolgend senden kann, um einen großen Datenblock bearbeiten zu können. Die Anzahl von Anforderungen, die offen stehend durch das Server-System 120 gehalten wird, ist jedoch durch Faktoren beschränkt, wie beispielsweise die Größe des Speichers in dem Client-System 110, die Zeitdauer, bevor das Client-System 110 eine Unterbrechung einlegt, sowie die maximale Bündelgröße. Da beispielsweise Nachrichten nur bei Benachrichtigung dahingehend, dass die Nachrichten empfangen worden sind, aus dem Speicher entfernt werden, sammeln sich Nachrichten in dem Speicher 220 an, wenn keine Antworten empfangen werden. Darüber hinaus legt das Client-System 120 eine Unterbrechung ein und sendet Nachrichten erneut, wenn es von der Annahme ausgeht, dass ein Fehler aufgetreten ist. Wenn die Anzahl von gesammelten Nachrichten die maximale Bündelgröße übersteigt, könnte die Anzahl an Anforderungen, die ein Client-System 110 sendet, schnell ansteigen, wodurch unnötigerweise Bandbreite verschwendet wird.
  • 4 illustriert eine Ausführungsform einer HTTP-Anforderung auf ausführlichere Weise. Eine HTTP-Anforderung enthält Header-Informationen, die sie als eine HTTP-Anforderung identifizieren, das Ziel der Anforderung spezifizieren und verschiedene zusätzliche Charakteristiken spezifizieren. Auf den Header können Daten in jeglichem beliebigen Format folgen. In der illustrierten Ausführungsform enthalten die Daten ein Präfix, das anzeigt, welche Nachrichten, insofern vorhanden, das Client-System 110 in der letzten Antwort von dem Server-System 120 empfangen hat. Hierbei zeigt das Präfix an, dass das Client-System 110 Nachrichten 1 über N in der letzten Antwort empfangen hat. Nach dem Präfix enthält die Anforderung auch Kopien sämtlicher Nachrichten 1 über M, die in dem Speicher 220 gespeichert sind. Wenn die Anforderung durch das Server-System 120 empfangen wird, stellt das Server-System 120 Nachrichten 1 über M dem Server-Prozess 310 bereit. Das Server-System 120 entfernt darüber hinaus Nachrichten 1 über N von den in dem Speicher 320 gespeicherten Nachrichten und sendet lediglich die verbleibenden Nachrichten, wenn welche vorhanden, in der nächsten Antwort.
  • 5 illustriert eine Ausführungsform einer HTTP-Antwort. Wie dies bei der Anforderung der Fall ist, enthält die Antwort Header-Informationen, die sie als eine HTTP-Antwort identifizieren, die einer bestimmten HTTP-Anforderung entspricht, die das Ziel der Antwort spezifizieren und die verschiedene zusätzliche Charakteristiken der Antwort spezifizieren. Auf den Header können Daten in einem beliebigen Format folgen. In der illustrierten Ausführungsform enthalten die Daten ein Präfix, das anzeigt, welche Nachrichten, wenn welche vorhanden, das Server-System 120 in der letzten Anforderung empfangen hat. Hierbei zeigt das Präfix an, dass das Server-System 120 Nachrichten 1 über M in der letzten Anforderung empfangen hat. Nach dem Präfix enthält die Antwort auch Kopien der Nachrichten 1 über N, die in dem Speicher 320 gespeichert sind. Wenn die Antwort durch das Client-System 110 empfangen wird, stellt das Client-System 110 dem Client-Prozess 210 Nachrichten 1 über N bereit, entfernt Nachrichten 1 über M von den in dem Speicher 220 gespeicherten Nachrichten und sendet nur die verbleibenden Nachrichten, wenn vorhanden, in der nächsten Anforderung.
  • Keines der Systeme entfernt eine Nachricht aus seinem Speicher, bevor nicht eine Anzeige dahingehend empfangen wird, dass die Nachricht empfangen worden ist. Darüber hinaus sendet, wie dies voranstehend beschrieben worden ist, das Client-System 110 eine Anforderung, wenn eine Antwort nicht innerhalb einer bestimmten Menge an Zeit empfangen wird. Wenn beispielsweise eine Anforderung aus irgendeinem Grund niemals das Server-System 120 erreicht, sendet das Client-System 110 eine weitere Anforderung, die dieselben Nachrichten sowie jegliche zusätzliche Nachrichten, die sich möglicherweise gesammelt haben, enthält. Wenn auf ähnliche Weise niemals eine Antwort eintrifft, sendet das Client-System 110 eine weitere Anforderung, und das Server-System 120 sendet eine weitere Antwort, die dieselben Nachrichten sowie jegliche zusätzliche Nachrichten, die sich möglicherweise gesammelt haben, enthält. Wenn darüber hinaus eine Anforderung oder eine Antwort empfangen wird, die Nachrichten jedoch nicht gelesen werden können, zeigt das entsprechende zurückgesendete Präfix an, dass die Nachrichten nicht gelesen werden konnten, und die Nachrichten werden erneut gesendet. Auf diese Weise stellt die vorliegende Erfindung eine zuverlässige Nachrichtenübertragung verglichen mit den inhärent unzuverlässigen Kommunikationsmedien bereit.
  • 6 illustriert die Prozedur, die durch eine Ausführungsform des Client-Systems 110 ausgeführt wird. In Block 610 sendet das Client-System 110 eine HTTP-Anforderung, die Kopien von jeglichen in dem Speicher 220 gespeicherten Nachrichten, ebenso wie einen Indikator dahingehend enthält, welche Nachrichten, falls irgendwelche vorhanden, das Client-System 110 in der letzten Antwort empfangen hat. Wenn eine Anforderung eine erste Anforderung ist, die letzte Antwort keinerlei Nachrichten enthielt, oder wenn die Nachrichten von der letzten Antwort nicht gelesen werden konnten, dann zeigt der Indikator an, dass null Nachrichten empfangen wurden. Während das Client-System 110 auf den Empfang einer Antwort wartet, werden zusätzliche abgehende Nachrichten, wenn irgendwelche vorhanden sind, in den Blöcken 620 und 630 in dem Speicher 220 gespeichert. Wenn sich eine bestimmte Anzahl von Nachrichten gesammelt hat, geht das Client-System 110 zum Block 640 über. Wenn keine Antwort empfangen worden ist, wird in Block 640 kein Schritt unternommen, und das Client-System 110 kehrt zum Block 610 zurück und sendet eine weitere Anforderung, die die zusätzlichen Nachrichten enthält. Wenn beispielsweise die maximale Bündelgröße zehn Nachrichten groß ist und sich zehn zusätzliche Nachrichten gesammelt haben, wird eine weitere Anforderung gesendet, die die zehn Nachrichten enthält.
  • Wenn in Block 630 eine Antwort empfangen wird, bevor sich eine bestimmte Anzahl von Nachrichten gesammelt hat, fährt der Prozess erneut mit Block 640 fort. Wenn eine Antwort empfangen wird, enthält die Antwort ein Präfix und beliebige Nachrichten, die von dem Server-System 120 gesendet worden sind. Das Präfix zeigt an, welche Nachrichten, falls vorhanden, das Server-System 120 in der letzten Anforderung empfangen hat. Wenn die Anforderung keine Nachrichten enthielt, oder wenn ein Fehler aufgetreten ist und keine Nachricht gelesen werden konnte, zeigt das Präfix null Nachrichten an. Das Client-System 110 entfernt jegliche angezeigte Nachricht aus dem Speicher 220 in Block 640. Jegliche Nachrichten, die in der Antwort enthalten sind, werden auch dem Client-Prozess 210 bereitgestellt. Anschließend kehrt die Vorgehensweise zurück zum Block 610, und eine neue Anforderung wird gesendet, die ein Präfix und jegliche beliebige gespeicherte Nachrichten enthält.
  • Wie dies voranstehend diskutiert worden ist, kann, in Abhängigkeit von Faktoren wie die verfügbare Bandbreite und die Anzahl der gespeicherten Nachrichten, das Client-System 110 eine Anforderung unmittelbar bei Empfang einer Antwort senden, oder es kann sich um eine Zeitperiode verzögern, um es mehr Nachrichten zu ermöglichen, sich zu sammeln.
  • Das Client-System kann in Block 630 eine Unterbrechung einlegen, bevor eine Antwort empfangen wird, oder sich ein Bündel an zusätzlichen Nachrichten sammelt. Selbst wenn beispielsweise die maximale Bündelgröße beispielsweise zehn Nachrichten groß ist und sich lediglich drei gesammelt haben, wird das Client-System 110 nach einer bestimmten Menge an Zeit eine Unterbrechung einlegen. Möglicherweise ist ein Fehler aufgetreten, oder das Server-System 120 wartet möglicherweise auf eine zweite Anforderung. In beiden Fällen fährt das Client-System 110 mit Block 640 fort. Da keine Antwort empfangen worden ist, wird in Block 640 kein Schritt unternommen, da keine Nachrichten bestimmt worden sind, und keine Nachrichten empfangen worden sind. Stattdessen fährt das Client-System 110 mit Block 610 fort und sendet jegliche gespeicherte Nachrichten, einschließlich der Nachrichten, die in der ersten Anforderung gesendet worden sind, bis eine maximale Bündelgröße erreicht ist. Wenn die Anzahl der sich gesammelten Nachrichten die maximale Bündelgröße überschreitet, sendet das Client-System 110 möglicherweise mehr als eine Anforderung. Darüber hinaus zeigt das Client-System 110 möglicherweise an, dass eine Verbindung fehlgeschlagen ist, nachdem eine bestimmte Anzahl von Anforderungen gesendet worden ist, ohne dass eine Antwort empfangen wurde.
  • 7 illustriert die Prozedur, die durch eine Ausführungsform des Server-Systems 120 ausgeführt wird. In Block 710 speichert das Server-System abgehende Nachrichten, falls welche vorhanden sind, und wartet auf eine erste Anforderung in Block 720. Wenn eine erste Anforderung empfangen wird, enthält die Anforderung ein Präfix, das anzeigt, welche Nachrichten, falls welche vorhanden sind, das Client-System 110 in der letzten Antwort empfangen hat. Wenn die letzte Antwort keinerlei Nachrichten enthalten hat, oder wenn ein Fehler aufgetreten ist und keine Nachricht gelesen werden konnte, zeigt das Präfix an, dass null Nachrichten empfangen wurden. Die Anforderung enthält darüber hinaus jegliche Nachrichten, die von dem Client-System 110 gesendet worden sind. In Block 730 entfernt das Server-System 120 jegliche angezeigte Nachrichten von denjenigen, die in dem Speicher 320 gespeichert sind und stellt dem Server-Prozess 310 jegliche eingehende Nachricht bereit. Anschließend behält das Server-System 120 die erste Anforderung so lange ein, bis eine zweite Anforderung in Block 740 empfangen wird, oder bis sich eine bestimmte Anzahl von Nachrichten in den Blöcken 741 und 745 gesammelt hat. Wenn beispielsweise die maximale Bündelgröße zehn Nachrichten beträgt und sich zehn Nachrichten gesammelt haben, wird in diesem Fall das Server-System 120 von dem Block 741 auf den Block 744 übergehen, obgleich eine zweite Anforderung nicht empfangen worden ist. In Block 744 sendet das Server-System 120 eine Antwort, die der ersten Anforderung, die die gespeicherten Nachrichten enthält, entspricht und kehrt zu Block 710 zurück, um auf eine weitere erste Anforderung zu warten.
  • Wenn in Block 740 eine zweite Anforderung empfangen wird, fährt das Server-System 120 mit Block 750 selbst dann fort, wenn sich keine Nachrichten gesammelt haben. In Block 750 wird jegliche angezeigte Nachricht aus dem Speicher 320 entfernt, und es wird jegliche eingehende Nachricht dem Server-Prozess 310 bereitgestellt. In Block 760 wird eine Antwort, die der ersten Anforderung entspricht, gesendet, einschließlich jeglicher gespeicherter Nachrichten. Das Server-System 120 kehrt zurück zu Block 740, um auf eine weitere Anforderung oder ein volles Bündel an Nachrichten zu warten. Wenn eine weitere Anforderung empfangen wird, behält das Client-System 120 bereits eine Anforderung ein, dementsprechend wird die neue Anforderung wie eine zweite Anforderung behandelt, und das Client-System 120 wird über den Block 750 fortfahren und in Block 760 eine weitere Antwort aussenden. Darüber hinaus kann, so lange wie eine Anforderung in Block 740 einbehalten wird, zu jeglichem beliebigen Zeitpunkt, wenn sich ein Bündel an Nachrichten sammelt, das Server-System 120 eine Antwort ausgeben, die der einbehaltenen Anforderung entspricht.
  • Wie dies voranstehend diskutiert worden ist, kann in Abhängigkeit mit solchen Faktoren wie die verfügbare Bandbreite und die Anzahl der gespeicherten Nachrichten das Server-System 120 eine Antwort sofort bei Empfang einer zweiten Anforderung senden, oder es kann sich um eine Zeitperiode verzögern, um es mehr Nachrichten zu ermöglichen, sich zu sammeln. Darüber hinaus wird in bestimmten Ausführungsformen das Server-System 120 eine Unterbrechung einlegen, wenn eine Anforderung nicht innerhalb eines bestimmten Zeitrahmen empfangen worden ist, wobei in diesem Fall das Server-System 120 anzeigen kann, dass eine Verbindung fehlgeschlagen ist.
  • Wenn die HTTP-Verbindung zwischen dem Client-System 110 und dem Server-System 120 hergestellt ist, können beide Systeme die Verbindung mit einer beliebigen einer An zahl von Vorgehensweisen trennen. So könnte beispielsweise eine Anforderung oder eine Antwort eine vorgegebene Beendigungsnachricht enthalten.
  • In alternativen Ausführungsformen können die Anzeigen dahingehend, welche Nachrichten in der letzten Übertragung empfangen worden sind, auf eine beliebige Weise bereitgestellt werden, so lange wie die geeigneten Informationen bereitgestellt werden und die Informationen durch das geeignete System identifiziert werden. So könnte beispielsweise ein Suffix verwendet werden, oder Nachrichten könnten einzeln nummeriert sein, statt in einem Bereich spezifiziert zu sein, so dass einzeln verlorene Nachrichten identifiziert werden könnten.
  • Es kann eine beliebige Anzahl von Hardwaresystemen verwendet werden, um die Funktionen des Client-Systems 110 oder des Server-Systems 120 durchzuführen. So kann beispielsweise jedes System durch eine breit angelegte Kategorie an auf dem Gebiet der Technik bekannten Computersystemen repräsentiert werden, so beispielsweise durch ein Computersystem, das mit einem Hochleistungs-Mikroprozessor(en), wie beispielsweise dem Pentium®-Prozessor, dem Pentium-Prozprozessor, oder dem Pentium®-II-Prozessor, hergestellt und im Allgemeinen erhältlich von der Intel Corporation von Santa Clara, Kalifornien, oder dem Alpha®-Prozessor, der durch Digital Equipment Corporation von Maynard, Massachusetts, hergestellt wird.
  • 8 illustriert eine Ausführungsform eines geeigneten Hardwaresystems 800. In der illustrierten Ausführungsform enthält das Hardwaresystem 800 den Mikroprozessor 810, der mit dem Hochleistungs-Bus 805 gekoppelt ist, der mit dem Eingabe-/Ausgabebus (I/O-Bus) 815 über den Busbrückenschalter 830 gekoppelt ist. Der temporäre Speicher 820 ist mit dem Bus 105 gekoppelt. Der Dauerspeicher 840 ist mit dem Bus 815 gekoppelt. Die Anzeigevorrichtung 870, die Tastatur 880, die Kommunikationsschnittstelle 850 und eine Universal-Eingabe-/Ausgabeschnittstelle (I/O) 860 sind allesamt mit dem Bus 815 gekoppelt. Die Kommunikationsschnittstelle 850 kann das Hardwaresystem 800 mit dem Internet 130 koppeln. Die Universal-Eingabe-/Ausgabeschnittstelle (I/O) 860 kann das Hardwaresystem 800 mit einer beliebigen einer Anzahl von externen Vorrichtungen koppeln.
  • Bestimmte Ausführungsformen können zusätzliche Komponenten umfassen und erfordern möglicherweise nicht alle der voranstehenden Komponenten oder können eine oder mehrere Komponenten kombinieren. So kann beispielsweise der temporäre Speicher 820 auf einem Chip mit dem Mikroprozessor 810 sein. Alternativ dazu kann der Dauerspeicher 820 mit einem elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), wie beispielsweise einem Flash-Speicher ersetzt werden, wobei die Software-Routinen vor Ort von dem EEPROM ausgeführt werden. Einige Implementierungen können einen einzelnen Bus verwenden, mit dem alle der Komponenten gekoppelt sind oder eine Anzahl von zusätzlichen Busse. Darüber hinaus können zusätzliche Komponenten in dem Hardwaresystem enthalten sein, so wie beispielsweise zusätzliche Prozessoren, Speichervorrichtungen wie eine CD-ROM, Speicher oder andere Peripheriekomponenten, die auf dem Gebiet der Technik bekannt sind.
  • In einer Ausführungsform werden die Prozeduren des Client-Systems 110 oder des Server-Systems 120, wie dies voranstehend beschrieben worden ist, als eine Reihe von Software-Routinen, die auf dem Hardware-System 800 laufen, implementiert. Diese Software-Routinen umfassen eine Vielzahl oder eine Reihe von Anweisungen, die durch einen Mikroprozessor in einem Hardwaresystem ausgeführt werden sollen, wie beispielsweise den Mikroprozessor 810. Zu Beginn kann die Reihe an Anweisungen auf einer Speichervorrichtung, wie beispielsweise einem Dauerspeicher 840 gespeichert werden. Hierbei sollte beachtet werden, dass jedoch die Reihe von Anweisungen unter Verwendung eines herkömmlichen Speichermediums, wie beispielsweise einer Diskette, einer CD-ROM, eines Magnetbandes, einer Digital Video oder Digital Versstile Disk (DVD), einer Laserplatte, eines Festwertspeichers ROM, eines Flash-Speichers, und so weiter, gespeichert werden kann. Darüber hinaus sollte beachtet werden, dass die Reihe an Anweisungen nicht lokal gespeichert werden muss und von einer entfernten Speichervorrichtung empfangen werden kann, wie beispielsweise einem anderen Server-System auf einem beliebigen einer Anzahl von Netzwerken, einer CD-ROM-Vorrichtung, einer Diskette, und so weiter. Die Anweisungen können von der Speichervorrichtung in den temporären Speicher 820 kopiert werden, und anschließend kann auf sie zugegriffen werden, und sie können durch den Mikroprozessor 810 ausgeführt werden. In einer Implementierung werden diese Software-Routinen in der JAVATM–Programmiersprache geschrieben. Hierbei sollte jedoch beachtet werden, dass diese Routinen in einer belie bigen einer großen Bandbreite verschiedener Programmiersprachen implementiert werden kann.
  • In alternativen Ausführungsformen werden das Client-System 110 oder das Server-System 120 in separater Hardware oder Firmenware implementiert. So könnten beispielsweise eine oder mehrere anwendungsspezifische integrierte Schaltungen (ASIC – application specific integrated circuit) mit den voranstehend beschriebenen Funktionen des Client-Systems 110 oder dem Server-System 120 programmiert werden. In einem weiteren Beispiel könnten das Client-System 110 oder das Server-System 120 in einer oder mehreren ASICs auf einer zusätzlichen Schaltplatte implementiert werden, und die Schaltplatte könnte in das Hardwaresystem 800 eingesetzt werden.
  • Die vorliegende Erfindung hat einen breit gefächerten Anwendungsbereich. So kann sie beispielsweise durch praktisch jedes beliebige virtuelle Programm verwendet werden, um praktisch jede beliebige Firewall zu durchlaufen, wodurch gemäß HTTP-Protokoll formatierte Transaktionen ermöglicht werden. Darüber hinaus kann die vorliegende Erfindung jedes beliebige Protokollformat verwenden, dem es gestattet ist, bidirektionale Kommunikationen von hinter einer Firewall aus zu initiieren. HTTP/1.0 ist lediglich ein solches Format. HTTP/1.0 und andere solcher Formate können ebenfalls verwendet werden.
  • Die vorliegende Erfindung kann auf eine Reihe verschiedener von verteilten Programmen angewendet werden, die auf einer Reihe verschiedener Netzwerke einschließlich Intranets ausgeführt werden. Darüber hinaus kann die vorliegende Erfindung durch eine Vielzahl von Client-Systemen gleichzeitig verwendet werden, um durch eine Vielzahl von Firewalls auf einen oder mehrere Server zuzugreifen. Dementsprechend bezieht sich entsprechend dem Ziel dieses Patentes der Begriff Client-System auf ein beliebiges System, das Anforderungen an ein beliebiges anderes System richtet. Auf ähnliche Weise bezieht sich der Begriff Server-System auf ein beliebiges System, an das Anforderungen gerichtet werden. Ein System kann gleichzeitig sowohl ein Client-System als auch ein Server-System sein.
  • Dementsprechend werden ein Verfahren und eine Vorrichtung beschrieben, die es verteilten Programmen ermöglichen, Firewalls zu durchlaufen. Obgleich viele Änderungen und Modifizierungen der vorliegenden Erfindung für eine Person mit der gewöhnlichen Erfahrung auf dem Gebiet der Technik offensichtlich sind, nachdem sie die voranstehende Beschreibung gelesen hat, sollte beachtet werden, dass mit den bestimmten Ausführungsformen, die illustrativen Sinne gezeigt und beschrieben worden sind, keinesfalls beabsichtigt wird, das diese im einschränkenden Sinne erachtet werden. Dementsprechend ist es nicht beabsichtigt, dass die Referenzen im Hinblick auf Einzelheiten der bestimmten Ausführungsformen den Umfang der Ansprüche beschränken.
  • Im Folgenden wird eine Liste mit weiteren Ausführungsformen der Erfindung angeführt:
  • Ausführungsform 1.
  • Ein Verfahren, das Folgendes umfasst:
    Speichern eines ersten Satzes von wenigstens einer Nachricht an einem Client-System;
    Senden einer ersten Anforderung zu einem Server-System, wobei die erste Anforderung eine Kopie des ersten Satzes von Nachrichten enthält; und
    Warten auf den Empfang einer ersten Antwort an dem Client-System von dem Server-System, wobei die erste Antwort eine erste Anzeige dahingehend enthält, welche Nachrichten des ersten Satzes von Nachrichten von dem Client-System in der ersten Anforderung empfangen wurden, wobei die Anforderungen und die Antworten gemäß einem ersten Protokoll formatiert sind, wobei das Protokoll so arbeitet, dass es eine Firewall durchläuft.
  • Ausführungsform 2.
  • Das Verfahren gemäß Ausführungsform 1, das des Weiteren umfasst:
    Speichern von null bis N ersten zusätzlichen Nachrichten an dem Client-System;
    Senden einer zweiten Anforderung zu dem Server-System, wenn sich eine bestimmte Anzahl der ersten zusätzlichen Nachrichten sammelt, wobei die zweite Anforderung eine Kopie der ersten zusätzlichen Nachrichten enthält, die an dem Client-System gespeichert sind;
    Senden der zweiten Anforderung zu dem Server-System, wenn eine bestimmte Zeit verstreicht, bevor die erste Antwort empfangen wird, wobei die zweite Anforderung eine Kopie des ersten Satzes von Nachrichten und eine Kopie der ersten zusätzlichen Nachrichten enthält, die an dem Client-System gespeichert sind;
    Entfernen der ersten angezeigten Nachrichten von dem Client-System, wenn die erste Antwort empfangen wird; und
    Senden der zweiten Anforderung zu dem Server-System, wenn die erste Antwort empfangen wird, wobei die zweite Anforderung eine Kopie von beliebigen Nachrichten, die an dem Client-System gespeichert sind, enthält.
  • Ausführungsform 3.
  • Das Verfahren gemäß Ausführungsform 2, das des Weiteren umfasst:
    Speichern eines zweiten Satzes von wenigstens einer Nachricht an dem Server-System; Warten auf den Empfang der ersten Anforderung und der zweiten Anforderung von dem Client-System;
    Senden der ersten Antwort zu dem Client-System, wenn die erste Anforderung empfangen wird, und wenn sich eine bestimmte Anzahl des zweiten Satzes an Nachrichten an dem Server-System sammelt, wobei die erste Antwort des Weiteren eine Kopie des zweiten Satzes an Nachrichten enthält; und
    Senden der ersten Antwort zu dem Client-System, wenn die zweite Anforderung empfangen wird, wobei die erste Antwort eine Kopie des zweiten Satzes an Nachrichten enthält, und die erste Antwort der ersten Anforderung entspricht.
  • Ausführungsform 4.
  • Das Verfahren gemäß Ausführungsform 3, das des Weiteren umfasst:
    Senden einer dritten Anforderung zu dem Server-System in Reaktion auf den Empfang der ersten Antwort, wobei die dritte Anforderung eine zweite Anzeige dahingehend enthält, welche Nachrichten des zweiten Satzes an Nachrichten von dem Server-System empfangen wurden.
  • Ausführungsform 5.
  • Das Verfahren gemäß Ausführungsform 4, das des Weiteren umfasst:
    Speichern von null bis M zweiten zusätzlichen Nachrichten an dem Server-System; Warten, um die dritte Anforderung von dem Client-System zu empfangen;
    Entfernen der zweiten angezeigten Nachrichten von dem Server-System in Reaktion auf den Empfang der dritten Anforderung; und
    Senden einer zweiten Antwort zu dem Client-System in Reaktion auf den Empfang der dritten Anforderung, wobei die zweite Antwort eine Kopie von beliebigen Nachrichten, die an dem Server-System gespeichert sind, enthält und die zweite Antwort der zweiten Anforderung entspricht.
  • Ausführungsform 5.
  • Das Verfahren gemäß Ausführungsform 1, wobei die Firewall Kommunikationen, die gemäß einem zweiten Protokoll formatiert sind, zwischen dem Client-System und dem Server-System verhindert.
  • Ausführungsform 7.
  • Das Verfahren gemäß Ausführungsform 6, wobei das erste Protokoll ein HyperText Transfer Protocol (HTTP) und das zweite Protokoll ein Transmission Control Protocol/Internet Protocol (TCP/IP) ist.
  • Ausführungsform 8.
  • Das Verfahren gemäß Ausführungsform 6, wobei das Speichern, Senden und Warten automatisch in Reaktion auf die Erfassung der Firewall durchgeführt werden.
  • Ausführungsform 9.
  • Eine Vorrichtung, die Folgendes umfasst:
    ein Client-System zum Speichern von Nachrichten, zum Senden einer Anforderung zu einem Server-System, wobei die Anforderung eine Kopie der Nachrichten enthält, und
    zum Empfangen einer Antwort an dem Client-System von dem Server-System, wobei die Antwort eine Anzeige dahingehend enthält, welche der enthaltenen Nachrichten von dem Client-System in der Anforderung empfangen wurden, wobei die Anforderung und die Antwort gemäß einem Protokoll formatiert werden, wobei das Protokoll so arbeitet, dass es eine Firewall durchläuft.
  • Ausführungsform 10.
  • Die Vorrichtung gemäß Ausführungsform 9, wobei das Client-System Folgendes enthält:
    einen Speicher zum Speichern der Nachrichten; und
    einen Client-Prozess zum Senden der Anforderung und Empfangen der Antwort über ein HyperTextTransfer Protocol-(HTTP) Gateway.
  • Ausführungsform 11.
  • Maschinenlesbares Speichermedium, auf dem durch Maschinen ausführbare Befehle gespeichert sind, wobei die Ausführung der Befehle ein Verfahren implementiert, das Folgendes umfasst:
    Speichern eines Satzes von wenigstens einer Nachricht an einem Client-System;
    Senden einer Anforderung zu einem Server-System, wobei die Anforderung eine Kopie des Satzes von Nachrichten enthält; und
    Warten auf den Empfang einer Antwort von dem Server-System an dem Client-System, wobei die Antwort eine Anzeige dahingehend enthält, welche Nachrichten des Satzes an Nachrichten von dem Client-System in der Anforderung empfangen wurden, wobei die Anforderung und die Antwort gemäß einem Protokoll formatiert sind, wobei das Protokoll so arbeitet, dass es eine Firewall durchläuft.
  • Wichtiger Hinweis:
  • Obgleich die angehängten Ansprüche einen bevorzugten Aspekt der vorliegenden Erfindung betreffen, behält sich der Anmelder das Recht vor, zu einem späteren Zeitpunkt eine oder mehrere Teilanmeldungen für andere Aspekte, die in der Anmeldung offenbart sind, einzureichen. Jene weiteren Anmeldungen werden von der vorliegenden Teilanmeldung getrennt sein. Mit dieser Ankündigung wird die Öffentlichkeit hiermit darüber in Kenntnis gesetzt, dass weitere Teilanmeldungen, die einen unterschiedlichen Gegenstand betreffen, folgen können.

Claims (6)

  1. Verfahren, das umfasst: Speichern (710) eines ersten Satzes einer oder mehrerer abgehender Nachrichten an einem Server-System; Warten (720) auf den Empfang einer ersten Anforderung und einer zweiten Anforderung von einem Client-System; Empfangen der ersten Anforderung von dem Client-System; Senden (744) einer ersten Antwort zu dem Client-System, wenn die erste Anforderung empfangen wird und sich eine bestimmte Anzahl abgehender Nachrichten an dem Server-System sammelt, oder Senden (760) der ersten Antwort zu dem Client-System, wenn die zweite Anforderung empfangen wird, wobei die erste Antwort eine Kopie des ersten Satzes abgehender Nachrichten enthält und der ersten Anforderung entspricht, und die Anforderungen sowie Antworten gemäß einem Protokoll formatiert sind und das Protokoll so arbeitet, dass es eine Firewall durchläuft.
  2. Verfahren nach Anspruch 1, wobei die erste Anforderung eine Kopie eines zweiten Satzes einer oder mehrerer Nachrichten enthält, die an dem Client-System gespeichert sind, und die erste Antwort eine Anzeige dahingehend enthält, welche Nachrichten des zweiten Satzes von Nachrichten von dem Client-System in der ersten Anforderung empfangen wurden.
  3. Verfahren nach Anspruch 1, das des Weiteren umfasst: Speichern zusätzlicher Nachrichten an dem Server-System; Warten auf den Empfang einer dritten Anforderung von dem Client-System, wobei die dritte Anforderung eine Anzeige dahingehend enthält, welche Nachrichten des ersten Satzes von Nachrichten durch das Client-System empfangen wurden; Entfernen der angezeigten Nachrichten aus dem Server-System in Reaktion auf den Empfang der dritten Anforderung; und Senden einer zweiten Antwort zu dem Client-System in Reaktion auf den Empfang der dritten Anforderung, wobei die zweite Antwort eine Kopie jeglicher Nachrichten enthält, die an dem Server-System gespeichert sind, und die zweite Antwort der zweiten Anforderung entspricht.
  4. Vorrichtung, die umfasst: ein Server-System (120), das so eingerichtet ist, dass es einen ersten Satz einer oder mehrerer abgehender Nachrichten speichert und eine erste Anforderung sowie eine zweite Anforderung von einem Client-System (110) empfängt, wobei das Server-System so eingerichtet ist, dass es eine erste Antwort zu dem Client-System sendet, wenn sich eine bestimmte Anzahl abgehender Nachrichten an dem Server-System sammelt, oder die erste Antwort in Reaktion auf den Empfang der zweiten Anforderung zu dem Client-System sendet, wobei die erste Antwort eine Kopie des ersten Satzes abgehender Nachrichten enthält und der ersten Anforderung entspricht und des Weiteren die erste sowie die zweite Anforderung und die Antwort gemäß einem Protokoll formatiert sind und das Protokoll so arbeitet, dass es eine Firewall durchläuft.
  5. Vorrichtung nach Anspruch 4, wobei das Server-System (120) enthält: einen Speicher (320) zum Speichern der Nachrichten, und einen Server-Prozess (310) zum Empfangen der ersten und der zweiten Anforderung und zum Senden der Antwort über einen HTTP (HyperText Transfer Protocol)-Server.
  6. Maschinenlesbares Speichermedium, auf dem ein Computerprogramm gespeichert ist, das Befehle umfasst, die, wenn sie durch einen Computer ausgeführt werden, den Computer veranlassen, jeden der Verfahrensschritte nach Anspruch 1 durchzuführen.
DE69937762T 1998-06-09 1999-06-09 Bidirektionelles Verfahren-zu-Verfahren Bytestromprotokoll Expired - Lifetime DE69937762T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/094,388 US6289461B1 (en) 1998-06-09 1998-06-09 Bi-directional process-to-process byte stream protocol
US94388 1998-06-09

Publications (2)

Publication Number Publication Date
DE69937762D1 DE69937762D1 (de) 2008-01-24
DE69937762T2 true DE69937762T2 (de) 2008-11-27

Family

ID=22244874

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69937762T Expired - Lifetime DE69937762T2 (de) 1998-06-09 1999-06-09 Bidirektionelles Verfahren-zu-Verfahren Bytestromprotokoll
DE69939067T Expired - Lifetime DE69939067D1 (de) 1998-06-09 1999-06-09 Bidirektionelles verfahren-zu-verfahren bytestromprotokoll

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE69939067T Expired - Lifetime DE69939067D1 (de) 1998-06-09 1999-06-09 Bidirektionelles verfahren-zu-verfahren bytestromprotokoll

Country Status (9)

Country Link
US (2) US6289461B1 (de)
EP (2) EP1125207B1 (de)
JP (2) JP4537579B2 (de)
AT (2) ATE381193T1 (de)
AU (1) AU4558699A (de)
CA (1) CA2334971C (de)
DE (2) DE69937762T2 (de)
HK (1) HK1039189B (de)
WO (1) WO1999064958A1 (de)

Families Citing this family (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6088515A (en) 1995-11-13 2000-07-11 Citrix Systems Inc Method and apparatus for making a hypermedium interactive
US7555529B2 (en) * 1995-11-13 2009-06-30 Citrix Systems, Inc. Interacting with software applications displayed in a web page
US6289461B1 (en) * 1998-06-09 2001-09-11 Placeware, Inc. Bi-directional process-to-process byte stream protocol
US6338086B1 (en) * 1998-06-11 2002-01-08 Placeware, Inc. Collaborative object architecture
US6409602B1 (en) * 1998-11-06 2002-06-25 New Millenium Gaming Limited Slim terminal gaming system
US6751670B1 (en) 1998-11-24 2004-06-15 Drm Technologies, L.L.C. Tracking electronic component
US6928469B1 (en) 1998-12-29 2005-08-09 Citrix Systems, Inc. Apparatus and method for determining a program neighborhood for a client node in a client-server network using markup language techniques
US7127515B2 (en) * 1999-01-15 2006-10-24 Drm Technologies, Llc Delivering electronic content
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
JP3446946B2 (ja) * 1999-05-12 2003-09-16 日本電気株式会社 データ通信システム及びタイムスロット割当方法並びにタイムスロット割当制御プログラムを格納した記憶媒体
US6424993B1 (en) * 1999-05-26 2002-07-23 Respondtv, Inc. Method, apparatus, and computer program product for server bandwidth utilization management
US7620980B1 (en) * 1999-07-21 2009-11-17 Sun Microsystems, Inc. Secure data broker
US20060195400A1 (en) * 2000-10-13 2006-08-31 Patrick Patterson Controlling access to electronic content
US7171473B1 (en) * 1999-11-17 2007-01-30 Planet Exchange, Inc. System using HTTP protocol for maintaining and updating on-line presence information of new user in user table and group table
US6496925B1 (en) 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
US7856633B1 (en) 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US7139743B2 (en) 2000-04-07 2006-11-21 Washington University Associative database scanning and information retrieval using FPGA devices
US8095508B2 (en) 2000-04-07 2012-01-10 Washington University Intelligent data storage and processing using FPGA devices
US6711558B1 (en) 2000-04-07 2004-03-23 Washington University Associative database scanning and information retrieval
US6809749B1 (en) * 2000-05-02 2004-10-26 Oridus, Inc. Method and apparatus for conducting an interactive design conference over the internet
EP1161048A3 (de) * 2000-05-19 2005-02-16 Attachmate Corporation System und Verfahren zur gesicherte duplex Browserskommunikation über unterschiedliche Netzwerke
US7020773B1 (en) * 2000-07-17 2006-03-28 Citrix Systems, Inc. Strong mutual authentication of devices
US7117239B1 (en) 2000-07-28 2006-10-03 Axeda Corporation Reporting the state of an apparatus to a remote computer
US7185014B1 (en) * 2000-09-22 2007-02-27 Axeda Corporation Retrieving data from a server
US8108543B2 (en) 2000-09-22 2012-01-31 Axeda Corporation Retrieving data from a server
US7028051B1 (en) * 2000-09-29 2006-04-11 Ugs Corp. Method of real-time business collaboration
US6986040B1 (en) 2000-11-03 2006-01-10 Citrix Systems, Inc. System and method of exploiting the security of a secure communication channel to secure a non-secure communication channel
US20020169879A1 (en) * 2001-05-10 2002-11-14 Kobus Jooste Method and apparatus for firewall-evading stealth protocol
US20050198379A1 (en) 2001-06-13 2005-09-08 Citrix Systems, Inc. Automatically reconnecting a client across reliable and persistent communication sessions
US7716330B2 (en) * 2001-10-19 2010-05-11 Global Velocity, Inc. System and method for controlling transmission of data packets over an information network
US7254601B2 (en) 2001-12-20 2007-08-07 Questra Corporation Method and apparatus for managing intelligent assets in a distributed environment
US7421515B2 (en) * 2002-01-17 2008-09-02 Hewlett-Packard Development Company, L.P. Method and system for communications network
US7661129B2 (en) 2002-02-26 2010-02-09 Citrix Systems, Inc. Secure traversal of network components
US7984157B2 (en) 2002-02-26 2011-07-19 Citrix Systems, Inc. Persistent and reliable session securely traversing network components using an encapsulating protocol
US8135843B2 (en) * 2002-03-22 2012-03-13 Citrix Systems, Inc. Methods and systems for providing access to an application
US6983020B2 (en) * 2002-03-25 2006-01-03 Citrix Online Llc Method and apparatus for fast block motion detection
US7178149B2 (en) 2002-04-17 2007-02-13 Axeda Corporation XML scripting of soap commands
US7711844B2 (en) 2002-08-15 2010-05-04 Washington University Of St. Louis TCP-splitter: reliable packet monitoring methods and apparatus for high speed networks
US7346669B2 (en) * 2002-12-19 2008-03-18 Intel Corporation Method, apparatus and system for processing message bundles on a network
MY141160A (en) * 2003-01-13 2010-03-31 Multimedia Glory Sdn Bhd System and method of preventing the transmission of known and unknown electronic content to and from servers or workstations connected to a common network
US7966418B2 (en) 2003-02-21 2011-06-21 Axeda Corporation Establishing a virtual tunnel between two computer programs
EP1618478A4 (de) * 2003-03-13 2007-10-03 Drm Technologies L L C Sicherer strömungsbehälter
US10572824B2 (en) 2003-05-23 2020-02-25 Ip Reservoir, Llc System and method for low latency multi-functional pipeline with correlation logic and selectively activated/deactivated pipelined data processing engines
JP2006526227A (ja) 2003-05-23 2006-11-16 ワシントン ユニヴァーシティー Fpgaデバイスを使用するインテリジェントデータ記憶および処理
US20050010961A1 (en) * 2003-06-02 2005-01-13 Hagen David A. System for providing live and pre-recorded audio-video content to a plurality of portals over the Internet
US20050030892A1 (en) * 2003-06-23 2005-02-10 Hagen David A. System for providing network load distribution
EP1503286B1 (de) * 2003-07-30 2014-09-03 Jaluna SA Vernetzung mehrerer Betriebssysteme
US7558842B2 (en) * 2003-10-17 2009-07-07 E2Open, Inc. Large file transfer in a design collaboration environment
US7421741B2 (en) * 2003-10-20 2008-09-02 Phillips Ii Eugene B Securing digital content system and method
US7602785B2 (en) * 2004-02-09 2009-10-13 Washington University Method and system for performing longest prefix matching for network address lookup using bloom filters
US7500108B2 (en) 2004-03-01 2009-03-03 Microsoft Corporation Metered execution of code
JP4505257B2 (ja) * 2004-05-12 2010-07-21 京セラ株式会社 放送受信機能付き携帯電話機
US7853676B1 (en) * 2004-06-10 2010-12-14 Cisco Technology, Inc. Protocol for efficient exchange of XML documents with a network device
US8200828B2 (en) 2005-01-14 2012-06-12 Citrix Systems, Inc. Systems and methods for single stack shadowing
US8230096B2 (en) 2005-01-14 2012-07-24 Citrix Systems, Inc. Methods and systems for generating playback instructions for playback of a recorded computer session
US20060159432A1 (en) 2005-01-14 2006-07-20 Citrix Systems, Inc. System and methods for automatic time-warped playback in rendering a recorded computer session
US8935316B2 (en) 2005-01-14 2015-01-13 Citrix Systems, Inc. Methods and systems for in-session playback on a local machine of remotely-stored and real time presentation layer protocol data
US8296441B2 (en) 2005-01-14 2012-10-23 Citrix Systems, Inc. Methods and systems for joining a real-time session of presentation layer protocol data
EP1859378A2 (de) 2005-03-03 2007-11-28 Washington University Verfahren und vorrichtung zur durchführung einer biosequenz-ähnlichkeitssuche
US7725595B1 (en) * 2005-05-24 2010-05-25 The United States Of America As Represented By The Secretary Of The Navy Embedded communications system and method
US8788619B2 (en) 2005-10-25 2014-07-22 International Business Machines Corporation Method and infrastructure for accessing remote applications through a secure firewall
US7702629B2 (en) * 2005-12-02 2010-04-20 Exegy Incorporated Method and device for high performance regular expression pattern matching
US7954114B2 (en) * 2006-01-26 2011-05-31 Exegy Incorporated Firmware socket module for FPGA-based pipeline processing
US8379841B2 (en) 2006-03-23 2013-02-19 Exegy Incorporated Method and system for high throughput blockwise independent encryption/decryption
US7636703B2 (en) * 2006-05-02 2009-12-22 Exegy Incorporated Method and apparatus for approximate pattern matching
US7921046B2 (en) 2006-06-19 2011-04-05 Exegy Incorporated High speed processing of financial information using FPGA devices
US7840482B2 (en) 2006-06-19 2010-11-23 Exegy Incorporated Method and system for high speed options pricing
WO2008022036A2 (en) * 2006-08-10 2008-02-21 Washington University Method and apparatus for protein sequence alignment using fpga devices
US8370479B2 (en) 2006-10-03 2013-02-05 Axeda Acquisition Corporation System and method for dynamically grouping devices based on present device conditions
US7660793B2 (en) * 2006-11-13 2010-02-09 Exegy Incorporated Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
US8326819B2 (en) 2006-11-13 2012-12-04 Exegy Incorporated Method and system for high performance data metatagging and data indexing using coprocessors
US8065397B2 (en) 2006-12-26 2011-11-22 Axeda Acquisition Corporation Managing configurations of distributed devices
US8103783B2 (en) 2007-03-12 2012-01-24 Citrix Systems, Inc. Systems and methods of providing security and reliability to proxy caches
US8037126B2 (en) 2007-03-12 2011-10-11 Citrix Systems, Inc. Systems and methods of dynamically checking freshness of cached objects based on link status
US8504775B2 (en) 2007-03-12 2013-08-06 Citrix Systems, Inc Systems and methods of prefreshening cached objects based on user's current web page
US7783757B2 (en) 2007-03-12 2010-08-24 Citrix Systems, Inc. Systems and methods of revalidating cached objects in parallel with request for object
US7584294B2 (en) 2007-03-12 2009-09-01 Citrix Systems, Inc. Systems and methods for prefetching objects for caching using QOS
US8701010B2 (en) 2007-03-12 2014-04-15 Citrix Systems, Inc. Systems and methods of using the refresh button to determine freshness policy
US7809818B2 (en) 2007-03-12 2010-10-05 Citrix Systems, Inc. Systems and method of using HTTP head command for prefetching
US7720936B2 (en) 2007-03-12 2010-05-18 Citrix Systems, Inc. Systems and methods of freshening and prefreshening a DNS cache
US20080228864A1 (en) * 2007-03-12 2008-09-18 Robert Plamondon Systems and methods for prefetching non-cacheable content for compression history
TW200847711A (en) * 2007-05-31 2008-12-01 Wistron Corp Method and related system for building up a network connection between clients and servers through a stream fork by utilizing http protocol
EP2186250B1 (de) 2007-08-31 2019-03-27 IP Reservoir, LLC Verfahren und vorrichtung für hardware-beschleunigte verschlüsselung/entschlüsselung
US8024407B2 (en) * 2007-10-17 2011-09-20 Citrix Systems, Inc. Methods and systems for providing access, from within a virtual world, to an external resource
US10229453B2 (en) * 2008-01-11 2019-03-12 Ip Reservoir, Llc Method and system for low latency basket calculation
US8374986B2 (en) 2008-05-15 2013-02-12 Exegy Incorporated Method and system for accelerated stream processing
CN101729434B (zh) * 2008-10-10 2012-05-23 中兴通讯股份有限公司 消息交互的实现方法和融合业务系统
JP5871619B2 (ja) 2008-12-15 2016-03-01 アイ・ピー・リザブワー・エル・エル・シー 金融市場深度データの高速処理のための方法および装置
CN101860459B (zh) * 2009-04-07 2012-08-29 鸿富锦精密工业(深圳)有限公司 网络装置及其连线状态侦测方法
US9473460B2 (en) * 2009-06-22 2016-10-18 Microsoft Technology Licensing, Llc Using hypertext transfer protocol as a transport for bi-directional data streams
JP5429003B2 (ja) * 2010-03-30 2014-02-26 富士通株式会社 情報処理装置、通信制御方法及び通信制御プログラム
JP6045505B2 (ja) 2010-12-09 2016-12-14 アイピー レザボア, エルエルシー.IP Reservoir, LLC. 金融市場における注文を管理する方法および装置
US9355180B2 (en) * 2011-02-07 2016-05-31 Microsoft Technology Licensing, Llc Name-based customization of executables from web
US8615159B2 (en) 2011-09-20 2013-12-24 Citrix Systems, Inc. Methods and systems for cataloging text in a recorded session
US9344514B2 (en) * 2011-10-26 2016-05-17 Viagenie Method and proxy for transporting IP payloads over a delay-tolerant network (DTN)
US9047243B2 (en) 2011-12-14 2015-06-02 Ip Reservoir, Llc Method and apparatus for low latency data distribution
US9990393B2 (en) 2012-03-27 2018-06-05 Ip Reservoir, Llc Intelligent feed switch
US10650452B2 (en) 2012-03-27 2020-05-12 Ip Reservoir, Llc Offload processing of data packets
US10121196B2 (en) 2012-03-27 2018-11-06 Ip Reservoir, Llc Offload processing of data packets containing financial market data
US11436672B2 (en) 2012-03-27 2022-09-06 Exegy Incorporated Intelligent switch for processing financial market data
US10133802B2 (en) 2012-10-23 2018-11-20 Ip Reservoir, Llc Method and apparatus for accelerated record layout detection
US9633093B2 (en) 2012-10-23 2017-04-25 Ip Reservoir, Llc Method and apparatus for accelerated format translation of data in a delimited data format
EP2912579B1 (de) 2012-10-23 2020-08-19 IP Reservoir, LLC Verfahren und vorrichtung zur beschleunigten formatübersetzung von daten in einem begrenzten datenformat
GB2541577A (en) 2014-04-23 2017-02-22 Ip Reservoir Llc Method and apparatus for accelerated data translation
US10942943B2 (en) 2015-10-29 2021-03-09 Ip Reservoir, Llc Dynamic field data translation to support high performance stream data processing
EP3560135A4 (de) 2016-12-22 2020-08-05 IP Reservoir, LLC Rohrleitungen zum hardware-beschleunigten maschinellen lernen
CN114553806B (zh) * 2022-02-21 2023-09-05 深圳平安智慧医健科技有限公司 一种即时通讯的优化方法、装置、设备及存储介质

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5430876A (en) 1989-06-27 1995-07-04 Digital Equipment Corporation Remote procedure callback system and method
US5163055A (en) * 1990-06-27 1992-11-10 Telefonaktiebolaget Lm Ericsson Communications system using a fault tolerant protocol
JPH05344148A (ja) * 1992-06-05 1993-12-24 Nippon Denki Joho Service Kk 電子メール装置
US5499343A (en) 1993-12-17 1996-03-12 Taligent, Inc. Object-oriented networking system with dynamically configurable communication links
US5550848A (en) * 1994-05-13 1996-08-27 Lucent Technologies Inc. Signaling protocol for a noisy communications channel
US5732219A (en) * 1995-03-17 1998-03-24 Vermeer Technologies, Inc. Computer system and computer-implemented process for remote editing of computer files
US5774479A (en) * 1995-03-30 1998-06-30 Motorola, Inc. Method and system for remote procedure call via an unreliable communication channel using multiple retransmission timers
US5721908A (en) * 1995-06-07 1998-02-24 International Business Machines Corporation Computer network for WWW server data access over internet
US5713017A (en) * 1995-06-07 1998-01-27 International Business Machines Corporation Dual counter consistency control for fault tolerant network file servers
US5850517A (en) * 1995-08-31 1998-12-15 Oracle Corporation Communication link for client-server having agent which sends plurality of requests independent of client and receives information from the server independent of the server
JP3441306B2 (ja) * 1995-09-12 2003-09-02 株式会社東芝 クライアント装置、メッセージ送信方法、サーバ装置、ページ処理方法及び中継サーバ装置
JPH0991219A (ja) * 1995-09-28 1997-04-04 Mitsubishi Electric Corp 障害監視システム
EP0786880B1 (de) * 1996-01-23 2006-09-20 Ntt Mobile Communications Network Inc. Kommunikationsanordnung und Übertragungsstation mit Fehlerdetektion und Wiederübertragung
US5826014A (en) * 1996-02-06 1998-10-20 Network Engineering Software Firewall system for protecting network elements connected to a public network
US5815665A (en) * 1996-04-03 1998-09-29 Microsoft Corporation System and method for providing trusted brokering services over a distributed network
CA2253867A1 (en) * 1996-05-07 1997-11-13 Webline Communications Corporation Method and apparatus for coordinating internet multi-media content with telephone and audio communications
US5935211A (en) * 1996-07-10 1999-08-10 Microsoft Corporation Distributed notification
US5944823A (en) * 1996-10-21 1999-08-31 International Business Machines Corporations Outside access to computer resources through a firewall
TW400487B (en) * 1996-10-24 2000-08-01 Tumbleweed Software Corp Electronic document delivery system
US5778174A (en) * 1996-12-10 1998-07-07 U S West, Inc. Method and system for providing secured access to a server connected to a private computer network
US5805803A (en) * 1997-05-13 1998-09-08 Digital Equipment Corporation Secure web tunnel
US6457054B1 (en) * 1997-05-15 2002-09-24 Intel Corporation System for reducing user-visibility latency in network transactions
US6289461B1 (en) * 1998-06-09 2001-09-11 Placeware, Inc. Bi-directional process-to-process byte stream protocol
US6338086B1 (en) * 1998-06-11 2002-01-08 Placeware, Inc. Collaborative object architecture
DE10038557B4 (de) * 2000-08-03 2005-12-15 Siemens Ag System und Verfahren zur Übertragung von Daten über Datennetze, insbesondere Internet, mit asynchroner Datenverbindung
JP2002223483A (ja) * 2000-11-09 2002-08-09 Yamatake Corp 遠隔管理システム
JP2003281005A (ja) * 2002-03-27 2003-10-03 Matsushita Electric Ind Co Ltd 発呼サーバー装置および端末装置
JP2004227121A (ja) * 2003-01-21 2004-08-12 Toshiba Corp サーバ装置、通信制御システム、通信方法及びサーバプログラム

Also Published As

Publication number Publication date
EP1633109B1 (de) 2007-12-12
US20010056547A1 (en) 2001-12-27
JP2002517857A (ja) 2002-06-18
DE69937762D1 (de) 2008-01-24
HK1039189B (zh) 2009-05-08
JP4929371B2 (ja) 2012-05-09
EP1125207B1 (de) 2008-07-09
ATE381193T1 (de) 2007-12-15
EP1633109A1 (de) 2006-03-08
JP2010250834A (ja) 2010-11-04
HK1039189A1 (en) 2002-04-12
JP4537579B2 (ja) 2010-09-01
CA2334971A1 (en) 1999-12-16
WO1999064958A1 (en) 1999-12-16
AU4558699A (en) 1999-12-30
US6289461B1 (en) 2001-09-11
EP1125207A1 (de) 2001-08-22
DE69939067D1 (de) 2008-08-21
CA2334971C (en) 2005-04-05
US7103799B2 (en) 2006-09-05
EP1125207A4 (de) 2005-10-05
ATE400847T1 (de) 2008-07-15

Similar Documents

Publication Publication Date Title
DE69937762T2 (de) Bidirektionelles Verfahren-zu-Verfahren Bytestromprotokoll
DE60308700T2 (de) Dynamische fernkonfiguration eines webservers zur bereitstellung von kapazität auf anfrage
DE60114097T2 (de) Verfahren und System zur Verbesserung der Netzleistungsfähigkeit unter Verwendung eines leistungssteigernden Proxies
DE60028897T2 (de) Verfahren und Vorrichtung zur Umschaltung zwischen zwei Netzwerkzugangstechnologien ohne Unterbrechung der aktiven Netzwerkanwendungen
DE602004001312T2 (de) Publikations-Abonnementsystem
DE69919994T2 (de) Reduzierter paketkopf im drahtlosen nachrichtennetz
DE69928408T2 (de) Virtuelle transportschicht-schnittstelle und nachrichten untersystem für hochgeschwindigkeit-datenübertragung zwischen heterogenen computersystemen
DE19882235B4 (de) Verwendung von Web-Technologie für Teilnehmerverwaltungsaktivitäten
DE69818232T2 (de) Verfahren und system zur verhinderung des herunterladens und ausführens von ausführbaren objekten
DE69825801T2 (de) Vorrichtung und Verfahren zur Ermöglichung gleichranginger Zugangskontrolle in einem Netz
DE69922690T2 (de) Fehlertolerante netze
DE69838262T2 (de) Allgemeine benutzer-authentifizierung für netz-rechner
DE60216918T2 (de) Verfahren und computersystem zur auswahl eines randservercomputers
DE69829361T2 (de) Automatische erkennung von protokollen in einem netzwerk
DE60123486T2 (de) System und Verfahren für die Bereitstellung von über das Internet gesendeten, auf einer hierarchischen Struktur basierenden Daten
DE60213391T2 (de) Persönlicher Firewall mit Positionsdetektion
DE69823368T2 (de) Verfahren und system zur identifizierung und unterdrückung von ausführbaren objekten
DE10116640A1 (de) Auf URL beruhende Token für schwierige Verteilungen, die einen serverseitigen Cookiebehälter benutzen
DE19740547A1 (de) Sicherer Netzwerk-Proxy zum Verbinden von Entitäten
EP1109374A2 (de) Verfahren und Vorrichtung zur Durchführung von Netzwerkoperationen
DE69836814T2 (de) Zulieferausgewählte nachricht als antwort auf anwenderanfrage
DE69919560T2 (de) Verfahren und system zur vorbeugung von unerwüschten betätigungen von ausführbaren objekten
DE10352400A1 (de) Netzwerkdienst-Abfangvorrichtung
DE10231958B4 (de) Verfahren und System zum Übertragen von Datenpaketen über ein Netzwerk an ausgewählte mehrere Bestimmungsorte, sowie computerlesbares Medium
DE69729487T2 (de) Verfahren und gerät versehen mit durchflussregelung in einem netzwerksystem die auf der erwarteten verarbeitungszeit des anwenders basiert

Legal Events

Date Code Title Description
8364 No opposition during term of opposition