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