PL180570B1 - Sposób, urzadzenie i produkt programu komputerowego do komunikacjiw systemie klient/serwer PL PL PL PL PL PL PL PL PL PL PL - Google Patents

Sposób, urzadzenie i produkt programu komputerowego do komunikacjiw systemie klient/serwer PL PL PL PL PL PL PL PL PL PL PL

Info

Publication number
PL180570B1
PL180570B1 PL96327294A PL32729496A PL180570B1 PL 180570 B1 PL180570 B1 PL 180570B1 PL 96327294 A PL96327294 A PL 96327294A PL 32729496 A PL32729496 A PL 32729496A PL 180570 B1 PL180570 B1 PL 180570B1
Authority
PL
Poland
Prior art keywords
server
client
computer
message
block
Prior art date
Application number
PL96327294A
Other languages
English (en)
Other versions
PL327294A1 (en
Inventor
Reed Richard Bittinger
Michael Levi Fraenkel
Barron Cornelius Housel
David Bruce Lindquist
Original Assignee
Ibm
International Business Machines 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 Ibm, International Business Machines Corp filed Critical Ibm
Publication of PL327294A1 publication Critical patent/PL327294A1/xx
Publication of PL180570B1 publication Critical patent/PL180570B1/pl

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

1 . Sposób komunikacji w systemie klient/serwer zawierajacym pierwsza aplikacje w pierwszym komputerze, która komunikuje sie z druga aplikacja w drugim komputerze, odleglym od pierwszego komputera, przy czym pierwsza i druga aplikacje uzywaja nieza- leznego protokolu komunikacyjnego klient/serwer do komunikacji miedzy klientem a serwerem, zas na zewnetrznym laczu telekomu- nikacyjnym wystepuje co najmniej jeden segment komunikatu miedzy pierwsza aplikacja w pierwszym komputerze, a druga aplikacja w drugim komputerze, znamienny tym, ze przechwytuje sie w niezaleznym protokole komunikacyjnym klient/serwer ko- munikat, inicjowany przez pierwsza aplikacje przed przeslaniem komunikatu zewnetrznym laczem telekomunikacyjnym, dokonuje sie konwersji komunikatu inicjowanego przez pierwsza aplikacje na specyficzny protokól komunikacyjny klient/serwer i przesyla sie, po konwersji, komunikat przez zewnetrzne lacze telekomuni- kacyjne w postaci specyficznego strumienia danych klient/serwer, po czym odbiera sie komunikat transmitowany przez lacze ze- wnetrzne, dokonuje sie konwersji komunikatu, odebranego przez zewnetrzne lacze telekomunikacyjne, ze specyficznego protokolu komunikacyjnego klient/serwer na niezalezny protokól komunika- cyjny klient/serwer, i dostarcza sie komunikat inicjowany przez pierwsza aplikacje do drugiej aplikacji w niezaleznym protokole komunikacyjnym klient/serwer. FIG.1 1 PL PL PL PL PL PL PL PL PL PL PL

Description

Przedmiotem wynalazku jest sposób, urządzenie i produkt programu komputerowego do komunikacji w systemie klient/serwer, zwłaszcza do komunikacji pomiędzy aplikacjami serwera klienta takimi jak przeglądarka WWW i serwerem WWW.
Znana jest powszechna akceptacja Internetu jako medium komunikacji masowej. To oparte na szerokiej podstawie uznanie Internetu jako żywotnego medium dla komunikacji i interakcji między licznymi sieciami, wytworzyło także dobrze utrwaloną bazę zbudowaną na standaryzowanych internetowych protokółach współdziałania miedzy sieciami komputerowymi.
Zasadą dla Internetu jest taka relacja miedzy klientem a serwerem, że klienci (przeglądarki) komunikują się z serwerami Internetu. Dla zwiększenia dostępu do Internetu stosowane protokóły komunikacyjne i języki używane przez klientów i serewery zostały poddane standaryzacji. Te protokóły zawierają Hipertekstowy Protokół Transmisji (HTTP), który jest prorokółem komunikacyjnym używanym pomiędzy klientami i serwerami i Protokół Sterowania Transmisją w Sieci Internet (TCP/IP), gdzie część TCP jest specjalnym protokołem dla komunikacji pomiędzy komputerami lub aplikacjami. Również standaryzowany jest język zwany znakowanym językiem hipertekstowym (HTML). Ponieważ te protokóły i język nie zależą od urządzenia i stosują do przesyłania informacji protokół bezpołączeniowy o najlepszej zgodności, to każda transakcja jest w pełni samoistna. Dlatego, na przykład każda wiadomość od klienta zawiera informacje o możliwościach przeglądarki i jest niezależna od innych transmisji. Ta samoistna natura komunikacji pomiędzy klientem a serwerem może być określona jako transmisja bezstanowa i zwiększać liczbę danych, które muszą być przesłane pomiędzy klientem a serwerem w danej transmisji. W kontekście aplikacji klient/serwer w Światowej Sieci Komputerowej (WWW) klientem może być przeglądarka WWW, która działa jako interfejs użytkownika. Przeglądarka przesyła żądania klienta do odpowiedniego serwera WWW oraz formatuje i wyświetla dane HTML otrzymane z serwera. Przeglądarka WWW także ocenia dane HTML dla ustalenia, czy w danych HTML są zawarte instrukcje wyższych łączy, które wymagają kolejnych żądań przeglądarki, które będą następnie inicjowane przez przeglądarkę. Serwer WWW działa jak serwer klienta i przetwarza żądania przeglądarek oraz przekazuje je zwrotnie jako odpowiedzi na żądania jako część danych HTML strumienia danych HTTP.
180 570
Przykładem typowej komunikacji sieciowej może być przypadek, gdy przeglądarka sieciowa inicjuje żądanie strony tytułowej z serwera sieciowego, ilustruje podstawowe zależności pomiędzy danymi HTTP, HTML, TCP i przeglądarką oraz serwerem. Gdy użytkownik przeglądarki żąda informacji z określonej strony sieciowej, przeglądarka inicjuje komunikację z serwerem przesyłając żądanie daj do serwera sieci określając Uniwersalny Lokalizator Zasobów (URL) żądanej strony sieciowej, która dla celu tego przykładu może być stroną tytułową. Lokalizator URL funkcjonuje jak adres strony sieciowej i jest unikalny dla całego Internetu. Serwer sieciowy powinien następnie uzyskać i przesłać do przeglądarki dane HTML odpowiadające stronie tytułowej określonego lokalizatora URL. Ta operacja może inicjować dalsze transmisje w Internecie realizowane przez sieciowy serwer Internetu lub lokalizatora URL może specyfikować serwer w sieci lokalnej, do którego jest dołączona przeglądarka. Przeglądarka powinna następnie ocenić dane HTML otrzymane z serwera jako strumień danych HTTP dla sprawdzenia czy jest tam włączone hiperłącze takie jak ikona lub obraz i jeśli takie hiperłącze istnieje, powinna inicjować żądania określenia lokatora URL hiperłącza dla uzyskania określonych danych. Te dane powinny być następnie wprowadzone do strony tytułowej i wyświetlone użytkownikowi. Jak widać na tym przykładzie, jedno wejściowe żądanie użytkownika wykonane przez przeglądarkę może wywołać wiele dodatkowych żądań, które są automatycznie wykonywane przez przeglądarkę w odpowiedzi na potwierdzenie danych HTML odpowiadających wstępnemu żądaniu użytkownika.
Podstawowa, znana struktura komunikacyjna dla systemu Internetowego jest przedstawiona na figurze 1. Na fig. 1 przeglądarka WWW 10 komunikuje się z serwerem WWW 20 poprzez łącze komunikacyjne 15. To łącze komunikacyjne jest typowo połączeniem lokalnej sieci, połączeniem rozległej sieci komputerowej, połączeniem w linii telefonicznej, lub kombinacją sposobów łączenia. Przeglądarka komunikuje się z serwerem 20 wykorzystując TCP/IP. W większości połączeń Internetowych przeglądarka komunikuje się z serwerem wykorzystując protokół rodzajowy protokół komunikacyjny HTTP, który jest przesyłany pomiędzy przeglądarką a serwerem. Rzeczywiste dane przesyłane pomiędzy przeglądarką 10 i serwerem 20 są obiektami o danych HTTP, na przykład dane HTML jak opisano powyżej. Serwer 20 może być pośrednikiem, który odbiera transmisje od wielu przeglądarek i kieruje je do odpowiedniego serwera.
Popularność układu przeglądarka /serwer i ich wspólne protokoły transmisji i informacji, HTML i HTTP, doprowadziły do szybkiego przyjęcia technologii sieciowej jako uniwersalnego interfejsu dla sieciowego dostępu do informacji. Ponadto, ponieważ protokóły i język komunikacji między przeglądarkami i serwerami są standaryzowane, protokoły komunikacyjne i język będą takie same niezależnie od tego, z jakiej użytkownik korzysta przeglądarki jako z dostępu do sieci informatycznej. Dlatego powszechnie instalowane u użytkowników przeglądarki w połączeniu z dostępnością Internetu i łatwością zapisu aplikacji serwerów, wykorzystując Wspólny Interfejs Przejścia (CGI), czynią technologię sieciową bardzo atrakcyjną dla szerokiej klasy aplikacji formatowanych.
W tym samym czasie, gdy wzrastała popularność i stosowanie Internetu, zwiększała się również popularność komputerów przenośnych. Użycie laptopów, notebooków, Osobistych Cyfrowych Pomocy Komunikacyjnych (PDAs/PCAs) i innych urządzeń przenośnych doprowadziło do zwiększenia wymagań w zakresie komunikacji radiowej. Radiowe sieci wielkoobszarowe, łączność komórkowa i pakiety radiowe mają jednakże wspólne ograniczenia przy stosowaniu w sieci komputerowej. Wysoki koszt transmisji, długi czas odpowiedzi, mała szerokość pasma i mała niezawodność, wszystko to przeszkadza zastosowaniu technologii radiowej dla bezstanowego protokółu komunikacyjnego sieci WWW. Również, ponieważ protokół sieci jest bezstanowy ilość danych na żądanie i liczba żądań przesyłanych łączem radiowym jest większa niż byłaby konieczna, jeśli transmisja nie byłaby samoistna. Tak więc łączenie technologii radiowej lub innych powolnych technologii komunikacyjnych z technologią sieciową wydaje się niepraktyczne, przy czym możliwości technologii sieciowej w jej uniwersalnej naturze uwydatniają słabość technologii radiowej.
Istotą sposobu komunikacji w systemie klient/serwer, według wynalazku, zawierającym pierwszą aplikację w pierwszym komputerze, która komunikuje się z drugą aplikacją w dru
180 570 gim komputerze odległym od pierwszego komputera, przy czym pierwsza i druga aplikacje używają niezależnego protokołu komunikacyjnego Idient/serwer do komunikacji między klientem a serwerem, zaś na zewnętrznym łączu telekomunikacyjnym występuje co najmniej jeden segment komunikatu między pierwszą aplikacją w pierwszym komputerze a drugą aplikacją w drugim komputerze, jest to, że przechwytuje się w niezależnym protokole komunikacyjnym klient/serwer komunikat, inicjowany przez pierwszą aplikację przed przesłaniem komunikatu zewnętrznym łączem telekomunikacyjnym, dokonuje się konwersji komunikatu inicjowanego przez pierwszą aplikację na specyficzny protokół komunikacyjny klient/serwer i przesyła się, po konwersji, komunikat przez zewnętrzne łącze telekomunikacyjne w postaci specyficznego strumienia danych klient/serwer, po czym odbiera się komunikat transmitowany przez łącze zewnętrzne, dokonuje się konwersji komunikatu, odebranego przez zewnętrzne łącze telekomunikacyjne, ze specyficznego protokołu komunikacyjnego klient/serwer na niezależny protokół komunikacyjny klient/serwer, i dostarcza się komunikat inicjowany przez pierwszą aplikację do drugiej aplikacji w niezależnym protokole komunikacyjnym klient/serwer.
Korzystnie, jako niezależny protokół komunikacji klient/serwer stosuje się hipertekstowy protokół transmisyjny (HTTP) zaś jako komunikat inicjowany przez pierwszy komputer stosuje się strumień danych HTTP.
Korzystnie, gdy pierwszym komputerem jest klient odległy, to jako pierwszą aplikację stosuje się aplikację przeglądarki sieciowej, zaś gdy drugim komputerem jest serwer, to jako drugą aplikację stosuje się aplikacje serwerową sieć.
Korzystnie, gdy pierwszym komputerem jest serwer, to jako pierwszą aplikację stosuje się aplikację serwerową sieci, zaś gdy drugim komputerem jest klient odległy, to jako drugą aplikację stosuje się aplikację przeglądarki sieciowej.
Korzystnie, inicjowany przez przeglądarkę sieciową komunikat odpowiada na żądanie wspólnego interfejsu przejścia (CGI), to przepytuje się przechwycone żądanie interfejsu CGI dla określenia, czy istnieje pozycja podręcznej bazy klienta odpowiadająca przechwyconemu żądaniu interfejsu CGI i zapewniająca podstawowy format interfejsu CGI klienta, i przepytuje się przechwycone żądanie interfejsu CGI dla określenia, czy istnieje pozycja podręcznej bazy serwera odpowiadająca przechwyconemu żądaniu interfejsu CGI i zapewniająca podstawowy format interfejsu CGI serwera, po czym przechowuje się strumień danych HTTP odebranych z serwera sieciowego w odpowiedzi na inicjowany przez przeglądarkę sieciową komunikat, który jest skierowanym do interfejsu CGI żądaniem rezydentnej pamięci podręcznej rezydującej w drugim komputerze, dotyczącym utworzenia pozycji podstawowej pamięci podręcznej serwera, przechowuje się strumień danych HTTP przeznaczony dla przeglądarki sieciowej w odpowiedzi na komunikat inicjowany przez przeglądarkę sieciową który jest skierowanym· do interfejsu CGI. żądaniem rezydentnej pamięci podręcznej w pierwszym komputerze, dotyczącym utworzenia pozycji podstawowej pamięci podręcznej klienta, i przechwytuje się strumień danych HTTP odpowiadający inicjowanemu przez serwer sieciowy' komunikatowi w odpowiedzi na przechwycone żądanie interfejsu CGI, przed przesłaniem strumienia danych HTTP do zewnętrznego łącza telekomunikacyjnego, po czym porównuje się przechwyconą odpowiedź interfejsu CGI z podstawowym formatem interfejsu CGI serwera, dla otrzymania danych różnicowych interfejsu CGI odpowiadających różnicy między przechwyconą odpowiedzią interfejsu CGI a podstawowym formatem interfejsu CGI serwera, wysyła się dane różnicowe interfejsu CGI do przeglądarki sieciowej w pierwszym komputerze przez zewnętrzne łącze telekomunikacyjne jako specyficzny strumień danych klient/serwer i zbiera się specyficzny strumień danych klient/serwer przesyłanych przez zewnętrzne łącze telekomunikacyjne, który był wysłany przez drugi komputer, przy czym w trakcie konwersji komunikatu odebranego odtwarza się strumień danych HTTP, odpowiadający komunikatowi od serwera sieciowego, ze specyficznego strumienia danych klient/serwer odebranego przez zewnętrzne łącze telekomunikacyjne poprzez połączenie podstawowego formatu interfejsu CGI klienta i danych różnicowych interfejsu CGI otrzymanych zewnętrznym łączem komunikacyjnym, przy utworzeniu strumienia danych HTTP odpowiadającego przechwyconej odpowiedzi inter
180 570 fejsu CGI, zaś w trakcie dostarczania komunikatu inicjowanego dostarcza się komunikat inicjowany przez serwer sieciowy do przeglądarki sieciowej jako strumień danych HTTP.
Korzystnie następnie zestawia się trwałe połączenie między pierwszym komputerem a drugim komputerem przez zewnętrzne łącze telekomunikacyjne i utrzymuje się trwałe połączenie aż do zakończenia komunikacji zainicjowanej przez przeglądarkę sieciową, przy czym w trakcie przechwytywania komunikatu przechwytuje się wiele komunikatów inicjowanych przez przeglądarkę sieciową i zwielokrotnia się je na zewnętrznym łączu telekomunikacyjnym przy utrzymywaniu połączenia trwałego.
Korzystnie następnie dostarcza się do drugiego komputera, przez zewnętrzne łącze telekomunikacyjne, specyficzną informację komputerową odpowiadającą zadanym parametrom charakterystycznym pierwszego komputera, i przechowuje się specyficzną informację komputerową odpowiadającą zadanym parametrom charakterystycznym pierwszego komputera z wprowadzeniem informacji nagłówkowej przeglądarki, przy czym w trakcie konwersji komunikatu inicjowanego usuwa się specyficzną informację komputerową z komunikatu inicjowanego przez przeglądarkę sieciową, zaś w trakcie konwersji komunikatu odebranego łączy się informację nagłówkową przeglądarki ze specyficznym strumieniem danych klient/serwer tworząc strumień danych HTTP.
Korzystnie następnie wychwytuje się strumień danych HTTP odpowiadający komunikatowi inicjowanemu przez serwer sieciowy przed przesłaniem strumienia danych HTTP zewnętrznym łączem telekomunikacyjnym, dokonuje się konwersji strumienia danych HTTP, inicjowanego przez serwer sieciowy, z protokołu HTTP na specyficzny protokół komunikacyjny klient/serwer, i przesyła się, po konwersji, inicjowany przez serwer sieciowy komunikat do przeglądarki sieciowej przez zewnętrzne łącze telekomunikacyjne w postaci specyficznego strumienia danych klient/serwer, po czym odbiera się specyficzny strumień danych klient/serwer przesyłany przez zewnętrzne łącze telekomunikacyjne oraz realizuje się odbudowę strumienia danych HTTP odpowiadającego komunikatowi od serwera sieciowego ze specyficznego strumienia danych klient/serwer odebranego przez zewnętrzne łącze telekomunikacyjne poprzez konwersję specyficznego strumienia danych klient/serwer odebranego w specyficznym protokole komunikacyjnym klient/serwer na strumień danych HTTP i dostarcza się komunikat inicjowany przez serwer sieciowy do przeglądarki sieciowej jako strumień danych HTTP.
Istotą urządzenia do komunikacji w systemie klient/serwer, w którym pierwsza aplikacja w jednym komputerze jest połączona poprzez łącze komunikacyjne z aplikacją w drugim komputerze, jest to, że zawiera w pierwszym komputerze, włączony między pierwszą aplikację a zewnętrzne łącze telekomunikacyjne, pierwszy moduł przechwytujący do przechwytywania komunikatu w niezależnym protokole komunikacyjnym klient/serwer, inicjowanego przez pierwszą aplikację przed przesłaniem komunikatu zewnętrznym łączem telekomunikacyjnym, konwersji inicjowanego komunikatu na specyficzny protokół komunikacyjny klient/serwer i przesyłania, po konwersji, komunikatu do drugiego komputera zewnętrznym łączem telekomunikacyjnym w postaci specyficznego strumienia danych klient/serwer, oraz w drugim komputerze, włączony między zewnętrzne łącze telekomunikacyjne a drugą aplikację, drugi moduł przechwytujący do odbierania komunikatów transmitowanych przez telekomunikacyjne łącze zewnętrzne, konwersji komunikatu ze specyficznego protokołu komunikacyjnego klient/serwer na niezależny protokół komunikacyjny klient/serwer i dostarczenia komunikatu po konwersji do drugiej aplikacji.
Istotą produktu programu komputerowego do komunikacji w systemie klient/serwer, według wynalazku, który jest przechowywany na czytelnym dla komputera nośniku pamięciowym i zawiera wiele elementów z kodem oprogramowania do implementacji systemu po załadowaniu produktu do komputera, jest to, że zawiera odczytywalne komputerowo elementy kodu programowego przechwytywania przez pierwszy komputer komunikatu w niezależnym protokole komunikacyjnym klient/serwer, inicjowanego przez pierwszą aplikację, przed przesłaniem komunikatu zewnętrznym łączem telekomunikacyjnym, odczytywalne komputerowo elementy kodu programowego konwersji przez pierwszy komputer komunikatu inicjowanego na specyficzny protokół komunikacyjny klient/serwer, odczytywalne kompute8
180 570 rowo elementy kodu programowego przesłania, po konwersji, przez pierwszy komputer komunikatu do drugiego komputera przez zewnętrzne łącze telekomunikacyjne w postaci specyficznego strumienia danych klient/serwer, odczytywalne komputerowo elementy odbierania przez drugi komputer komunikatów przesyłanych przez zewnętrzne łącze telekomunikacyjne, odczytywalne komputerowo elementy konwersji przez drugi komputer komunikatu ze specyficznego protokołu łączności komunikacyjnego klient/serwer na niezależny protokół komunikacyjny klient/serwer i odczytywalne komputerowo elementy dostarczania przez drugi komputer komunikatu po konwersji do drugiej aplikacji.
Zaletą rozwiązania według wynalazku jest możliwość wykorzystania zainstalowanej bazy użytkowników sieci WWW w środowisku komunikacji o małej prędkości, takiej jak komunikacja radiowa, przy wykorzystaniu z istniejących protokołów komunikacyjnych i języków w systemie powolnej lub radiowej komunikacji, bez modyfikacji aplikacji przeglądarki sieciowej i serwera sieciowego.
Przedmiot wynalazku jest uwidoczniony w przykładach wykonania na rysunku, na którym fig. 1 przedstawia schemat blokowy znanego systemu przeglądarka WWW/serwer. WWW, fig. 2 - schemat blokowy systemu przeglądarka/serwer według wynalazku wykorzystującego moduł przechwytujący strony klienta i moduł przechwytujący strony serwera, fig. 3 - sieć działań operacji wykonywanych przez moduł przechwytujący klienta w przykładzie wykonania zawierającym koherentny system pamiętania pośredniczącego, fig. 4 - sieć działań operacji wykonywanych przez moduł przechwytujący klienta w przykładzie wykonania zawierającym koherentny system pamiętania pośredniczącego, fig. 5 - sieć działań operacji wykonywanych przez moduł przechwytujący serwera w przykładzie wykonania zawierającym koherentny system pamiętania pośredniczącego, fig. 6 - sieć działań operacji wykonywanych przez moduł przechwytujący serwera w przykładzie wykonania zawierającym koherentny system pamiętania pośredniczącego, fig. 7 - sieć działań operacji wykonywanych przez moduł przechwytujący klienta w przykładzie wykonania zawierającym system przesyłania danych różnicowych, fig. 8 - sieć działań operacji wykonywanych przez moduł przechwytujący klienta w przykładzie wykonania zawierającym system przesyłania danych różnicowych, fig. 9 - sieć działań operacji wykonywanych przez moduł przechwytujący serwera w przykładzie wykonania zawierającym system przesyłania danych różnicowych, fig. 10 - sieć działań operacji wykonywanych przez moduł przechwytujący serwera w przykładzie wykonania zawierającym system przesyłania danych różnicowych, fig. 11 - schemat blokowy rozwiązania według wynalazku wykorzystującego gniazda wirtualne, fig. 12 - schemat blokowy modułu przechwytującego klienta i modułu przechwytującego serwera według przykładu wykonania wynalazku wykorzystującego gniazda wirtualne, fig. 13 - sieć działań operacji wykonywanych przez zarządzającego gniazdami modułu przechwytującego klienta, albo modułu przechwytującego serwera, według przykładu wykonania wykorzystującego gniazda wirtualne, fig. 14 - sieć działań operacji wykonywanych przez funkcję przejmującą strony klienta w przykładzie wykonania wykorzystującym gniazda wirtualne, fig. 15 - sieć działań operacji wykonywanych przez funkcję przejmującą strony serwera w przykładzie wykonania wykorzystującym gniazda wirtualne, fig. 16-1 - sieć działań wirtualnej operacji tworzenia według przykładu wykonania wykorzystującego gniazda wirtualne, fig. 16-2 - sieć działań wirtualnej operacji wysyłania według przykładu wykonania wykorzystującego gniazda wirtualne, fig. 16-3 - sieć działań wirtualnej operacji odbierania według przykładu wykonania wykorzystującego gniazda wirtualne, fig. 16-4 - sieć działań wirtualnej operacji wybierania według przykładu wykonania wykorzystującego gniazda wirtualne, fig. 17-1 - sieć działań wirtualnej operacji opróżniania, według przykładu wykonania wykorzystującego gniazda wirtualne, fig. 17-2 - sieć działań wirtualnej operacji zamykania, według przykładu wykonania wykorzystującego gniazda wirtualne.
Przedstawione na figurach 3 do 10 i 13 do 17-2 sieci działań ilustrującymi sposoby według wynalazku. Jest oczywiste, że każdy blok przedstawiony w sieci działań lub kombinacja bloków może być zrealizowana w postaci instrukcji programu komputerowego. Te instrukcje programu komputerowego mogą być ładowane do komputera lub innego urządzenia programowalnego działającego jak komputer, tak, że instrukcje wykonywane przez komputer lub
180 570 inne urządzenie programowalne tworzą elementy dla realizacji funkcji określonych w bloku lub blokach sieci działań. Te instrukcje programu komputerowego mogą być także zapamiętywane w pamięci odczytywalnej przez komputer, która może sterować komputerem lub innym urządzeniem programowalnym dla działania w określony sposób tak, że instrukcje zapamiętane w pamięci odczytywalnej przez komputer tworzą wykony wany element zawierający elementy instrukcji, które realizują funkcje określone w bloku lub blokach sieci działań. Instrukcje programu komputerowego mogą być także ładowane do komputera lub innego urządzenia programowalnego dla wywołania realizacji przez komputer lub inne urządzenie programowalne serii etapów operacyjnych dla wykonania procesu realizowanego przez komputer tak, że instrukcje wykonywane przez komputer lub inne urządzenie programowalne wykonują etap operacyjny dla realizacji funkcji określonych w bloku lub blokach sieci działań. Zatem przedstawione bloki, w sieci działań przedstawiają kombinacje etapów dla wykonania określonych funkcji i kombinację elementów dla wykonania określonych funkcji. Jest oczywiste, że każdy blok i kombinacja bloków sieci działań może być realizowana przez specjalny system komputerowy lub kombinację określonego sprzętu komputerowego i oprogramowania, które wykonują określone funkcje lub etapy operacyjne.
Na figurze 2 jest przedstawiony schemat blokowy rozwiązania według wynalazku. Przeglądarka WWW 10 komunikuje się z modułem przechwytującym klienta 30. Serwer WWW 20 komunikuje się z modułem przejmującym serwera 40 przez łącze komunikacyjne 35. Przeglądarka WWW 10 i moduł przejmujący klienta 30 mogą być umieszczone w pierwszym komputerze 5. Moduł przechwytujący serwera 40 i serwer WWW 20 mogą być umieszczone w drugim komputerze 6. Pierwszy komputer 5 i drugi komputer 6 komunikują się przez zewnętrzne łącze komunikacyjne 35.
Korzystnie, przeglądarka 10 jest przeglądarka internetową wykorzystująca hipertekstowy protokół transmisyjny (HTTP) i język HTML dla komunikowania się z serwerem internetowym 20, który także używa protokołu HTTP i języka HTML. Podczas operacji przesyłania przeglądarka 10 wysyła strumień danych HTTP, który jest przejmowany przez moduł przechwytujący 30 klienta. Przejęcie strumienia danych HTTP przez moduł przechwytujący 30 klienta może być wykonane przy wykorzystaniu możliwości pętli zwrotnej TCP/IP, gdzie moduł przechwytujący 30 klienta ma adres protokołu internetowego IP o numerze sieciowym 127, taki jak 127.0.0.1. Moduł przechwytujący 30 klienta przetwarza następnie strumień danych HTTP w specyficzny protokół klient/serwer i przesyła specjalny strumień danych klient/serwer przez zewnętrzne łącze komunikacyjne 35. Moduł przechwytujący 40 serwera odbiera specyficzny strumień danych klient/serwer i odtwarza oryginalny strumień danych HTTP odpowiadający transmisji pochodzącej z przeglądarki. Ten odtworzony oryginalny strumień danych HTTP jest przesyłany do serwera 20. Serwer 20 odpowiada na strumień danych HTTP tak jak normalny serwer internetowy. Serwer 20 może być także pośrednikiem umożliwiającym łączenie się z Internetem wielu przeglądarkom. Gdy serwer 20 otrzymuje informacje dla przesłania do przeglądarki 10, na przykład w odpowiedzi na żądanie przeglądarki o określoną stronę tytułową lokalizatora URL, to serwer 20 wysyła strumień danych HTTP odpowiadający transmisji jaka ma być wysłana do przeglądarki 10. Ta transmisja pochodząca z serwera jest przejmowana przez moduł przechwytujący 40 serwera i przetworzona na specyficzny strumień danych klient/serwer. Specyficzny strumień danych klient/serwer odpowiadający transmisji pochodzącej z serwera jest następnie przesyłany przez zewnętrzne łącze komunikacyjne 35 od drugiego komputera 6 do pierwszego komputera 5. Specyficzny strumień danych klient/serwer jest odbierany przez moduł przechwytujący 30 klienta, odtwarzany i dostarczany jest do przeglądarki 10 oryginalny strumień danych HTTP pochodzący z serwera.
W szczególnym przykładzie wykonania wynalazku zewnętrzne łącze komunikacyjne jest łączem radiowym. W takim przypadku, aby uzyskać parametry systemu akceptowalne przez użytkowników jest pożądane zmniejszenie wielkości transmisji przesyłanej przez zewnętrzne łącze komunikacyjne 35 zarówno w zakresie częstotliwości transmisji jak i ilości informacji, które musza być przesłane przez zewnętrzne łącze komunikacyjne 35. Dlatego wynalazek wykorzystuje pamiętanie pośredniczące, różnicowanie i techniki redukujące
180 570 protokół dla zminimalizowania wielkości transmisji przesyłanej przez zewnętrzne łącze komunikacyjne 35. Te techniki są realizowane przez przetworzenie bezstanowych lub stochastycznych protokołów HTTP w specjalne protokoły klient/serwer, które wykorzystują specyficzne informacje dotyczące klienta i serwera dla ograniczenia wielkości i częstotliwości transmisji. Ponadto, chociaż wynalazek jest opisywany w odniesieniu do pojedynczej aplikacji przeglądarki i pojedynczej aplikacji serwera, korzyści z wynalazku mogą być również osiągnięte przy powiązaniu wielu przeglądarek z jednym serwerem.
W przykładzie wykonania wynalazku zarówno moduł przechwytujący 30 klienta jak i moduł przechwytujący 40 serwera mają pamięć pośredniczącą. Pamięć pośrednicząca klienta umieszczona w pierwszym komputerze 5 zapamiętuje strumienie danych HTTP, które mają być odebrane przez przeglądarkę w odpowiedzi na transmisję pochodzącą z przeglądarki. Pamięć pośrednicząca serwera umieszczona w drugim komputerze 6 zapamiętuje strumienie danych HTTP, które są odbierane z serwera w odpowiedzi na transmisję pochodzącą z przeglądarki.
Pamięć pośrednicząca umieszczona w pierwszym lub drugim komputerze 5 i 6 może mieć rozmiar oparty na określonej konfiguracji sprzętowej komputerów. Te informacje zapamiętywane w pamięci pośredniczącej, zawierają dla każdej transmisji URL unikalny identyfikator oparty na zawartości transmisji takich jak cykliczna kontrola nadmiarowa (CRC) danych transmisji, czas pamiętania danych (SDT) określający czas, w którym wejście podręczne było utworzone lub odświeżone i dane transmisji. Tak wiec katalog wejścia pośredniczącego dla każdej transmisji zapamiętywanej w pamięci pośredniczącej. Ponadto, z powodu ograniczonych zasobów dostępnych w danej konfiguracji sprzętowej może być stosowana, dla podtrzymania pamięci pośredniczącej, w pierwszym i drugim komputerze 5 i 6 pewna liczba technik pośredniczących. Tak wiec na przykład pamięć pośrednicząca może unieważnić najstarszy katalog wejściowy jeśli określony przez użytkownika rozmiar pamięci pośredniczącej byłby przekroczony przez dodanie nowego wejścia, a następnie dodanie nowego wejścia w miejsce wejścia unieważnionego. Ponadto, wejścia pośredniczące mogą być utrzymywane przez wiele żądań aplikacji przeglądarki lub serwera lub nawet cyklami włączenia zasilania pierwszego lub drugiego komputera 5 i 6, dla utworzenia trwałej pamięci pośredniczącej.
Działanie struktury pośredniczącej zgodnie z wynalazkiem będzie opisane w odniesieniu do figur 3 do 6, które przedstawiają sieci działań opisujące operacje modułu przechwytującego 30 klienta i modułu przechwytującego 40 serwera.
Przedstawiony na fig. 3 blok 100 pokazuje, że moduł przechwytujący 30 klienta otrzymał żądanie z przeglądarki 10. To żądanie może mieć postać strumienia danych HTTP. Moduł przechwytujący· 30 klienta sprawdza jednolity lokalizator zasobów (URL) wchodzącego żądania jak pokazano w bloku 105. Moduł przechwytujący 30 klienta określa na podstawie lokalizatora URL czy informacja odpowiadająca żądaniu pochodzącemu z przeglądarki była wcześniej zapamiętana w pamięci pośredniczącej klienta w pierwszym komputerze 5. Jeżeli informacja odpowiadająca lokalizatorowi URL nie była wcześniej zapamiętana w pamięci pośredniczącej klienta wykonywana jest przez moduł przechwytujący 30 klienta operacja przedstawiona w. bloku 106. Moduł przechwytujący 30 klienta przesyła żądanie przez zewnętrzne łącze komunikacyjne 35 do modułu przechwytującego 40 serwera.
Jeżeli jednakże po sprawdzeniu transmisji z przeglądarki, jak pokazano w bloku 105, istnieje wejście pośredniczące klienta, które odpowiada transmisji z przeglądarki to w najprostszym wykonaniu ta informacja będzie dostarczona do przeglądarki jako strumień danych HTTR Jednakże, jak przedstawiono na fig. 3, realizowane jest to, co jest tu określane jako sprawdzenie koherentności przedziału czasu w wejściu pośredniczącym odpowiadającym transmisji z przeglądarki. Ta operacja jest przedstawiona w bloku 110 na fig. 3.
Koherentność przedziału czasu dla modułu przechwytującego 30 klienta może być zdefiniowana przez użytkownika i jest to okres czasu, w którym może istnieć wejście pośrednie, nim stanie się nieaktualne i również, gdy istnieje musi być odświeżane przez żądanie od serwera odpowiadające transmisji z przeglądarki. Sprawdzenie przedziału czasu koherencji przedstawione w bloku 110 może być wykonane przez porównanie bieżącej daty i czasu z sumą SDT wejścia pośredniczącego odpowiadającą transmisji z przeglądarki, a okres kohe
180 570 rencji jest określany przez użytkownika. Jeżeli bieżąca data i czas są większe niż ta suma to informacja zapamiętana w pamięci pośredniczącej odpowiadająca transmisji pochodzącej z przeglądarki staje się nieaktualna i przyjmowana jest gałąź nie z bloku 110. Jednakże, jeżeli bieżąca data i czas są większe niż suma SDT plus zdefiniowany przez użytkownika przedział koherencji to przyjmowana jest gałąź tak z bloku 110 i jak pokazano w bloku 111 i wejście pośredniczące jest dostarczane do przeglądarki jako strumień danych HTTP. W ten sposób zamyka się transmisję pochodzącą z przeglądarki przez moduł przechwytujący 30 klienta w bloku 100 na fig. 3.
Jeżeli sprawdzenie przedziału koherentności przedstawione w bloku 110 wykazuje, że wejście pośredniczące umieszczone w pierwszym komputerze 5 jest nieaktualne, przekazywane jest do modułu przechwytującego 40 serwera sprawdzenia koherentności wejścia pośredniczącego umieszczonego w drugim komputerze 6. Ta operacja jest przedstawiona w bloku 112 na fig. 3. Jest to wykonane przez dostarczenie przez zewnętrzne łącze komunikacyjne 35 do modułu przechwytującego 40 serwera przedziału koherencji dla określonego modułu przechwytującego 30 klienta żądania pochodzącego z przeglądarki 10 i unikalnego wskaźnika zawartości pamięci pośredniczącej klienta odpowiadającego URL transmisji pochodzącej z przeglądarki. Korzystnie, ten unikalny wskaźnik powstaje w wyniku cyklicznej kontroli nadmiarowej CRC dla wejścia pośredniczącego.
Na fig. 5 przedstawiono sieć działań modułu przechwytującego 40 strony serwera w odpowiedzi na informację odebraną przez zewnętrzne łącze komunikacyjne 35 z modułu przechwytującego 30 klienta. Gdy moduł przechwytujący 40 strony serwera otrzymuje żądanie od modułu przechwytującego 30 klienta moduł przechwytujący 40 strony serwera odbiera wcześniej określony przedział czasu koherencji klienta, wartość kontrolna CRC wejścia pośredniczącego klienta i żądanie HTTP pochodzące z przeglądarki. Odebranie tej informacji jest pokazane w bloku 120 fig. 5.
Po odebraniu informacji z modułu przechwytującego 30 klienta, moduł przechwytujący 40 strony serwera sprawdza pamięć pośredniczącą serwera umieszczoną w drugim komputerze 6 dla stwierdzenia czy istnieje wejście pośredniczące serwera odpowiadające lokalizatorowi URL żądania HTTP pochodzącego z przeglądarki. Jeżeli po sprawdzeniu transmisji pochodzącej z przeglądarki, jak pokazano w bloku 125 moduł przechwytujący 40 strony serwera stwierdza, że istnieje wejście pośredniczące odpowiadające informacji żądanej w transmisji pochodzącej z przeglądarki to przyjmowana jest gałąź tak z bloku 125. Moduł przechwytujący 40 strony serwera porównuje następnie bieżącą datę i czas SSI modułu przechwytującego 40-strony serwera z sumą SDT wejścia pośredniczącego serwera odpowiadającą informacji żądanej w transmisji pochodzącej z przeglądarki i wcześniej określonym przedziałem czasu koherencji klienta otrzymanym z modułu przechwytującego 30 klienta. Jeżeli bieżącą data i czas są mniejsze niż suma SDT wejścia pośredniczącego serwera i przedziału koherencji to przyjmowana jest gałąź tak z bloku 130 z fig. 5. Moduł przechwytujący 40 strony serwera porównuje następnie wartość kontrolna CRC wejścia pośredniczącego serwera z wartością kontrolną CRC wejścia pośredniczącego klienta dla sprawdzenia czy wejścia pośredniczące są identyczne. Jeżeli dwa wejścia pośredniczące są identyczne, to przyjmowana jest gałąź tak z bloku 135 i jak pokazano w bloku 136 koherentna odpowiedź jest wysyłana do modułu przechwytującego 30 klienta.
Jeżeli warunek z bloku 135 określa, że wartości kontrolne CRC nie są równe to informacje zawarte w wejściu pośredniczącym klienta i w wejściu pośredniczącym serwera nie są identyczne i jak pokazano w bloku 137, moduł przechwytujący 40 strony serwera przesyła wejście pośredniczące serwera do pierwszego komputera 5 przez zewnętrzne łącze komunikacyjne 35. Przesyłając wejście pośredniczące serwera do modułu przechwytującego 30 klienta, moduł przechwytujący 40 strony serwera przetwarza wejście w specjalny protokół komunikacyjny, który zawiera wartości kontrolne CRC wejścia pośredniczącego serwera, dane wejścia pośredniczącego serwera i wiek wejścia pośredniczącego serwera. Wiek wejścia pośredniczącego serwera jest obliczany przez odejmowanie od bieżącej daty i czasu SDT wejścia pośredniczącego.
180 570
Na koniec, w odniesieniu do fig. 5, jeżeli albo suma SDT plus wstępnie określony przedział czasu koherencji klienta jest mniejszy niż bieżąca data i czas lub jeśli nie ma wejścia pośredniczącego odpowiadającego lokalizatora URL transmisji pochodzącej z przeglądarki, to odpowiednio przyjmowana jest ścieżka nie z bloku 130 lub ścieżka nie z bloku 125. Będzie więc wykonana operacja z bloku 126 i moduł przechwytujący 40 strony serwera prześle do serwera transmisję pochodzącą z przeglądarki jako strumień danych HTTP. Jeżeli moduł przechwytujący 40 strony serwera musi przesłać do serwera transmisję pochodzącą z przeglądarki jako strumień danych HTTP to moduł przechwytujący 40 strony serwera będzie wykonywał operacje z fig. 6.
Jak pokazano w bloku 140 na fig. 6 w odpowiedzi na transmisję pochodzącą z przeglądarki, moduł przechwytujący 40 strony serwera odbierze strumień danych HTTP z serwera 20. Na potwierdzenie strumienia danych HTTP, moduł przechwytujący 40 strony serwera obliczy wartości kontrolne CRC dla strumienia danych HTTP i chwilowo zapamięta strumień danych HTTP. Następnie, jak pokazano w bloku 145 moduł przechwytujący 40 strony serwera sprawdzi strumień danych HTTP i określi czy istnieje wejście pośredniczące serwera odpowiadające lokalizatorowi URL strumienia danych HTTP. Jeżeli takie wejście istnieje to wykonana jest ścieżka tak z bloku 145. Moduł przechwytujący 40 strony serwera porówna następnie ostatnio obliczoną wartość kontrolną CRC strumienia danych odebranego z serwera 20 z wartością kontrolną CRC wejścia pośredniczącego serwera odpowiadającego lokalizatorowi URL transmisji odpowiedzi pochodzącej z serwera jak pokazano w bloku 150. Jeżeli wartości kontrolne CRC są takie same to wykonana jest ścieżka tak z bloku 150. Moduł przechwytujący 40 strony serwera uaktualnia wejście SDT dla wejścia pośredniczącego serwera jak pokazano w bloku 151 i usuwa chwilowo pamiętany strumień danych HTTP odebranych przez serwer 20, jak pokazano w bloku 152. '
Jeżeli wynik porównania wartości kontrolnych CRC wskazuje, że wejście pośredniczące serwera jest inne niż strumień danych HTTP odebranych z serwera 20 to wykonana jest ścieżka nie z bloku 150. Moduł przechwytujący 40 strony serwera pobiera z wejścia pośredniczącego serwera istniejące dane, jak pokazano w bloku 153, a następnie, jak pokazano w bloku 154, uaktualnia wejście pośredniczące serwera nowymi informacjami. Jak pokazano w bloku 154 ta aktualizacja zawiera zapamiętanie w wejściu pośredniczącym serwera wartości kontrolne CRC transmisji serwera pamiętanej jako cześć wejścia pośrednicżącego bieżącą datę i czas jako wartość SDT dla wejścia pośredniczącego i zapamiętanie strumienia danych HTTP. W jednym z przypadków, gdy wejście pośredniczące serwera jest uaktualnione lub gdy wejście pośredniczące serwera jest identyczne ze strumieniem danych HTTP odebranych z serwera 20, moduł przechwytujący 40 strony serwera określa, czy wejście pośredniczące serwera jest identyczne z wejściem pośredniczącym klienta odpowiadającym transmisji pochodzącej z przeglądarki. Ta operacja jest pokazana w bloku 155.
Jeżeli moduł przechwytujący 40 strony serwera określa, że wejście pośredniczące odpowiadające odpowiedzi odebranej z serwera 20 nie istnieje, to wykonana jest ścieżka nie z bloku 145. Wejście pośredniczące serwera jest tworzone, jak pokazano w bloku 146, przez zapamiętanie lokalizatora URL w odpowiedzi z serwera, przez zapamiętanie strumienia danych HTTP i przez zapamiętanie jako wartość SDT bieżącej daty i czasu. Po utworzeniu wejścia pośredniczącego transmisji pochodzącej z przeglądarki, moduł przechwytujący 40 strony serwera porównuje następnie ponownie wartości kontrolne CRC wejścia pośredniczącego tego serwera z wartościami kontrolnymi CRC odpowiedniego wejścia pośredniczącego klienta, jak pokazano w bloku 155.
Jeżeli wynik porównania wejścia pośredniczącego serwera z wejściem pośredniczącym klienta wskazuje, że wejścia pośredniczące są identyczne to przyjęta jest ścieżka tak z bloku 155 i wykonane są operacje z bloku 156. W bloku 156 pokazano, że moduł przechwytujący 40 strony serwera przesyła odpowiedź koherentną do modułu przechwytującego 30 klienta. Moduł przechwytujący 40 strony serwera przetwarza żądanie wejścia pośredniczącego w specjalny strumień danych klient/serwer wysyłając odpowiedź koherentną i wysyłając wiek zero do modułu przejmującego klienta.
180 570
Jeżeli moduł przechwytujący 40 strony serwera określa, że wejście pośredniczące klienta nie jest identyczne z wejściem pośredniczącym serwera odpowiadającym transmisji pochodzącej z przeglądarki to przyjęta jest ścieżka nie z bloku 155 i wykonane są operacje z bloku 157. Jak pokazano w bloku 157 moduł przechwytujący 40 strony serwera przetwarza wejście pośredniczące serwera w specjalny strumień danych klient/serwer. Strumień danych zawiera wartości kontrolne CRC wejścia pośredniczącego serwera, strumień danych HTTP wejścia pośredniczącego serwera i wiek wejścia pośredniczącego, który jest ustawiony na zero. Ta specjalna transmisja klient/serwer jest następnie przesyłana przez zewnętrzne łącze komunikacyjne 35 do modułu przechwytującego 30 klienta.
Funkcje modułu przechwytującego 30 klienta po potwierdzeniu transmisji z modułu przechwytującego 40 strony serwera będzie opisana w odniesieniu do fig. 4. Jak pokazano w bloku 160 moduł przechwytujący 30 klienta odbiera lub uzyskuje specjalny strumień danych klient/serwer, który był przesłany zewnętrznym łączem komunikacyjnym 35. Moduł przechwytujący 30 klienta określa następnie jakiego typu odpowiedź odebrano od modułu przechwytującego 40 strony serwera, jak pokazano w bloku 165. Jeżeli moduł przechwytujący 40 strony serwera określi że wejście pośredniczące klienta jest koherentne, to jest wejście pośredniczące klienta i wejście pośredniczące serwera są identyczne, to wykonane są operacje pokazane w bloku 166. Jak pokazano w bloku 160 moduł przechwytujący 30 klienta uaktualnia czas SDT wejścia pośredniczącego klienta odpowiadającego transmisji pochodzącej z przeglądarki o różnicę pomiędzy bieżącą datą i czasem, a wiekiem odebranym z modułu przechwytującego 40 strony serwera. Tak więc bez synchronizacji zegarów pierwszego komputera 5 i drugiego komputera 6 sprawdza się koherencję czasową wejścia pośredniczącego pierwszego komputera 5, aby uwzględnić nowsze dane z drugiego komputera 6. Po uaktualnieniu wartości SDT dla wejścia pośredniczącego klienta odpowiadającego transmisji pochodzącej z przeglądarki moduł przechwytujący 30 klienta przesyła wejście pośredniczące klienta do przeglądarki 10 jako strumień danych HTTP. Ta operacja jest pokazana w bloku 174.
Jeżeli jednak moduł przechwytujący 30 klienta ustali, że odpowiedź jest typu danych lub strumienia danych to obierana jest ścieżka strumień z bloku 165 i wykonywana jest operacja 167. Moduł przechwytujący 30 klienta odbiera strumień danych HTTP i chwilowo zapamiętuje te dane. Następnie, jak pokazano w bloku 170 z fig. 4 moduł przechwytujący 30 klienta określa czy istnieje wejście pośredniczące odpowiadające transmisji pochodzącej z przeglądarki. Jeżeli wejście pośredniczące istnieje to obierana jest ścieżka tak z bloku 170 i jak pokazano w bloku 171, istniejące wejście pośredniczące jest usuwane. Moduł przechwytujący 30 klienta uaktualnia następnie wejście pośredniczące klienta odpowiadające transmisji pochodzącej z przeglądarki przez zapamiętanie wartości CRC strumienia HTTP odebranego z modułu przechwytującego 40 strony serwera, przez zapamiętanie jako wartości SDT różnicy pomiędzy bieżącą datą i czasem, a wiekiem odebranym z modułu przechwytującego 40 strony serwera i przez zapamiętanie strumienia danych HTTP. Ta operacja jest pokazana w bloku 172.
Jeżeli nie istnieje wejście pośredniczące odpowiadające transmisji pochodzącej z przeglądarki to obierana jest ścieżka nie z bloku 170. Wejście pośredniczące klienta jest tworzone przez wykonanie operacji przedstawionych w bloku 173. W bloku 173 moduł przechwytujący 30 klienta tworzy wejście pośredniczące klienta przez zapamiętanie UTL strumienia danych HTTP odebranych z modułu przechwytującego 40 strony serwera przez zapamiętanie wartości CRC strumienia danych HTTP odebranych z modułu przechwytującego 40 strony serwera i przez zapamiętanie strumienia danych HTTP. Moduł przechwytujący 30 klienta uaktualnia wartości SDT lub zapamiętuje wartości SDT przez odjecie od bieżącej daty i czasu wieku odebranego przez zewnętrzną linię komunikacyjną 35 z modułu przechwytującego 40 strony serwera.
Chociaż wejście pośredniczące klienta jest tworzone przez wykonanie operacji przedstawionych w blokach 176, 172, lub 173 moduł przechwytujący 30 klienta przesyła lub dostarcza wejście pośredniczące klienta do przeglądarki 10 jako strumień danych HTTP. Te operacje są pokazane w bloku 174 z fig. 4.
180 570
Wejście pośredniczące klienta i wejście pośredniczące serwera mogą być zrealizowane w pamięci lub pamięci masowej takiej jak twardy dysk, dyski CD-ROMS, optyczne lub w innych technikach pamięciowych. Ponadto, moduł przechwytujący klienta i moduł przechwytujący serwera mogą być wykonane w postaci sprzętowej, programowej lub w ich kombinacji.
Chociaż w przedstawianych przypadkach pamięci pośredniczące są umieszczane w pierwszym lub drugim komputerze 5 i 6, korzystne jest także, gdy pamięć pośrednicząca nie jest umieszczona w pierwszym komputerze 5 ale znajduje się po prostu po tej samej stronie zewnętrznej linii komunikacyjnej 35 jak komputer. Zatem sprzętowy element pośredniczący służący jako element pośredniczący klienta może być umieszczony na zewnątrz pierwszego komputera 5 i być z nim połączony szybką transmisją również, gdy element pośredniczący jest po tej samej stronie co pierwszy komputer 5.
W alternatywnym rozwiązaniu według wynalazku, moduł przechwytujący 40 strony serwera nie utrzymuje kopii strumienia danych HTTP odebranych z serwera 20, ale po prostu utrzymuje element katalogu dla transmisji. Element katalogu zawiera URL transmisji, wartości CRC obliczone dla strumienia danych HTTP i czas odbioru strumienia danych HTTP z serwera i wartości SDT dla transmisji, który może być przyjęty jako czas, w którym były obliczane wartości CRC. W takim przypadku, gdy moduł przechwytujący 30 klienta wysyła żądanie do modułu przechwytującego 40 strony serwera dla transmisji, która odpowiada lokalizatorowi URL, dla którego moduł przechwytujący 40 strony serwera utrzymuje wartości CRC i STD, następnie moduł przechwytujący 40 strony serwera sprawdza wartości CRC otrzymane z modułu przechwytującego 30 klienta dla określenia czy odpowiada on wartości CRC ostatniego strumienia danych HTTP dla określonego lokalizatora URL. Jeżeli tak, to wysyłana jest koherentna odpowiedź do modułu przechwytującego 30 klienta. Jeżeli nie, to moduł przechwytujący 40 strony serwera przesyła strumień danych HTTP otrzymany z modułu przechwytującego 30 klienta do serwera 20 i odsyła do modułu przechwytującego 30 klienta odpowiedź otrzymaną z serwera 20.
Figury 7, 8, 9 i 10 przedstawiają sieć działań operacji wykonywanych przez moduł przechwytujący 30 klienta i moduł przechwytujący 40 strony serwera w innym rozwiązaniu według wynalazku, które wykorzystuje różnicowanie dla ograniczenia danych przesyłanych przez zewnętrzne łącze komunikacyjne 35. Jak pokazano na fig. 7 blok 200 ilustruje potwierdzenie przez moduł przechwytujący 30 klienta żądania HTTP z przeglądarki 10. Jak pokazano w bloku 205, moduł przechwytujący 30 klienta sprawdza przejęte żądanie HTTP z przeglądarki 10 dla stwierdzenia, czy jest to żądanie do wspólnego interfejsu przejścia (CGI). Jeżeli nie jest to żądanie do interfejsu to moduł przechwytujący 30 klienta przepuszcza żądanie do modułu przechwytującego 40 strony serwera jak pokazano na fig. 3 do 6 i przedstawiono w bloku 206 z fig. 7.
Jeżeli jednakże transmisja pochodząca z przeglądarki odpowiada żądaniu interfejsu CGI to obierana jest ścieżka tak z bloku 205. Jak pokazano w bloku 205, moduł przechwytujący 30 klient/serwer określa, czy istnieje bazowe wejście pośredniczące klienta odpowiadające strumieniowi danych HTTP, który był poprzednio dostarczony do przeglądarki w odpowiedzi na odpowiednie żądanie interfejsu CGI. To sprawdzenie żądania interfejsu CGI może być wykonane przez porównanie lokalizatora. URL transmisji pochodzącej z przeglądarki z lokalizatorem URL zapamiętanym w bazowym wejściu pośredniczącym klienta.
Bazowe wejście pośredniczące klienta może być inicjalizowane przez zapamiętanie pierwszego strumienia danych HTTP.odebranego przez moduł przechwytujący 30 klienta, który ma być dostarczony do przeglądarki 10 dla danego lokalizatora URL. To bazowe wejście pośredniczące może być utrzymywane przez wiele żądań lub sesji przeglądarki 10. Bazowe wejście pośredniczące klienta może być aktualizowane jak pokazano na fig. 7, 8, 9 i 10. Jeżeli istnieje bazowe wejście pośredniczące klienta odpowiadające lokalizatorowi URL dla transmisji pochodzącej z przeglądarki, to wartość CRC, która ma być wysłana do modułu przechwytującego 40 strony serwera przez zewnętrzne łącze komunikacyjne 35 jest ustalana jako równa wartość CRC dla bazowego wejścia pośredniczącego klienta, jak pokazano w bloku 211 z fig. 7. Jeżeli nie istnieje bazowe wejście pośredniczące klienta, to obierana jest
180 570 ścieżka nie z bloku 210 z fig. 7 i wartość CRC dla żądania, która ma być wysłana przez zewnętrzne łącze komunikacyjne 35 do modułu przechwytującego 40 strony serwera jest kasowane. Ta operacja jest przedstawiona w bloku 212 z fig. 7.
Blok 213 przedstawia operacje wysyłania żądania interfejsu CGI do modułu przechwytującego 40 strony serwera przez zewnętrzne łącze komunikacyjne 35. Jak przedstawiono w bloku 213 moduł przechwytujący 30 klienta przesyła żądanie HTTP i żądanie wartości CRC, które albo zostało ustalone na zero, jeżeli nie istnieje bazowe wejście pośredniczące klienta dla lokalizatora URL żądania interfejsu CGI lub zostało ustalone jako wartość CRC bazowego wejścia pośredniczącego klienta, jeżeli wejście istnieje. Tak wiec moduł przechwytujący 30 klienta przekształca żądanie interfejsu CGI na specjalny protokół klient/serwer, przesyła specjalną transmisję klient/serwer, która ma być odebrana przez moduł przechwytujący 40 strony serwera, przez zewnętrzne łącze komunikacyjne 35.
Działania podjęte przez moduł przechwytujący 40 strony serwera, gdy odebrane jest żądanie interfejsu CGI jest przedstawione na fig. 9. Potwierdzenie żądania interfejsu CGI przez moduł przechwytujący 40 strony serwera jest pokazane w bloku 220. Gdy moduł przechwytujący 40 strony serwera odbiera żądanie interfejsu CGI zapamiętuje on kopię wartości CRC i żądania HTTP. Jak pokazano w bloku 221 moduł przechwytujący 40 strony serwera przesyła żądanie HTTP do serwera 20.
Gdy moduł przechwytujący 40 strony serwera odbiera odpowiedź na żądanie HTTP odpowiadające transmisji pochodzącej z przeglądarki, lub żądanie interfejsu CGI, moduł przechwytujący 40 strony serwera odbiera tą odpowiedź jako strumień danych HTTP, jak pokazano w bloku 230 z fig. 10. Moduł przechwytujący 40 strony serwera zapamiętuje strumień danych HTTP i oblicza wartość CRC dla strumienia danych HTTP odebranych z serwera 20. Moduł przechwytujący 40 strony serwera zeruje także wartości różnicowe dla inicjalizacji różnicy danych. Moduł przechwytujący 40 strony serwera określa następnie, czy odpowiedź otrzymana jako transmisja pochodzącą z serwera jest odpowiedzią na żądanie interfejsu CGI, jak pokazano w bloku 235. Jeśli tak, to obierana jest ścieżka nie z bloku 235 z fig. 10 i realizowane są operacje w bloku 236 dla wysłania strumienia danych HTTP do modułu przejmującego klienta. Jak pokazano w bloku 236 ta operacja może polegać na tworzeniu elementu pośredniczącego, co pokazano na fig. 3 do 6. Jeżeli odpowiedź odebrana w bloku 230 jest odpowiedzią na żądanie interfejsu CGI to obierana jest ścieżka tak z bloku 235 i moduł przechwytujący 40 strony serwera określa następnie czy istnieje bazowe wejście pośredniczące serwera dla odpowiedzi interfejsu CGI, jak pokazano w bloku 240.
Bazowe wejście pośredniczące serwera może być utworzone, gdy moduł przechwytujący 40 strony serwera pierwszy raz odbiera odpowiedź na żądanie interfejsu CGI. W tym przypadku wynik warunku przedstawionego w bloku 240 będzie powodował obranie ścieżki nie z bloku 240. Moduł przechwytujący 40 strony serwera będzie następnie tworzył bazowe wejście pośredniczące serwera odpowiadające żądaniu interfejsu CGI przez zapamiętanie lokalizatora URL dla interfejsu CGI, strumienia danych HTTP dla odpowiedzi na żądanie interfejsu CGI i wartości CRC dla strumienia danych HTTP. Ta operacja jest przedstawiona w bloku 241. Dla zgodności z koherentnym systemem tworzenia elementu pośredniczącego opisanego na fig. 3 do 6 bazowe wejście pośredniczące serwera może także zawierać wartości SDT. Termin forma bazowa interfejsu CGI serwera odnosi się tutaj do bazowego wejścia pośredniczącego serwera odpowiadającego żądaniu interfejsu CGI otrzymanemu z przeglądarki 10.
Jeżeli istnieje bazowe wejście pośredniczące serwera odpowiadające żądaniu interfejsu CGI to obierana jest ścieżka tak z bloku 240. Moduł przechwytujący 40 strony serwera porównuje wartość CRC bazowego wejścia pośredniczącego serwera z wartościami CRC odpowiedzi otrzymanej z serwera 20. Te operacje są przedstawione w bloku 245 z fig. 10. Jeżeli wartości CRC są takie same to moduł przechwytujący 40 strony serwera określa czy wartości CRC bazowego wejścia pośredniczącego serwera odpowiada wartości CRC bazowego wejścia pośredniczącego klienta. Jeżeli te dwie wartości są takie same to bazowe wejście pośredniczące klienta, bazowe wejście pośredniczące serwera i odpowiedź otrzymana z serwera 20, wszystkie zawierają ten sam strumień danych HTTP. Porównanie bazowego wejścia pośredniczącego serwera i bazowego wejścia pośredniczącego klienta jest przedstawione w bloku 250.
180 570
Jeżeli oba bazowe wejścia pośredniczące są takie same to moduł przejmujący strony serwera nie potrzebuje przesyłać bazowego wejścia pośredniczącego do modułu przechwytującego 30 klienta, a więc jak pokazano w bloku 251, strumień danych HTTP, który ma być przesłany do modułu przechwytującego 30 klienta jest zerowany. Moduł przechwytujący 40 strony serwera będzie następnie przetwarzał strumień danych HTTP odebrany z serwera 20 w specjalny protokół komunikacyjny klient/serwer przez przesłanie wartości CRC strumienia danych HTTP zapamiętanego w bazowym wejściu pośredniczącym serwera, odpowiadającego żądaniu interfejsu CGI, wyzerowany strumień danych HTTP i wyzerowana różnica danych dla wskazania, że odpowiedź na żądanie interfejsu CGI była identyczna z bazowym wejściem pośredniczącym klienta, jak pokazano w bloku 252.
Wracając do bloku 245, jeżeli wartość CRC dla bazowego wejścia pośredniczącego serwera odpowiadającego żądaniu interfejsu CGI jest różna niż wartość CRC dla odpowiedzi otrzymanej z serwera w odpowiedzi na żądanie interfejsu CGI pochodzące z przeglądarki to obierana jest ścieżka nie z bloku 245. Moduł przechwytujący 40 strony serwera będzie następnie wykonywał operacje przedstawione w bloku 246. Moduł przechwytujący 40 strony serwera porównuje przejętą odpowiedź interfejsu CGI do bazowego wejścia pośredniczącego serwera odpowiadającą przejętemu żądaniu interfejsu CGI lub bazowej formie interfejsu CGI serwera.
To porównanie przejętej odpowiedzi interfejsu CGI z bazową formą CGI serwera daje różnicę danych interfejsu CGI, która odpowiada różnicy pomiędzy przejętą odpowiedzią interfejsu CGI i formą bazową interfejsu CGI serwera. Różnicowanie może być wykonane dowolnym sposobem pozwalającym określić różnicę pomiędzy formą podstawową a formą zmodyfikowaną.
Moduł przechwytujący 40 strony serwera określa następnie czy forma bazowa interfejsu CGI serwera wymaga aktualizacji, jak pokazano w bloku 247. To określenie może być wykonane przez ustalenie, czy średnia różnica danych pomiędzy przejętą odpowiedzią interfejsu CGI i formą bazową interfejsu CGI serwera jest powyżej wstępnie ustalonego progu. Inne sposoby określenia czy bazowe wejście pośredniczące serwera odpowiadające żądaniu interfejsu CGI powinno być aktualizowane mogą zawierać koherentność czasu, tak jak przedstawiono na fig. 3 do 6 lub inne sposoby pozwalające określić, czy różnica danych wzrosła w takim stopniu, że przebazowanie dla utworzenia nowego bazowego wejścia pośredniczącego może poprawić parametry systemu.
Jeżeli przebazowanie nie jest wymagane to obierana jest ścieżka nie z bloku 247 i moduł przechwytujący 40 strony serwera będzie następnie wykonywał operacje przedstawione w bloku 250 dla określenia czy wartość CRC bazowego wejścia pośredniczącego klienta jest taka sama jak wartość CRC bazowego wejścia pośredniczącego serwera lub forma bazowa interfejsu CGI serwera jest identyczna z formą bazową interfejsu CGI klienta, które są wejściami pośredniczącymi serwera i klienta, które odpowiadają określonemu żądaniu interfejsu CGI z transmisji pochodzącej z przeglądarki. Jeżeli formy bazowe są takie same to klient nie potrzebuje być przebazowany i strumień informacji HTTP jest zerowany, jak przedstawiono w bloku 251. Moduł przechwytujący 40 strony serwera będzie następnie wysyłał różnicę odpowiedzi do modułu przechwytującego 30 klienta przez wysłanie wartości CRC bazowego wejścia pośredniczącego serwera odpowiadającego żądaniu interfejsu CGI (to jest wartości CRC formy bazowej interfejsu CGI serwera), przez wysłanie wyzerowanego strumienia danych HTTP który odpowiada danym bazowym i przez wysłanie różnicy danych określonych w bloku 246. Te operacje sąponownie pokazane jako blok 252 z fig. 10.
Jeżeli moduł przechwytujący 40 strony serwera określi, że wartości CRC nie są takie same dla formy bazowej CGI klienta i formy bazowej interfejsu CGI serwera to klient powinien się przebazować. Operacja przebazowania klienta zawiera wysłanie formy bazowej interfejsu CGI serwera do modułu przechwytującego 30 klienta. Dla wykonania tej operacji moduł przechwytujący 40 strony serwera ustala, strumień danych HTTP jakie mają być przesłane do modułu przechwytującego 30 klienta, jako równy formie bazowej interfejsu CGI serwera. Ta operacja jest przedstawiona w bloku 253. Moduł przechwytujący 40 strony serwera przekształca strumień danych HTTP odebranych z serwera w specjalny protokół klient/serwer
180 570 przez przesłanie wartości CRC formy bazowej interfejsu CGI, strumienia danych HTTP odpowiadającego formie bazowej interfejsu CGI serwera i przesłaniu różnicy danych pomiędzy formą bazową interfejsu CGI, a odpowiedzią odebraną z serwera, jak pokazano w bloku 252. Ta informacja jest następnie przesyłana przez zewnętrzne łącze komunikacyjne 35 do modułu przechwytującego 30 klienta.
Wracając do bloku 247, jeżeli wymagane jest przebazowanie serwera to obierana jest ścieżka tak z bloku 247. Jak pokazano w bloku 248 moduł przechwytujący 40 strony serwera aktualizuje bazowe wejście pośredniczące serwera odpowiadające transmisji pochodzącej z przeglądarki ze strumieniem danych HTTP otrzymanym z serwera. Wartość CRC odpowiedzi jest także aktualizowana, a różnica danych interfejsu CGI jest zerowana. Moduł przechwytujący 40 strony serwera porównuje następnie wartość CRC nowego wejścia pośredniczącego serwera, jak pokazano w bloku 250 i kończy przesyłanie jak opisano powyżej.
Działania modułu przechwytującego 30 klienta po potwierdzeniu odpowiedzi modułu przechwytującego 40 strony serwera są pokazane na fig. 8. Potwierdzenie odpowiedzi modułu przechwytującego 40 strony serwera przez moduł przechwytujący 30 klienta jest przedstawione w bloku 260. Jak pokazano w bloku 265 moduł przechwytujący 30 klienta określa, czy odpowiedź jest odpowiedziąna żądanie interfejsu CGI. Jeżeli odpowiedź nie jest odpowiedzią na żądanie interfejsu CGI to moduł przechwytujący 30 klienta wykonuje operacje w bloku 267, które mogą zawierać operacje tworzenia elementu pośredniczącego pokazane na fig. 3 do 6. Jeżeli jednak odpowiedź jest odpowiedzią na żądanie interfejsu CGI to obierana jest ścieżka tak z bloku 265. Moduł przechwytujący 30 klienta zapamiętuje dane strumienia danych HTTP, dane różnicy i wartość CRC uzyskaną ze specjalnego strumienia danych klient/serwer przesyłanego przez zewnętrzne łącze komunikacyjne. Te operacje są przedstawi one w bloku 266 na fig. 8.
Moduł przechwytujący 30 klienta określa, czy istnieje bazowe wejście pośredniczące klienta odpowiadające przejętemu żądaniu interfejsu CGI, które zawiera formę bazową CGI klienta. To badanie jest pokazane w bloku 270 i może być wykonane przez sprawdzenie lokalizatora URL żądania HTTP lub odpowiedzi HTTP. Jeżeli istnieje forma bazowa interfejsu CGI klienta to obierana jest ścieżka tak z bloku 270. Moduł przechwytujący 30 klienta porównuje następnie wartości CRC otrzymane przez zewnętrzne łącze komunikacyjne z wartościami CRC formy bazowej interfejsu CGI klienta, jak pokazano w bloku 275. Jeżeli są one różne, to obierana jest ścieżka nie z bloku 275 i klient przebazowuje się uaktualniając formę bazową interfejsu CGI przez zamianę bazowego wejścia pośredniczącego klienta odpowiadającego lokalizatora URL żądania interfejsu CGI z transmisji pochodzącej z przeglądarki ze strumieniem danych HTTP otrzymanym przez zewnętrzne łącze komunikacyjne 35 z modułu przechwytującego 40 strony serwera. Bazowe wejście pośredniczące klienta także jest uaktualnione w stosunku do wartości CRC dla strumienia danych HTTP. Te operacje są przedstawione w bloku 276 na fig. 8.
Jeżeli wartość CRC otrzymana przez zewnętrzne łącze komunikacyjne 35 jest taka sama jak wartość CRC formy bazowej interfejsu CGI to forma bazowa interfejsu CGI serwera modułu przejmującego strony serwera jest taka sama jak forma bazowa interfejsu CGI klienta modułu przechwytującego 30 strony klienta i obierana jest ścieżka tak z bloku 275.
Jeśli formy bazowe są takie same lub klient jest przebazowywany, operacje przedstawione w bloku 277 są wykonywane przez moduł przechwytujący 30 klienta. Blok 277 przedstawia odtwarzanie przez moduł przechwytujący 30 klienta strumienia danych HTTP odpowiadającego transmisji z serwera 20 ze specjalnego strumienia danych klient/serwer otrzymanego przez zewnętrzne łącze komunikacyjne 35, przez łączenie formy bazowej interfejsu CGI klienta z różnicą danych interfejsu CGI otrzymaną przez zewnętrzne łącze komunikacyjne 35 dla utworzenia strumienia danych HTTP odpowiadającego przejętej odpowiedzi interfejsu CGI. Jak pokazano w bloku 278 ta odpowiedź jest następnie dostarczana do przeglądarki jako strumień danych HTTP.
Jeżeli nie istnieje forma bazowa interfejsu CGI w odpowiadającym lokalizatorze URL klienta żądaniu interfejsu CGI to obierana jest ścieżka nie z bloku 270 z fig. 8. Jak pokazano w bloku 271 moduł przechwytujący 30 klienta tworzy bazowe wejście pośredniczące
180 570 klienta odpowiadające lokalizatorowi URL żądania interfejsu CGI, przez zapamiętanie lokalizatora URL, wartości CRC strumienia danych HTTP, odebranego przez zewnętrzne łącze komunikacyjne 35 z modułu przechwytującego 40 strony serwera i aktualnych danych strumienia danych HTTP. Zapamiętując te informacje tworzy bazowe wejście pośredniczące klienta odpowiadające przejętemu żądaniu interfejsu CGI, a więc tworzy formę bazową interfejsu CGI klienta. Moduł przechwytujący. 30 klienta może następnie wykonać operacje z bloku 277 przez odtworzenie strumienia danych HTTP przez dodawanie lub łączenie formy bazowej interfejsu CGI klienta ż. różnicą danych interfejsu CGI, które mogły zostać wyzerowane.
Przedstawiona technika różnicowania może także być zastosowana do danych nie będących danymi interfejsu CGI. W takim przypadku moduł przechwytujący 40 strony serwera może potrzebować utworzyć wiele bazowych wejść pośredniczących serwera dla umożliwienia, aby moduły przechwytujące 30 przeglądarek dołączone do serwera mogły mieć różne formy bazowe. Moduł przechwytujący 40 strony serwera może następnie porównać wartości CRC otrzymane z modułu przechwytującego 30 strony klienta z wartościami CRC każdej wcześniej utworzonej formy bazowego serwera aż do uzyskania zgodności. Moduł przechwytujący 40 strony serwera może następnie opcjonalnie przebazować moduł przechwytujący 30 klienta lub po prostu dostarczyć dane różnicowe do modułu przechwytującego 30 klienta. Tak więc metodologie różnicowania opisane tu w odniesieniu do żądania interfejsu CGI mogą również być stosowane do dowolnego żądania lub odpowiedzi HTTP.
Dla ograniczenia pamięci lub wymagań dotyczących zapamiętywania i stosowania sposobów tworzenia elementów pośredniczących opisanych powyżej można stosować następujące korzystne sposoby różnicowania żądań nie będących żądaniami interfejsu CGI. W tym korzystnym wykonaniu moduł przechwytujący strony serwera oblicza różnicę pomiędzy formą bazową serwera odpowiadającą żądaniu i strumieniowi danych HTTP odpowiedzi z serwera. Te dane różnicowe są następnie zapamiętywane w module przechwytującym strony serwera. Forma bazowa serwera jest następnie aktualizowana przez zastępowanie formy bazowej nową odpowiedzią serwera z uwzględnieniem aktualizacji wartości CRC formy bazowej: Jednakże zamiast odrzucenia starej wartości CRC, wartości CRC poprzednich form bazowych są zapamiętywane jako dane różnicowe. Poprzednie generacje danych różnicowych i wartości CRS są następnie selektywnie przesyłane do modułu przejmującego strony klienta oparty na wartości CRC formy bazowej klienta odpowiadającej żądaniu nieodpowładającemu interfejsu CGI.
Jako przykład sposobu różnicowania danych nie będących danymi interfejsu CGI, gdy moduł przechwytujący strony serwera odbiera żądanie danych nie będących danymi interfejsu CGI temu żądaniu powinna towarzyszyć wartość CRC formy bazowej umieszczonej w module przejmującym strony klienta odpowiadające lokalizatorowi URL żądania danych nie będących danymi interfejsu CGI. Gdy moduł przechwytujący strony serwera odebrał odpowiedź od serwera, może obliczyć wartość CRC odpowiedzi. Moduł przechwytujący strony serwera oblicza następnie różnicę pomiędzy odpowiedzią i formą bazową serwera dla lokalizatora URL i zapamiętuje różnice danych. Moduł przechwytujący strony serwera uaktualnia formę bazową serwera z danymi odpowiedzi i archiwizuje wartość CRC poprzedniej formy bazowej i różnicę danych pomiędzy odpowiedzią i’starą formą bazową. Moduł przechwytujący strony serwera porównuje następnie wartość CRC formy bazowej klienta z wartością CRC formy bazowej serwera i dowolna zapamiętaną lub zarchiwizowaną wartością CRC dla określenia czy zaistniała zgodność. Jeżeli nie ma zgodności, odpowiedź jest po prostu wysyłana do modułu przechwytującego strony klienta.
Jeżeli istnieje zgodność to dane różnicowe odpowiadające zgodnym wartością CRC i kolejne dane różnicowe włączając w to bieżące dane różnicowe są przesyłane do modułu przechwytującego strony klienta. Moduł przechwytujący strony klienta dołącza dane różnicowe do formy bazowej klienta, dla odtworzenia odpowiedzi. Tak więc jeżeli istnieje zgodność wartości CRC z wartością CRC formy bazowej starszej o trzy generacje to trzy zestawy danych różnicowych powinny być wysłane do modułu przechwytującego strony klienta,
180 570 a rekonstrukcja odpowiedzi powinna być wykonana przez dołączenie trzech kolejnych zestawów danych różnicowych do formy bazowej klienta. Jeżeli jednakże liczba zestawów danych różnicowych lub rozmiar zestawów danych różnicowych wymaganych to rekonstrukcja odpowiedzi jest tak duża, że przesłanie rzeczywistej odpowiedzi wymaga mniejszego transferu danych to sama odpowiedź może być przesłana przez moduł przechwytujący strony serwera. W każdym przypadku po rekonstrukcji lub odebraniu odpowiedzi moduł przechwytujący strony klienta powinien uaktualnić formę bazową klienta dla żądania lokalizatora URL z danymi odpowiedzi i uaktualnić wartość CRC z wartością CRC odpowiedzi. Ponieważ forma bazowa klienta jest uaktualniana za każdym razem, gdy jest odbierana odpowiedź dla określonego lokalizatora URL, element pośredniczący klienta opisany powyżej może być stosowany jako element pośredniczący dla formy bazowej klienta, eliminując przez to potrzebę oddzielnego elementu pośredniczącego form bazowych klienta, jeżeli stosuje się różnicowanie dla żądań nie będących w zgodzie z interfejsem CGI.
Dodatkowe oszczędności w transmisji mogą być uzyskane na bazie redundancji bezstanowego protokółu komunikacyjnego takiego jak HTTP. W takim protokole klient przesyła informacje o sobie do serwera za każdym razem, gdy inicjowana jest transmisja. Podobnie serwer podaje klientowi specjalne informacje o sobie, gdy inicjowana jest odpowiedź.
W alternatywnym przykładzie wykonania wynalazku, pierwszy komputer 5 przesyła do drugiego komputera 6 specjalne informacje komputerowe odpowiadające zdefiniowanym charakterystykom komputera. Drugi komputer 6 zapamiętuje te specjalne informacje komputerowe. Następnie pierwszy komputer 5 usuwa te specjalne informacje komputerowe z kolejnych transmisji pochodzących z przeglądarki przed transmisją przez zewnętrzne łącze komunikacyjne 35. Drugi komputer 6 odtwarza następnie oryginalne transmisje pochodzące z przeglądarki przez łączenie zapamiętanych specjalnych informacji komputerowych z kolejnymi transmisjami odbieranymi przez zewnętrzne łącze komunikacyjne 35, dla utworzenia strumienia danych HTTP.
Oprócz usunięcia specjalnych informacji komputerowych z transmisji pochodzących z przeglądarki te specjalne informacje komputerowe mogą być także usunięte z transmisji pochodzących z serwera. W takim przypadku drugi komputer 6 z fig. 2 dostarcza do pierwszego komputera 5 przez zewnętrzne łącze komunikacyjne 35 specjalne informacje komputerowe odpowiadające zdefiniowanym charakterystykom drugiego komputera 6. Pierwszy komputer 5 zapamiętuje te specjalne informacje dla uzyskania informacji nagłówkowych serwera w kolejnych transmisjach, drugi komputer 6 usuwa te specjalne informacje komputerowe z kolejnych transmisji pochodzących z serwera i przesyła pozostałą część transmisji pochodzącej z serwera przez zewnętrzne łącze komunikacyjne 35. Pierwszy komputer 5 odbiera transmisje przez zewnętrzne łącze komunikacyjne i odtwarza oryginalne transmisje pochodzące z serwera przez łączenie informacji nagłówkowych serwera ze strumieniem specjalnych danych klient/serwer odbieranym przez zewnętrzne łącze komunikacyjne, dla utworzenia strumienia danych HTTP. W obu przypadkach operacje usuwania specjalnych informacji komputerowych i zapamiętywania informacji dla tworzenia albo informacji nagłówkowych serwera, albo informacji nagłówkowych klienta są wykonywane przez moduł przechwytujący 30 strony klienta, albo przez moduł przechwytujący 40 strony serwera zależnie od tego, czy operacja jest wykonywana na pierwszym komputerze 5 czy na drugim komputerze 6.
W rozwiązaniu według wynalazku przeglądarka 10 może komunikować się z modułem przechwytującym 30 strony klienta wykorzystując Protokół Kontroli Transmisji/Protokół Internetowy (TCP/IP). Protokół TCP może także być używany do komunikacji pomiędzy modułem przechwytującym 30 strony klienta a modułem przechwytującym 40 strony serwera przez zewnętrzne łącze komunikacyjne 35. Na koniec, protokół TCP może być używany do komunikacji pomiędzy modułem przechwytującym 40 strony serwera, a serwerem 20. Chociaż protokół TCP może być używany do komunikacji pomiędzy różnymi składnikami tworzącymi system, protokół HTTP nie daje jednak najskuteczniejszych środków dla komunikacji przez zewnętrzne łącze komunikacyjne. Dla poprawy parametrów zewnętrznego łącza
180 570 komunikacyjnego 35, tworzy się gniazda wirtualne, które są używane w połączeniu pomiędzy przeglądarka, a modułem przechwytującym 30 strony klienta i pomiędzy modułem przechwytującym 40 strony serwera, a serwerem 20. Działanie tego gniazda wirtualnego będzie opisane w odniesieniu do figur 11 do 17.
Figura 11 przedstawia schemat blokowy jednego z możliwych wykonań wynalazku wykorzystującym koncepcje gniazda wirtualnego. Jak pokazano na fig. 11 pierwszy komputer 5 i drugi komputer 6 sąpołączone przez zewnętrzne łącze komunikacyjne 35. Przeglądarka 10 ma wiele rzeczywistych gniazd, które łączą przeglądarkę 10 z modułem przechwytującym 30 strony klienta. Jak pokazano na fig. 11 pierwsze rzeczywiste gniazdo jest oznaczone jako 65a na przeglądarce 10, a odpowiadającym gniazdem jest 65b na module przechwytującym 30 strony klienta. To pierwsze rzeczywiste gniazdo jest gniazdem połączenia TCP realizującego protokół TCP, przez które żądania przeglądarki 10 są dalej łączone z modułem przechwytującym 30 strony klienta.
Gdy przeglądarka 10 żąda nowego połączenia TCP komunikacja zachodzi przez realne gniazdo 65a, które jest odbierane przez realne gniazdo 65b. Moduł przechwytujący 30 strony klienta będzie następnie tworzył kolejne rzeczywiste gniazdo dla komunikacji z przeglądarką 10. Jak pokazano na fig. 11, wiele rzeczywistych gniazd jest tworzone na przeglądarce 10 odpowiadających realnym gniazdom tworzonym na module przechwytującym 30 strony klienta. Te realne gniazda są oznaczone jako 60a do 64a na przeglądarce i 60b do 64b na module przechwytującym 30 strony klienta. Te realne gniazda są elementami, przez które przeglądarka komunikuje się z modułem przechwytującym 30 strony klienta. Po utworzeniu realnych gniazd 60a do 64a i 60b do 64b transmisje przez te gniazda są multipleksowane na realne gniazdo 36a, które zapewnia dostęp modułu przechwytującego 30 strony klienta do zewnętrznego łącza komunikacyjnego 35. Rzeczywiste gniazda 36a i 36b są tworzone, gdy żądanie jest przesyłane przez rzeczywiste gniazdo 37a pierwszego komputera 5 do rzeczywistego gniazda 37b drugiego komputera 6. Po potwierdzeniu żądanego połączenia przez rzeczywiste gniazdo 37b tworzone są rzeczy wiste gniazda 36a i 36b. Gniazda 37a i 37b działają jak pierwsze rzeczywiste gniazda dla komunikacji między modułem przechwytującym strony klienta i modułem przejmującym strony serwera i mogą być wykorzystywane tylko dla ustanowienia połączenia pomiędzy dwoma modułami przedstawianymi przez gniazda 36a i 36b. Każde z tych rzeczywistych gniazd działa pod standardowymi protokołami TCP/IP. Gdy transmisje są odbierane przez drugi komputer 6 przez zewnętrzne łącze komunikacyjne 35 są one odbierane w rzeczywistym gnieździe 36b. Moduł przechwytujący 40 strony serwera demultipleksuje następnie transmisje odebrane na gnieździe 36b i dostarcza je na odpowiednie gniazdo dla transmisji do serwera 20. Tak więc, na przykład transmisje przez gniazdo 60a do gniazda 60b dla żądania informacji ze specjalnego lokalizatora URL będą multipleksowane na gniazdo 36a, odebrane na gnieździe 36b, demultipleksowane przez moduł przechwytujący 40 strony serwera i przesyłane z gniazda 60c do gniazda 60d na serwerze 20. Podobnie transmisje pojawiające się na gnieździe 61a są odbierane przez gniazdo 61b multipleksowane przez moduł przechwytujący 30 strony klienta i przesyłane z gniazda 36a do gniazda 36b, gdzie moduł przechwytujący 40 strony serwera demultipleksuje transmisję i przesyła ją z gniazda 61c do gniazda 61 d. Tak transmisje przez gniazda 60a i 60b, 61a i 61b, 62a i 62b, 63a i 63b oraz 64a i 64b są przesyłane przez odpowiednie gniazda pomiędzy modułem przechwytującym 40 strony serwera a serwerem 20 przez gniazda 60c i 60d, 61 c i 6Id, 62c i 62d, 63c i 63d i 64c oraz 64d.
W podobny sposób odpowiedzi na żądanie z przeglądarki 10 przez serwer 20 są także przesyłane przez gniazda połączone z serwerem 20 do modułu przechwytującego 40 strony serwera i przez zewnętrzne łącze komunikacyjne 35 do modułu przechwytującego 30 strony klienta, a następnie do przeglądarki 10. Tak więc na przykład odpowiedź pochodząca z serwera 20 może być przesłana przez gniazdo 60d do gniazda 60c i multipleksowana przez moduł przechwytujący 40 strony serwera do gniazda 36b, skąd jest przesyłana przez zewnętrzne łącze komunikacyjne 35 do gniazda 36a. Moduł przechwytujący 30 strony klienta następnie
180 570 demultipleksuje transmisję i podaje ją do gniazda 60b dla przesłania do gniazda 60a na przeglądarce 10. Podobna linia komunikacyjna jest ustalana dla każdego gniazda używanego przez przeglądarkę 10 lub serwer 20. Rozwiązanie według wynalazku zostało opisane w odniesieniu do czterech połączeń między gniazdami pomiędzy przeglądarką 10 i serwerem 20, przy czym dla zapewnienia komunikacji pomiędzy przeglądarką 10 i serwerem 20 może być otwarta dowolna liczba gniazd.
Figura 12 przedstawia schemat blokowy systemu gniazda wirtualnego w module przechwytującym 30 strony klienta i w module przechwytującym 40 strony serwera. Zewnętrzne do tych modułów rzeczywiste gniazda pomiędzy modułem przechwytującym 30 strony klienta i przeglądarką 10 oraz modułem przechwytującym 40 strony serwera i serwerem 20 funkcjonują jako normalne gniazda TCP/IP. Tak więc użycie gniazd wirtualnych jest przezroczyste dla przeglądarki 10 i serwera 20.
Szczegółowy opis rozwiązania będzie przedstawiony w odniesieniu do schematu blokowego z fig. 12 i sieci działań z figur 13 do 17. Fig. 13 przedstawia sieć działań dla zarządzającego gniazdami oznaczonymi jako blok 68 na fig. 12. Na fig. 13 blok 300 przedstawia tworzenie rzeczywistego zarządzającego gniazdami 68 modułu przechwytującego 30 strony klienta. Po utworzeniu rzeczywistego zarządzającego gniazdami 68, tworzy on pierwsze rzeczywiste gniazdo pokazane jako gniazdo 65b na fig. 12. Tworzenie tego pierwszego rzeczywistego gniazda pokazane jest jako blok 300 na fig. 13. Po utworzeniu pierwszego rzeczywistego gniazda 65b zarządzający gniazdami 68 umieszczony w module przechwytującym 30 strony klienta nazywany także zarządzającym gniazdami klienta, czeka na zdarzenie na pierwszym rzeczywistym gnieździe 65b, jak pokazano w bloku 102 na fig. 13. Gdy zdarzenie jest odebrane na pierwszym rzeczywistym gnieździe 65b rzeczywisty zarządzający gniazdami 68 bada zdarzenie i w oparciu o to badanie przyjmuje jedną z pięciu ścieżek wychodzących w bloku 305 na fig. 13.
Jeżeli rzeczywiste gniazdo jest utworzone w odpowiedzi na żądanie komunikacyjne odebrane na pierwszym rzeczywistym gnieździe 65b, to jak pokazano na ścieżce z bloku 305 do bloku 306 z fig. 13, rzeczywisty zarządzający gniazdami 68 dodaje rzeczywiste gniazdo do rzeczywistej listy zdarzeń i tworzy następnie simpleksowe wirtualne gniazdo jak pokazano w bloku 307. W przypadku modułu przechwytującego strony klienta rzeczywisty zarządzający gniazdami inicjuje funkcję aplikacyjną, która realizuje funkcję modułu przechwytującego strony klienta dla utworzonego gniazda wirtualnego, jak pokazano w bloku 308 z fig. 13.
Stosowany tutaj termin gniazdo simpleksowe lub wirtualne gniazdo simpleksowe odnosi się do gniazda, które łączy się bezpośrednio albo z jednym gniazdem, albo z jedną aplikacją. Stosowany tutaj termin gniazdo multipleksowe odnosi się do gniazda, które łączy się z wieloma innymi gniazdami. Tak więc gniazdo multipleksowe realizuje funkcje multipleksowania lub demultipleksowania, a gniazdo simpleksowe wykonuje połączenie jeden na jeden. Tak więc, na przykład wykonując funkcję z bloków 306 do 308 z fig. 13 zarządzający gniazdami 68 powinien, w odpowiedzi na pierwsze żądanie odebrane przez pierwsze rzeczywiste gniazdo 65b, utworzyć rzeczywiste gniazdo 60b, wirtualne gniazdo simpleksowe 70 i zainicjować funkcję przejmującą strony klienta w aplikacji 80. Podobnie, dla kolejnych zdarzeń gdzie tworzone jest gniazdo rzeczywiste, rzeczywisty zarządzający gniazdami 68 powinien utworzyć rzeczywiste gniazda 6Ib, 62b, 63b lub 64b i wirtualne gniazda simpleksowe 71, 72, 73, lub 74 i zainicjować funkcje CSI odpowiadającą utworzonym rzeczywistym i wirtualnym gniazdom oznaczonym jako bloki 81, 82, 83, lub 84 na fig. 12.
Działanie funkcji przejmującej strony klienta będzie opisane w odniesieniu do rzeczywistego gniazda 60b, wirtualnego gniazda simpleksowego 70 i funkcji przejmującej strony klienta 80, przedstawionych na fig. 12. Blok 325 z fig. 14 przedstawia tworzenie funkcji przejmującej strony klienta 80. Po utworzeniu, funkcja przejmująca strony klienta 80 oczekuje na zdarzenie na wirtualnym gnieździe simpleksowym 70, jak pokazano w bloku 326. Ta operacja oczekiwania jest wykonywana przez realizację wirtualnej funkcji wybierania opisanej na fig. 16-4. Po potwierdzeniu zdarzenia, jest ono badane, jak pokazano w bloku 330.
180 570
Jeżeli zdarzeniem jest zamknięcie gniazda wirtualnego, to funkcja przejmująca strony klienta 80 usuwa gniazdo simpleksowe 70 jak pokazano w bloku 349 i kończy działanie jak pokazano w bloku 350 z fig. 14.
Jeżeli zdarzeniem jest potwierdzenie danych, to przyjmowana jest ścieżka z bloku 330 do bloku 331, a funkcja przejmująca strony klienta 80 odbiera transmisję pochodzącą z przeglądarki z wirtualnego gniazda simpleksowego 70, przez wykonanie wirtualnej operacji odebrania opisanej tutaj w odniesieniu do fig. 16-3. Funkcja przejmująca strony klienta wykonuje następnie opisane powyżej działania modułu przechwytującego strony klienta (patrz na przykład fig. 3 i 7), które są pokazane w bloku 332. Funkcja przechwytująca strony klienta 80 tworzy następnie wirtualne gniazdo multipleksowe 90, dołączone do rzeczywistego gniazda 36a w module przechwytującym 30 strony klienta. Rzeczywiste gniazdo 36a jest dołączone do rzeczywistego gniazda 36b w module przechwytującym 40 strony serwera. Tworzenie wirtualnego gniazda multipleksowego jest przedstawione w bloku 333 fig. 14 i wykonane przez realizację wirtualnie utworzonej operacji opisanej tutaj w odniesieniu do fig. 16-1. Blok 334 przedstawia wysyłanie informacji otrzymanej z przeglądarki przez rzeczywiste gniazdo 60b i wirtualne gniazdo simpleksowe 70 po utworzeniu funkcji przechwytującej strony klienta 80 dla transmisji przeglądarki. Ta transmisja oczekuje w kolejce do wirtualnego gniazda multipleksowego 90 wykonując wirtualną operację wysyłania opisaną w odniesieniu do fig. 16-2. Funkcja przechwytująca strony klienta 80 po kolejkowaniu żądania do wirtualnego gniazda multipleksowego 90 usuwa dane kolejkowane w wirtualnym gnieździe multipleksowym 90, jak pokazano w bloku 335 z fig. 14, a następnie oczekuje na zdarzenie na wirtualnym gnieździe multipleksowym, jak pokazano w bloku 336. Wirtualna funkcja jest realizowana przez wykonanie wirtualnej operacji usuwania opisanej w odniesieniu do fig. 17-1, która pobiera dane z kolejki do wirtualnego gniazda multipleksowego i dostarcza dane do rzeczywistego gniazda 36a. Operacja oczekiwania może być wykonana przez realizację wirtualnej funkcji wybierania opisanej na fig. 16-4. W tym punkcie moduł przechwytujący strony klienta przejmuje transmisję pochodzącą z przeglądarki i przesyła transmisję do modułu przechwytującego strony serwera przez zewnętrzne łącze komunikacyjne 35.
Figura 13 przedstawia sieć działań zarządzającego gniazdami albo w module przechwytującym 40 strony serwera, albo w module przechwytującym 30 strony klienta. Rzeczywisty zarządzający gniazdami w module przejmującym strony serwera lub zarządzający gniazdami serwera, pokazany jako blok 69 na fig. 12 wykonuje te same funkcje co zarządzający gniazdami klienta pokazany jako blok 68. Tworząc pierwsze rzeczywiste gniazdo, jak pokazano w bloku-301 w module przechwytującym 30 strony klienta tworzy dobrze znany port 37b dla odbierania żądań dla gniazd od modułu przechwytującego 30 strony klienta związanych z modułem przechwytującym 40 strony serwera. Gdy zachodzi rzeczywiste zdarzenie na gnieździe 36b, w module przechwytującym 40 strony serwera, jest ono badane w bloku 305. W tym przypadku zdarzeniem jest potwierdzenie danych z rzeczywistego gniazda 36a, więc przyjmowana jest ścieżka z bloku 305 do bloku 320 na fig. 13. Dane odebrane na rzeczywistym gnieździe 36b są badane i w przypadku, gdy dane są transmisją pochodzącą z przeglądarki przesyłaną przez moduł przechwytujący 30 strony klienta, musi być utworzone nowe gniazdo wirtualne w module przechwytującym 40 strony serwera. Przyjmowana jest wiec ścieżka z bloku 320 do bloku 321 fig. 13. Zarządzający gniazdami serwera 69 wykonuje następnie operacje pokazane w bloku 321, w bloku 322, w bloku 323 i w bloku 324 z fig. 13. Zarządzający gniazdami serwera 69 tworzy wirtualne gniazdo multipleksowe 95, jak pokazano w bloku 321, anuluje zegar działania gniazda multipleksowego, jak pokazano w bloku 322 i inicjuje aplikację funkcji przechwytującej strony serwera, jak pokazano w bloku 323 fig. 13 i bloku 85 fig. 12. Dane odebrane na rzeczywistym gnieździe 36b, są następnie kolejkowane do wirtualnego gniazda multipleksowego 95 i sygnalizowane jest zdarzenie wirtualne.
Tworzenie funkcji przejmującej strony serwera, jak pokazano w bloku 323, jest pokazane jako .blok 360 na fig. 15.
Po utworzeniu funkcji przechwytującej strony serwera 85, funkcja otrzymuje dane z wirtualnego gniazda multipleksowego 95, które były wysłane z modułu przechwytującego
180 570 strony klienta i odpowiadają transmisji pochodzącej z przeglądarki. Ta operacja jest pokazana jako blok 361 z fig. 15. Po odebraniu danych z modułu przechwytującego 30 strony klienta, funkcja przechwytująca strony serwera 85, przetwarza dane, jak opisano powyżej dla modułu przechwytującego 40 strony serwera. Wykonanie działań strony serwera, jest pokazane w bloku 362 (patrz na przykład fig. 5 i 9). Po przetworzeniu informacji funkcja przechwytująca strony serwera, tworzy wirtualne gniazdo simpleksowe 75, wykonując tworzenie witrualne, co jest przedstawione w odniesieniu do fig. 16-1. Ta operacja jest pokazana jako blok 363 z fig. 15. Funkcja przechwytująca strony serwera 85 wysyła następnie transmisję pochodzącą z przeglądarki wirtualnego gniazda simpleksowego 75, jak pokazano w bloku 364, przez wykonanie wirtualnego wysłania, co jest opisane w odniesieniu do fig. 16-2. Funkcja przechwytująca strony serwera 85 wykonuje następnie wirtualne skasowanie usuniętych danych kolejkowanych w wirtualnym gnieździe simpleksowym 75 do rzeczywistego gniazda 60c i czeka na wydarzenie w wirtualnym gnieździe simpleksowym 75. Wirtualna operacja usunięcia jest opisana w odniesieniu do fig. 17-1. Operacje wysłania i usunięcia są pokazane w blokach 364 i 365 z fig. 15. Operacja oczekiwania może być realizowana przez wykonanie wirtualnej funkcji wyboru opisanej na fig. 16-4. Gdy funkcja przechwytująca strony serwera 85 tworzy wirtualne gniazdo simpleksowe 75, tworzone jest także odpowiednie gniazdo rzeczywiste 60c. Przez wysłanie transmisji pochodzącej z przeglądarki do wirtualnego gniazda simpleksowego 75 funkcja przechwytująca strony serwera 85 przesyła transmisję pochodzącą z przeglądarki do serwera.
Gdy moduł przechwytujący 40 strony serwera odbiera odpowiedź z serwera na rzeczywistym gnieździe 60c, zachodzi zdarzenie rzeczywiste i zarządzający gniazdami serwera 69 opuszcza blok 302 z fig. 13 i bada zdarzenie, które zachodzi na rzeczywistym gnieździe 60c, jak pokazano w bloku 305. W danym przypadku będą to dane dla istniejącego gniazda wirtualnego i będzie przyjęta ścieżka z bloku 320 na fig. 13 do bloku 324. Dane odebrane na rzeczywistym gnieździe 60c są kolejkowane do wirtualnego gniazda 75 i zdarzenie wirtualne jest sygnalizowane. Gdy jest sygnalizowane zdarzenie wirtualne funkcja przechwytująca strony serwera 85 opuszcza blok 366 z fig. 15 i bada zdarzenie, jak pokazano w bloku 370. Jeżeli zdarzeniem jest gniazdo zamknięte, to wystąpił błąd i błędny komunikat jest tworzony jako odpowiedź, jak pokazano w bloku 375 z fig. 15. Jednakże, jeżeli zdarzeniem jest potwierdzenie danych, to będzie przyjęta ścieżka z bloku 370 do bloku 371 i funkcja przechwytująca strony serwera 85 wykonuje wirtualny odbiór, jak opisano w odniesieniu do fig. 16-3, dla uzyskania odpowiedzi serwera z wirtualnego gniazda simpleksowego 75, jak pokazano w bloku 371. Funkcja przechwytująca strony serwera 85 wykonuje następnie wirtualne zamkniecie wirtualnego gniazda simpleksowego 75, jak pokazano w bloku 372 i opisano w odniesieniu do fig. 17-2 i przetwarza odpowiedź, jak opisano powyżej dla modułu przechwytującego strony serwera i pokazano w bloku 373 (patrz na przykład fig. 6 i 10).
Czy ścieżką wyjściową z bloku 370 z fig. 15 jest ścieżka błędu do bloku 375 czy ścieżka danych do bloku 371, w bloku 374 wirtualne gniazdo simpleksowe 75 jest usuwane. Funkcja przechwytująca strony serwera 85 wykonuje następnie wirtualną operację wysyłania do wirtualnego gniazda multipleksowego 95, dla przesłania transmisji pochodzącej z serwera do modułu przechwytującego 30 strony klienta, jak pokazano w bloku 376. Funkcja przechwytująca strony serwera 85 wykonuje następnie wirtualną operację usuwania, dla usunięcia danych kolejkowanych w wirtualnym gnieździe 95. Te operacje są pokazane w bloku 377. Funkcja przechwytująca strony serwera 85 wykonuje następnie wirtualną operację zamykania dla zamknięcia wirtualnego gniazda multipleksowego 95, jak pokazano w bloku 378 z fig. 15. Na koniec funkcja przechwytująca strony serwera 85 usuwa wirtualne gniazdo i kończy zadanie jak pokazano w blokach 379 i 380.
Funkcja przechwytująca strony serwera 85 wykonuje wirtualne operacje wysłania i usunięcia do wirtualnego gniazda multipleksowego 95. Te zdarzenia wyzwalające dzieją się na rzeczywistym gnieździe 36a a zarządzający gniazdami klienta 68 opuszcza blok 302 i bada zdarzenie jak pokazano w bloku 305, ponieważ dane są odbierane na rzeczywistym gnieździe
180 570
36a, przyjmowana jest ścieżka z bloku 305 do bloku 320 z fig. 13 i dane są kolejkowane do wirtualnego gniazda multipleksowego 90. Dlatego, gdy rzeczywiste gniazdo 36a odbiera odpowiedź serwera z rzeczywistego gniazda 36b poprzez zewnętrzne łącze komunikacyjne 35, ta informacja jest demultipleksowana i podawana na odpowiednie gniazdo wirtualne. Potwierdzenie danych powoduje powstanie zdarzenia wirtualnego, jak pokazano w bloku 324 fig. 13 i blok 336 fig. 14 powinien zostać opuszczony, a funkcja przechwytująca strony klienta 80 powinna zbadać zdarzenie jak pokazano w bloku 340 fig. 14.
Jeżeli zdarzeniem jest odpowiedź gniazdo zamknięte, to obierana jest ścieżka z bloku 340 do bloku 345 fig. 14 i funkcja przechwytująca strony klienta 80 tworzy komunikat błędu jako odpowiedź i przechodzi do bloku 344 z fig. 14. Jeżeli wydarzeniem jest odebranie danych, to obierana jest ścieżka z bloku 340 do bloku 341 fig. 14 i funkcja przechwytująca strony klienta 80 wykonuje wirtualną operację odebrania dla odebrania odpowiedzi z wirtualnego gniazda multipleksowego 90. Ta operacja odbioru jest przedstawiona w bloku 341 fig. 14. Po odebraniu danych z wirtualnego gniazda multipleksowego 90 funkcja przechwytująca strony klienta 80 wykonuje wirtualną operację zamknięcia wirtualnego gniazda multipleksowego 90, jak pokazano w bloku 342. Funkcja przechwytująca strony klienta 80 przetwarza następnie odpowiedź, jak opisano powyżej dla modułu przechwytującego 30 strony klienta, jak pokazano w bloku 343 (patrz na przykład fig. 4 i 8). Operacje bloku 344 są następnie wykonywane niezależnie od tego, którą ścieżką wykonano wyjście z bloku 340. Funkcja przechwytująca strony klienta 80 kasuje wirtualne gniazdo multipleksowe, jak pokazano w bloku 344 i następnie wykonuje wirtualną operację przesyłania, dla przesłania odpowiedzi do przeglądarki przez wirtualne gniazdo simpleksowe 70, jak pokazano w bloku 346. Gdy operacja przesyłania wirtualnego jest zakończona, funkcja przechwytująca strony klienta 80 wykonuje wirtualną operację usuwania dla usunięcia danych kolejkowanych w wirtualnym gnieździe simpleksowym, jak pokazano w bloku 347 do rzeczywistego gniazda 60b, a następnie wykonuje wirtualną operację zamykania, dla zamknięcia wirtualnego gniazda simpleksowego, jak pokazano w bloku 348. Po zamknięciu wirtualnego gniazda simpleksowego dla funkcji przechwytującej strony klienta 80, wirtualne gniazdo simpleksowe jest kasowane, a funkcja przechwytująca strony klienta kończy działanie, jak pokazano w blokach 349 i 350 z fig. 14.
Jest oczywiste, że wynalazek został opisany w odniesieniu do jednego szczególnego przypadku tworzenia gniazd wirtualnych simpleksowego i multipleksowego i funkcji przechwytujących strony klienta i serwera, to wiele takich funkcji może być tworzonych w jednym module przechwytującym strony klienta i strony serwera. Odpowiednio, moduł przechwytujący strony klienta i moduł przechwytujący strony serwera mogą utworzyć połączenie TCP/IP pomiędzy modułem przechwytującym 30 strony klienta i modułem przechwytującym 40 strony serwera, a następnie multipleksować na złączu wiele transmisji pochodzących z przeglądarki lub serwera, podczas utrzymywania połączenia TCP/IP.
Działanie funkcji zarządzającego gniazdami klienta i zarządzającego gniazdami serwera może być lepiej zrozumiane w odniesieniu do fig. 16-1 do 16-4 i fig. 17-1 i 17-2, które przedstawiają sieć działań operacji wykonywanych przez moduł przechwytujący strony klienta i moduł przechwytujący strony serwera, gdy wirtualnie tworzy, wirtualnie wysyła, wirtualnie odbiera, wirtualnie wybiera, wirtualnie usuwa, lub wirtualnie zamyka, operacje wykonywane jak pokazano w sieciach działań na fig. 14 i 15. Gdy wykonywana jest operacja tworzenia wirtualnego, jak pokazano w bloku 333 z fig. 14 i bloku 363 fig. 15, operacje rozpoczynające wykonywane są w bloku 400 z fig. 16- 1. Zarządzający gniazdami określa następnie, czy wymagane jest rzeczywiste gniazdo, jak pokazano w bloku 405. Jeżeli rzeczywiste gniazdo już istnieje, tak jak gdy tworzone, tworzy wirtualne gniazdo multipleksowe, które ma być dołączone do istniejących rzeczywistych gniazd, następnie gdy przyjęta jest ścieżka nie z bloku 405 i gniazdo wirtualne jest dołączone do gniazda rzeczywistego, jak pokazano w bloku 409. Jeżeli jednak rzeczywiste gniazdo jest wymagane, to przyjęta jest ścieżka tak z bloku 405. Jak pokazano w bloku 406, rzeczywiste gniazdo jest tworzone. Gniazdo rzeczywiste jest następnie dodawane do listy zdarzeń, jak pokazano w bloku 408, dla monitorowania,
180 570 jak pokazano w bloku 302 z fig. 13. Po utworzeniu rzeczywistego gniazda i wykonaniu połączeń, gniazdo wirtualne jest następnie dołączane do gniazda rzeczywistego, jak pokazano w bloku 409 i operacja tworzenia jest zakończona, jak pokazano w bloku 410.
Dla wykonania wirtualnej operacji wysyłania przedstawionej w blokach 334 i 346 z fig. 14 lub blokach 364, 376 , z fig. 15, rozpoczęcie operacji jest wykonywane w bloku 420 z fig. 16-2. Dane są dodawane do kolejki gniazda wirtualnego, jak pokazano w bloku 427 i gdy to jest wykonane, operacja wysyłania kończy się jak pokazano w bloku 428. .
Wirtualna operacja odbierania przedstawiona w blokach 331 i 341 z fig. 14 i blokach 361 i 371 z fig. 15 jest wykonywana i rozpoczyna się w bloku 430 z fig. 16-3. Jak pokazano w bloku 435, kolejka gniazda wirtualnego jest przyjęta do określenia, czy jakieś dane znajdują się w kolejce gniazda wirtualnego. Jeżeli dane znajdują się w kolejce gniazda wirtualnego, to przyjęta jest ścieżka tak z bloku 435 i dane są odsyłane do funkcji wywołującej operację odbierania, jak pokazano w bloku 436. Jeżeli nie ma danych w kolejce gniazda wirtualnego i gniazdo nie jest oznaczone jako zamykane, to przyjęta jest ścieżka nie z bloku decyzyjnego 440 i nic nie jest zwracane, jak pokazano w bloku 441. Jednakże, jeśli nie ma danych w kolejce, a gniazdo jest oznaczone jako zamykane, to przyjęta jest ścieżka tak z bloku 440 i gniazdo jest oznaczane jako zamknięte, jak pokazano w bloku 442 i odpowiedź zamkniętego gniazda jest zwracana do operacji żądającej odbioru, jak pokazano w bloku 443.
Wirtualna operacja wybierania wykonywana w blokach 326 i 336 z fig. 14 i bloku 366 z fig. 15, jest wykonywana przez realizację operacji rozpoczynających w bloku 445 z fig. 16-4. Jak widać w bloku 446, najpierw jest określane, czy dane lub wirtualna operacja zamykania oczekuje w wybranym gnieździe wirtualnym. Jeżeli nie ma danych lub wirtualne zamykanie oczekuje, to przyjęta jest ścieżka nie z bloku 446 i proces oczekuje na zdarzenie wirtualne na wybranym gnieździe wirtualnym, jak pokazano w bloku 447 i kończy się po odebraniu takiego zdarzenia, jak pokazano w bloku 448. Jeżeli dane lub wirtualne zamykanie oczekują na wybrane gniazdo wirtualne, a zdarzenie wirtualne już się pojawiło to przyjęta jest ścieżka tak z bloku 446 i proces się kończy, jak pokazano w bloku 448.
Wirtualna operacja usuwania przedstawiona w blokach 335 i 347 z fig. 14 i blokach 365 i 377 z fig. 15 jest wykonywana przez realizację operacji rozpoczynających się w bloku 450 z fig. 17-1. Gdy wezwana, wirtualna operacja usuwania ustala, czy są jakieś dane do usunięcia w kolejce gniazda wirtualnego, jak pokazano w bloku decyzyjnym 455. Jeżeli nie ma danych w kolejce gniazda wirtualnego, to operacja usuwania po prostu kończy się i wraca do funkcji wywołującej, jak pokazano na ścieżce nie z bloku 455. Jeżeli jednakże są dane w kolejce, to przyjęta jest ścieżka tak z bloku 455 i jest ustalane, czy kolejka gniazda wirtualnego jest do gniazda multipleksowego, jak pokazano w bloku 460. Jeżeli to jest gniazdo multipleksowe to nagłówek gniazda, który zawiera trzy bajty określające unikalny identyfikator dla gniazda i ilość danych w przekazie, jest dodawany do rzeczywistego bufora gniazda, jak pokazano w bloku 461. W każdym razie, jeżeli to jest gniazdo multipleksowe lub gniazdo simpleksowe, dane dla rzeczywistego gniazda są następnie przenoszone do rzeczywistego bufora gniazda, jak pokazano w bloku 462. Jeżeli bufor gniazda rzeczywistego jest pełny, to przyjęta jest ścieżka tak z bloku 465 i dane rzeczywistego bufora gniazda są przesłane do gniazda rzeczywistego, jak pokazano w bloku 466. Jeżeli rzeczywisty bufor nie jest pełny, to przyjęta jest ścieżka tak z bloku 465. Wirtualna funkcja usuwania bada następnie, czy nie ma innych danych w kolejce wirtualnego gniazda multipleksowego. Jeżeli odpowiedź jest pozytywna, to przyjęta jest ścieżka tak z bloku 470 i dane rzeczywistego bufora gniazda są przesłane, aż wirtualna operacja usuwania jest ponownie wezwana dla opróżnienia jednej lub innych kolejek gniazda wirtualnego. Jeżeli nie ma innych danych, lub po dodaniu danych z innych wirtualnych gniazd multipleksowych, operacja z bloku 466 jest wykonywana i dane z rzeczywistego bufora gniazda są przesłane do gniazda rzeczywistego. Po przesłaniu wszystkich danych, dane z kolejki wirtualnego gniazda odpowiadające funkcji, która wezwała wirtualną operację usuwania, są przesłane do gniazda rzeczywistego, jak pokazano w bloku 467.
Wirtualna operacja zamykania przedstawiona w blokach 342 i 348 z fig. 14 i blokach 372 i 378 z fig. 15 jest wykonywana przez realizację operacji rozpoczynających się w bloku
180 570
480 z fig. 17-2. Gdy wezwana, wirtualna operacja zamknięcia ustala, czy zamknięcie wirtualne ma dotyczyć wirtualnego gniazda multipleksowego, jak pokazano w bloku 485. Jeżeli to jest wirtualne gniazdo multipleksowe, to przyjęta jest ścieżka tak z bloku 485 i wskaźnik operacji zamknij jest dodany do kolejki gniazda wirtualnego. Czy zamkniecie wirtualne ma dotyczyć wirtualnego gniazda multipleksowego, czy nie, wirtualna operacja zamknięcia wzywa wirtualną operację usuwania, jak pokazano w bloku 487, a następnie odłącza od gniazda rzeczywistego, jak pokazano w bloku 488. Operacja następnie bada, czy zamkniecie wirtualne ma dotyczyć wirtualnego gniazda simpleksowego, jak pokazano w bloku 490, a jeśli nie, to przyjęta jest ścieżka nie do bloku 495. Ponieważ zamykanie dotyczy wirtualnego gniazda multipleksowego, blok 495 bada, czy to jest ostatnie wirtualne gniazdo multipleksowe, jeśli to jest ostatnie wirtualne gniazdo multipleksowe, ustawia zegar aktywności multipleksowej, jak pokazano w bloku 496, jeśli to nie jest ostatnie wirtualne gniazdo multipleksowe, to blok 496 jest pominięty.
Wracając do bloku 490, jeżeli zamknięcie wirtualne dotyczy wirtualnego gniazda simpleksowego, to odpowiednie gniazdo rzeczywiste jest usuwane z listy zdarzeń, jak pokazano w bloku 491 i gniazdo rzeczywiste jest zamykane i kasowane, jak pokazano w bloku 492. Czy gniazdo jest, wirtualnym gniazdem simpleksowym, czy multipleksowym, jest oznaczane jako zamknięte w bloku 497 i operacja zamykania kończy się w bloku 498.
Będzie teraz opisana fig. 13 w jej związku z -fig. 16- 1 do 16-4 i fig. 17-1 i 17-2. Gdy zachodzi zdarzenie rzeczywiste blok 302 z fig. 13 jest opuszczany i zarządzający gniazdami bada zdarzenie bazując na tym, jak zdarzenie powstało. Jeżeli zdarzeniem jest taktowanie nie pochodzące z zegara aktywności gniazda multipleksowego, który był ustawiony w bloku 496 z fig. 17-2, to obierana jest ścieżka z bloku 305 do bloku 312 z fig 13. Jak pokazano na fig. 13 operacje z bloków 312 i 313 są wykony wane przez zarządzającego gniazdami, polegające na zamknięciu multipleksowego gniazda rzeczywistego i skasowaniu multipleksowego gniazda rzeczywistego odpowiadającego gniazdu łączącemu moduł przechwytujący strony klienta z modułem przechwytującym strony serwera. Zarządzający gniazdami czeka następnie na kolejne zdarzenie rzeczywiste. Ten multipleksowy zegar zdarzeń jest ponownie nastawiany przez utworzenie multipleksowego gniazda wirtualnego, jak pokazano w bloku 322.
Jeżeli zdarzeniem zachodzącym w gnieździe rzeczywistym jest zamkniecie gniazda rzeczywistego, tak jak serwer wykonujący operacje zamykania na połączeniach gniazdowych pomiędzy serwerem a modułem przechwytującym strony serwera to obierana jest ścieżka z bloku 305 do bloku 309 na fig. 13. Zarządzający gniazdami usuwa gniazdo rzeczywiste z listy zdarzeń rzeczywistych, jak pokazano w bloku 309 i odłącza gniazdo wirtualne lub, w przypadku gniazd multipleksowych, gniazda od rzeczywistego gniazda lub gniazd, jak pokazano w bloku 310. Zarządzający gniazdami oznacza następnie gniazdo wirtualne jako zamykane i sygnalizuje zdarzenie wirtualne Ta operacja jest przedstawiona w bloku 311 i gdy wszystkie dane będą usunięte z kolejki gniazda wirtualnego, gniazdo wirtualne będzie zamknięte. Po oznaczeniu gniazda wirtualnego jako zamykane, zarządzający gniazdami określa następnie czy gniazdo rzeczywiste, które ma być zamknięte, jest czy nie jest gniazdem simpleksowym, jak pokazano w bloku decyzyjnym 315. Jeżeli gniazdem rzeczywistym, które ma być zamknięte jest gniazdo simpleksowe, to rzeczywiste gniazdo simpleksowe jest zamykane i kasowane, jak pokazano w bloku 316. Zarządzający gniazdami oczekuje następnie na kolejne zdarzenie rzeczywiste, jak pokazano w bloku 302.
Jeżeli to nie rzeczywiste gniazdo simpleksowe ma być zamknięte, to przyjęta jest ścieżka nie z bloku 315 i zarządzający gniazdami oczekuje na następne zdarzenie rzeczywiste. Tak wiec rzeczywiste gniazdo multipleksowe lub gniazdo dołączone do modułu przechwytującego strony klienta i do modułu przechwytującego strony serwera może być zamknięte tylko przez czas oczekiwania zegara aktywności gniazda multipleksowego, to pozwala na utrzymanie połączenia pomiędzy modułem przechwytującym strony klienta i modułem przechwytującym strony serwera tak że gdy ostatnia transmisja między modułami pojawi się po czasie określonym uprzednio przez użytkownika. W przypadku żądania kolejnego połączenia przez przeglądarkę przed odliczeniem czasu zegara aktywności gniazda multipleksowego,
180 570 transmisja może być wykonana bez ponownego wykonywania połączenia pomiędzy modułem przechwytującym strony klienta i modułem przechwytującym strony serwera i to eliminuje potrzebę nadmiaru zasobów, dla ponownego ustanowienia takiego połączenia.
Ostatnia ścieżka z fig. 13, jaka będzie opisana dotyczy stanu, gdy pojawia się rzeczywiste zdarzenie i zdarzeniem jest potwierdzenie danych na rzeczywistym gnieździe multipleksowym lub gniazdach 36a lub 36b na fig. 12. Gdy dane są odebrane na rzeczywistym gnieździe multipleksowym, te dane są badane i w przypadku, gdy zawierają wskaźnik operacji zamknięcia, taki jak ten dodawany do kolejki wirtualnej w bloku 486 z fig. 17-2, to wykonywana jest wirtualna operacja zamknięcia i przyjmowana jest ścieżka z bloku 320 do bloku 310. Zarządzający gniazdami odłącza od rzeczywistego gniazda wirtualne gniazdo multipleksowe oznaczone w danych odebranych w gnieździe rzeczywistym, jak pokazano w bloku 310, następnie oznacza gniazdo wirtualne jako zamykane i sygnalizuje zdarzenie wirtualne, jak pokazano w bloku 311. Ponieważ zamykane jest wirtualne gniazdo multipleksowe przyjmowana jest ścieżka nie z bloku 315, a zarządzający gniazdami czeka na następne zdarzenie rzeczywiste, jak pokazano w bloku 302.
Przez wykonywanie operacji opisanych na fig. 13 do 17, ustanawia się trwałe połączenie pomiędzy pierwszym komputerem i drugim komputerem przez zewnętrzne łącze komunikacyjne: Trwałe połączenie jest utrzymywane aż wszystkie transmisje przychodzące z przeglądarki będą zakończone i wiele transmisji przychodzących z przeglądarki jest przejętych i multipleksowanych na zewnętrzne łącze komunikacyjne, podczas gdy trwałe połączenie jest utrzymywane. Specjalny strumień danych klient/serwer może być następnie demultipleksowany dla utworzenia wielu strumieni danych HTTP i wiele strumieni danych HTTP jest dostarczanych do serwera. Trwałe połączenie jest także utrzymywane aż wszystkie transmisje przychodzące z serwera będą zakończone. Wiele transmisji przychodzących z serwera jest przejętych i multipleksowanych na zewnętrzne łącze komunikacyjne, podczas gdy trwałe połączenie jest utrzymywane. Ponadto specjalny strumień danych klient/serwer może być demultipleksowany dla utworzenia wielu strumieni danych HTTP i wiele strumieni danych HTTP jest dostarczanych do serwera.
180 570
FIG.1
STAN TECHNIKI )°______ TCP/IP _________
Przeglądarka WWW 15 Serwer WWW
FIG.2
-----------,__J I_______________I K \ '5 \
180 570
FIG.3
100
180 570
160
180 570
120
Odbierz żądanie od modułu przejmującego strony klienta (CSI) zawierające przedział kohorencji,CRC i dane HTTP
FIG.5
Prześlij żądanie HTTP do serwera
Prześlij „koherentną odpowiedź do CSI
Prześlij „strumień odpowiedzi do CSI zawierający CRC wejścia SSI, wiek wejścia SSI, i dane HTTP wejścia SSI
180 570
180 570
200
FIG .7
Odbierz żądanie HTTP z przeglądarki
Nie
Ustaw CRC dla wysłania do SSI jako zero
212
206
Wyślij żądanie HTTP do SSI
213
Wyślij żądanie CGI do SSI zawierające żądanie HTTP i CRC bazowego wejścia pośredniczącego klienta
180 570
260
Odbierz z SSI odpowiedź na żądanie CGI zawierające typ odpowiedzi i CRC formy bazowej serwera
265
266
Tak jest to odp. n zadanie CGI
267
Nie Puść odpowiedź HTTP do przeglądarki
Odbierz odpowiedź i zapamiętaj dane HTTP, dane różnicowe CGI i CRC
Tak
275
270
Tak
277 i
276
Ni forma CRC zy klienta zgadza się z forma CRC serwera
Przebazuj bazową pamięć pośredniczącą * klienta przez zapamiętanie danych HTTP odebranych z SSI i CRC odetkanego z SSI stn. wejście ośredniczące klienta dla żądania CGI
Odtwórz odpowiedź HTTP z serwera WWW przez dołączenie danych różnicowych CGI do to rm) bazowej klienta danych HTTP dla utworzenia strumienia danych HTTP ł 27B
Wyślij Jako strumień danych HTTP, odtworzoną odpowiedź do przeglądarki
Nie
271
Utwórz bazowe wejście podręczne klienta przez zapamiętanie URL żądania CGI,CRC danych HTTP z SSI i danych HTTP
180 570
FIG. 9
220
Odbierz żądanie CGI z CSI zawierające CRC bazowego wejścia pośredniczącego klienta i dane HTTP żądania υ 221
Wyślij żądanieCGI do serwera WWW
FIG.10
230
FIG. 10A FIG?
10B
Odbierz odpowiedź z serwera i zapamiętaj dane HTTP, CRC danych HTTP i zerowe dane różnicowe CGI
FIG.10A
180 570
FIG.10B
252
Wyślij odpowiedź do CSI CRC bazowego wejścia pośredniczą* cego SSI,danych HTTPi danych różnicowych CGI
180 570
FIG.11
I---------------------------i
180 570
FIG.12
180 570
180 570
Fig. 13 B
180 570
180 570
180 570
FIG. 16-1
400
420
427
Oodaj dane do kolejki gniazda wirtualnego
428
180 570
FIG.16-3 FIG.16-4
430
Zaznacz gniazdo „Zamknięte
443
445 '-------------------------Wybieraj] > /
Powrót
Zamknięte';
_________________z_____Λ
180 570
NIE
450
455 sa dane w kolejce
TAK
460
461 (jest gniazdo multipleksów
NIEl .
TAK Przesuń nagłówek >11!^ gniazda do rzeczywistego bufora
462
Przesuń dane gniazda wirtualnego do rzeczy- < wistego bufora ^/</465 Rzeczywisty^, bufor jest pełny^
NIE
470
TAK
466 ^/sąjakieś > dane w innych \kolejkachy ^x 7 /
TAK
Wyślij dane rzeczy- N|£ wistego bufora ---*
467
Fig.17-1
180 570
Departament Wydawnictw UP RP. Nakład 70 egz. Cena 6,00 zł.

Claims (10)

  1. Zastrzeżenia patentowe
    1. Sposób komunikacji w systemie klient/serwer zawierającym pierwszą aplikację w pierwszym komputerze, która komunikuje się z drugą aplikacją w drugim komputerze, odległym od pierwszego komputera, przy czym pierwsza i druga aplikacje używają niezależnego protokołu komunikacyjnego klient/serwer do komunikacji między klientem a serwerem, zaś na zewnętrznym łączu telekomunikacyjnym występuje co najmniej jeden segment komunikatu między pierwszą aplikacją w pierwszym komputerze, a drugą aplikacją w drugim komputerze, znamienny tym, że przechwytuje się w niezależnym protokole komunikacyjnym klient/serwer komunikat, inicjowany przez pierwszą aplikację przed przesłaniem komunikatu zewnętrznym łączem telekomunikacyjnym, dokonuje się konwersji komunikatu inicjowanego przez pierwszą aplikację na specyficzny protokół komunikacyjny klient/serwer i przesyła się, po konwersji, komunikat przez zewnętrzne łącze telekomunikacyjne w postaci specyficznego strumienia danych klient/serwer, po czym odbiera się komunikat transmitowany przez łącze zewnętrzne, dokonuje się konwersji komunikatu, odebranego przez zewnętrzne łącze telekomunikacyjne, ze specyficznego protokołu komunikacyjnego klient/serwer na niezależny protokół komunikacyjny klient/serwer, i dostarcza się komunikat inicjowany przez pierwszą aplikację do drugiej aplikacji w niezależnym protokole komunikacyjnym klient/serwer.
  2. 2. Sposób według zastrz. 1, znamienny tym, że jako niezależny protokół komunikacji klient/serwer stosuje się hipertekstowy protokół transmisyjny (HTTP) zaś jako komunikat inicjowany przez pierwszy komputer stosuje się strumień danych HTTP.
  3. 3. Sposób według zastrz. 2, znamienny tym, że gdy pierwszym komputerem jest klient odległy, to jako pierwszą aplikację stosuje się aplikację przeglądarki sieciowej, zaś gdy drugim komputerem jest serwer, to jako drugą aplikację stosuje się aplikację serwerową sieci.
  4. 4. Sposób według zastrz. 2, znamienny tym, że gdy pierwszym komputerem jest serwer, to jako pierwszą aplikację stosuje się aplikację serwerową sieci, zaś gdy drugim komputerem jest klient odległy, to jako drugą aplikację stosuje się aplikację przeglądarki sieciowej.
  5. 5. Sposób według zastrz. 3, znamienny tym, że gdy inicjowany przez przeglądarkę sieciową komunikat odpowiada na żądanie wspólnego interfejsu przejścia (CGI), to przepytuje się przechwycone żądanie interfejsu CGI dla określenia, czy istnieje pozycja podręcznej bazy klienta odpowiadająca przechwyconemu żądaniu interfejsu CGI i zapewniająca podstawowy format interfejsu CGI klienta, i przepytuje się przechwycone żądanie interfejsu CGI dla określenia, czy istnieje pozycja podręcznej bazy serwera odpowiadająca przechwyconemu żądaniu interfejsu CGI i zapewniająca podstawowy format interfejsu CGI serwera, po czym przechowuje się strumień danych HTTP odebranych z serwera sieciowego w odpowiedzi na inicjowany przez przeglądarkę sieciową komunikat, który jest skierowanym do interfejsu CGI żądaniem rezydentnej pamięci podręcznej rezydującej w drugim komputerze, dotyczącym utworzenia pozycji podstawowej pamięci podręcznej serwera, przechowuje się strumień danych HTTP przeznaczony dla przeglądarki sieciowej w odpowiedzi na komunikat inicjowany przez przeglądarkę sieciową, który jest skierowanym do interfejsu CGI żądaniem rezydentnej pamięci podręcznej w pierwszym komputerze, dotyczącym utworzenia pozycji podstawowej pamięci podręcznej klienta, i przechwytuje się strumień danych HTTP odpowiadający inicjowanemu przez serwer sieciowy komunikatowi w odpowiedzi na przechwycone żądanie interfejsu CGI, przed przesłaniem strumienia danych HTTP do zewnętrznego łącza telekomunikacyjnego, po czym porównuje się przechwyconą odpowiedź interfejsu CGI z podstawowym formatem interfejsu CGI serwera, dla otrzymania danych różnicowych interfejsu CGI odpowiadających różnicy między przechwyconą odpowiedzią interfejsu CGI a podstawowym formatem interfejsu CGI serwera, wysyła się dane różnicowe interfejsu CGI do przeglądarki
    180 570 sieciowej w pierwszym komputerze przez zewnętrzne łącze telekomunikacyjne jako specyficzny strumień danych klient/serwer i zbiera się specyficzny strumień danych klient/serwer przesyłanych przez zewnętrzne łącze telekomunikacyjne, który był wysłany przez drugi komputer, przy czym w trakcie konwersji komunikatu odebranego odtwarza się strumień danych HTTP, odpowiadający komunikatowi od serwera sieciowego, ze specyficznego strumienia danych klient/serwer odebranego przez zewnętrzne łącze telekomunikacyjne poprzez połączenie podstawowego formatu interfejsu CGI klienta i danych różnicowych interfejsu CGI otrzymanych zewnętrznym łączem komunikacyjnym, przy utworzeniu strumienia danych HTTP odpowiadającego przechwyconej odpowiedzi interfejsu CGI, zaś w trakcie dostarczania komunikatu inicjowanego dostarcza się komunikat inicjowany przez serwer sieciowy do przeglądarki sieciowej jako strumień danych HTTP.
  6. 6. Sposób według zastrz. 3, znamienny tym, że następnie zestawia się trwałe połączenie miedzy pierwszym komputerem a drugim komputerem przez zewnętrzne łącze telekomunikacyjne i utrzymuje się trwałe połączenie aż do zakończenia komunikacji zainicjowanej przez przeglądarkę sieciową, przy czym w trakcie przechwytywania komunikatu przechwytuje się wiele komunikatów inicjowanych przez przeglądarkę sieciową i zwielokrotnia się je na zewnętrznym łączu telekomunikacyjnym przy utrzymywaniu połączenia trwałego.
  7. 7. Sposób według zastrz. 3, znamienny tym, że następnie dostarcza się do drugiego komputera, przez zewnętrzne łącze telekomunikacyjne, specyficzną informację komputerową odpowiadającą zadanym parametrom charakterystycznym pierwszego komputera, i przechowuje się specyficzną informację komputerową odpowiadającą zadanym parametrom charakterystycznym pierwszego komputera z wprowadzeniem informacji nagłówkowej przeglądarki, przy czym w trakcie konwersji komunikatu inicjowanego usuwa się specyficzną informację komputerową z komunikatu inicjowanego przez przeglądarkę sieciową, zaś w trakcie konwersji komunikatu odebranego łączy się informacje nagłówkową przeglądarki ze specyficznym strumieniem danych klient/serwer tworząc strumień danych HTTP.
  8. 8. Sposób według zastrz. 3, znamienny tym, że następnie wychwytuje się strumień danych HTTP odpowiadający komunikatowi inicjowanemu przez serwer sieciowy przed przesłaniem strumienia danych HTTP zewnętrznym łączem telekomunikacyjnym, dokonuje się konwersji strumienia danych HTTP, inicjowanego przez serwer sieciowy, z protokołu HTTP na specyficzny protokół komunikacyjny klient/serwer, i przesyła się, po konwersji, inicjowany przez serwer sieciowy komunikat do przeglądarki sieciowej przez zewnętrzne łącze telekomunikacyjne w postaci specyficznego strumienia danych klient/serwer, po czym odbiera się specyficzny strumień danych klient/serwer przesyłany przez zewnętrzne łącze telekomunikacyjne oraz realizuje się odbudowę strumienia danych HTTP odpowiadającego komunikatowi od serwera sieciowego ze specyficznego strumienia danych klient/serwer, odebranego przez zewnętrzne łącze telekomunikacyjne poprzez konwersję specyficznego strumienia danych klient/serwer, odebranego w specyficznym protokole komunikacyjnym klient/serwer na strumień danych HTTP i dostarcza się komunikat inicjowany przez serwer sieciowy do przeglądarki sieciowej jako strumień danych HTTP.
  9. 9. Urządzenie do komunikacji w systemie klient/serwer, w którym pierwsza aplikacja w jednym komputerze jest połączona poprzez łącze komunikacyjne z aplikacją w drugim komputerze, znamienne tym, że zawiera w pierwszym komputerze (5), włączony między pierwszą aplikację (10) a zewnętrzne łącze telekomunikacyjne (35), pierwszy moduł przechwytujący (30) do przechwytywania komunikatu w niezależnym protokole komunikacyjnym klient/serwer, inicjowanego przez pierwszą aplikację (10) przed przesłaniem komunikatu zewnętrznym łączem telekomunikacyjnym (35), konwersji inicjowanego komunikatu na specyficzny protokół komunikacyjny klient/serwer i przesyłania, po konwersji, komunikatu do drugiego komputera (6) zewnętrznym łączem telekomunikacyjnym (35) w postaci specyficznego strumienia danych klient/serwer, oraz w drugim komputerze (6), włączony między zewnętrzne łącze telekomunikacyjne (35) a drugą aplikację (20), drugi moduł przechwytujący (40) do odbierania komunikatów transmitowanych przez telekomunikacyjne łącze zewnętrzne (35), konwersji komunikatu ze specyficznego protokołu komunikacyjnego klient/serwer na
    180 570 niezależny protokół komunikacyjny klient/serwer i dostarczenia komunikatu po konwersji do drugiej aplikacji (20).
  10. 10. Produkt programu komputerowego do komunikacji w systemie klient/serwer, który jest przechowywany na czytelnym dla komputera nośniku pamięciowym i zawiera wiele elementów z kodem oprogramowania do implementacji systemu po załadowaniu produktu do komputera, znamienny tym, że zawiera odczytywalne komputerowo elementy kodu programowego przechwytywania przez pierwszy komputer (5) komunikatu w niezależnym protokole komunikacyjnym klient/serwer, inicjowanego przez pierwszą aplikację (10), przed przesłaniem komunikatu zewnętrznym łączem telekomunikacyjnym (35), odczytywalne komputerowo elementy kodu programowego konwersji przez pierwszy komputer (5) komunikatu inicjowanego na specyficzny protokół komunikacyjny klient/serwer, odczytywalne komputerowo elementy kodu programowego przesłania, po konwersji, przez pierwszy komputer (5) komunikatu do drugiego komputera (6) przez zewnętrzne łącze telekomunikacyjne (35) w postaci specyficznego strumienia danych klient/serwer, odczytywalne komputerowo elementy odbierania przez drugi komputer (6) komunikatów przesyłanych przez zewnętrzne łącze telekomunikacyjne (35), odczytywalne komputerowo elementy konwersji przez drugi komputer (6) komunikatu ze specyficznego protokołu łączności komunikacyjnego klient/serwer na niezależny protokół komunikacyjny klient/serwer i odczytywalne komputerowo elementy dostarczania przez drugi komputer (6) komunikatu po konwersji do drugiej aplikacji (20).
    * * *
PL96327294A 1996-02-15 1996-07-11 Sposób, urzadzenie i produkt programu komputerowego do komunikacjiw systemie klient/serwer PL PL PL PL PL PL PL PL PL PL PL PL180570B1 (pl)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/601,804 US5754774A (en) 1996-02-15 1996-02-15 Client/server communication system
PCT/US1996/011551 WO1997030538A2 (en) 1996-02-15 1996-07-11 Client/server communication system

Publications (2)

Publication Number Publication Date
PL327294A1 PL327294A1 (en) 1998-12-07
PL180570B1 true PL180570B1 (pl) 2001-02-28

Family

ID=24408840

Family Applications (1)

Application Number Title Priority Date Filing Date
PL96327294A PL180570B1 (pl) 1996-02-15 1996-07-11 Sposób, urzadzenie i produkt programu komputerowego do komunikacjiw systemie klient/serwer PL PL PL PL PL PL PL PL PL PL PL

Country Status (16)

Country Link
US (2) US5754774A (pl)
EP (1) EP0823170B1 (pl)
JP (2) JP3953109B2 (pl)
KR (1) KR100289520B1 (pl)
CN (1) CN1148927C (pl)
AT (1) ATE196707T1 (pl)
CA (1) CA2218169C (pl)
CZ (1) CZ287988B6 (pl)
DE (1) DE69610495T2 (pl)
ES (1) ES2151176T3 (pl)
HK (1) HK1017789A1 (pl)
HU (1) HUP9801295A3 (pl)
MY (1) MY122038A (pl)
PL (1) PL180570B1 (pl)
TW (1) TW297194B (pl)
WO (1) WO1997030538A2 (pl)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3012739A1 (en) 2014-10-20 2016-04-27 TISOFT Wojciech Jedrzejewski System for synchronizing web browsers

Families Citing this family (341)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6026452A (en) * 1997-02-26 2000-02-15 Pitts; William Michael Network distributed site cache RAM claimed as up/down stream request/reply channel for storing anticipated data and meta data
US6418324B1 (en) * 1995-06-01 2002-07-09 Padcom, Incorporated Apparatus and method for transparent wireless communication between a remote device and host system
US20040264402A9 (en) * 1995-06-01 2004-12-30 Padcom. Inc. Port routing functionality
US5754774A (en) * 1996-02-15 1998-05-19 International Business Machine Corp. Client/server communication system
US6351745B1 (en) * 1996-02-28 2002-02-26 Netzero, Inc. Communication system for distributing such message as advertisement to user of terminal equipment
US6194992B1 (en) * 1997-04-24 2001-02-27 Nomadix, Llc Mobile web
US5859972A (en) * 1996-05-10 1999-01-12 The Board Of Trustees Of The University Of Illinois Multiple server repository and multiple server remote application virtual client computer
US6049820A (en) 1996-06-03 2000-04-11 International Business Machines Corporation Multiplexing of clients and applications among multiple servers
US5935207A (en) * 1996-06-03 1999-08-10 Webtv Networks, Inc. Method and apparatus for providing remote site administrators with user hits on mirrored web sites
US6091518A (en) * 1996-06-28 2000-07-18 Fuji Xerox Co., Ltd. Image transfer apparatus, image transmitter, profile information transmitter, image receiver/reproducer, storage medium, image receiver, program transmitter, and image color correction apparatus
JP2924817B2 (ja) * 1996-09-13 1999-07-26 日本電気株式会社 情報サーバシステム
US6052120A (en) * 1996-10-01 2000-04-18 Diamond Multimedia Systems, Inc. Method of operating a portable interactive graphics display tablet and communications systems
US6166734A (en) * 1996-10-01 2000-12-26 Diamond Multimedia Systems, Inc. Portable interactive graphics display tablet and communications system
US6084584A (en) * 1996-10-01 2000-07-04 Diamond Multimedia Systems, Inc. Computer system supporting portable interactive graphics display tablet and communications systems
US5931904A (en) * 1996-10-11 1999-08-03 At&T Corp. Method for reducing the delay between the time a data page is requested and the time the data page is displayed
GB2320112B (en) * 1996-12-07 2001-07-25 Ibm High-availability computer server system
US6901425B1 (en) 1996-12-23 2005-05-31 International Business Machines Corporation Computer apparatus and method including a disconnect mechanism for communicating between software applications and computers on the world-wide web
US6144990A (en) * 1996-12-23 2000-11-07 International Business Machines Corporation Computer apparatus and method for communicating between software applications and computers on the world-wide web using universal variable handling
US5898833A (en) * 1996-12-31 1999-04-27 Intel Corporation Method and apparatus for increasing the effective bandwidth of video sequences transmitted over a network by using cached data
US6456974B1 (en) * 1997-01-06 2002-09-24 Texas Instruments Incorporated System and method for adding speech recognition capabilities to java
US7020700B1 (en) * 1997-02-28 2006-03-28 International Business Machines Corporation Client side socks server for an internet client
US6057854A (en) 1997-03-07 2000-05-02 Micrografx, Inc. System and method of providing interactive vector graphics over a network
US5948066A (en) * 1997-03-13 1999-09-07 Motorola, Inc. System and method for delivery of information over narrow-band communications links
US6073173A (en) * 1997-03-17 2000-06-06 International Business Machines Corporation Method and apparatus for optimal rebasing of web page transmission
US6182122B1 (en) * 1997-03-26 2001-01-30 International Business Machines Corporation Precaching data at an intermediate server based on historical data requests by users of the intermediate server
US5996016A (en) * 1997-04-15 1999-11-30 International Business Machines Corporation Reinitiation of bind calls for IP applications concurrently executing with alternate address
US6273622B1 (en) * 1997-04-15 2001-08-14 Flash Networks, Ltd. Data communication protocol for maximizing the performance of IP communication links
US6061714A (en) * 1997-05-07 2000-05-09 International Business Machines Corporation Persistent cache synchronization and start up system
US5907678A (en) 1997-05-07 1999-05-25 International Business Machines Corporation Client/server system in which protocol caches for multiple sessions are selectively copied into a common checkpoint cache upon receiving a checkpoint request
US6184996B1 (en) * 1997-06-18 2001-02-06 Hewlett-Packard Company Network printer with remote print queue control procedure
US6105028A (en) * 1997-06-26 2000-08-15 Digital Equipment Corporation Method and apparatus for accessing copies of documents using a web browser request interceptor
US5991760A (en) * 1997-06-26 1999-11-23 Digital Equipment Corporation Method and apparatus for modifying copies of remotely stored documents using a web browser
US6115378A (en) * 1997-06-30 2000-09-05 Sun Microsystems, Inc. Multi-layer distributed network element
US6081522A (en) 1997-06-30 2000-06-27 Sun Microsystems, Inc. System and method for a multi-layer network element
US6049528A (en) 1997-06-30 2000-04-11 Sun Microsystems, Inc. Trunking ethernet-compatible networks
US7058720B1 (en) * 1997-06-30 2006-06-06 Microsoft Corporation Geographical client distribution methods, systems and computer program products
US6088356A (en) 1997-06-30 2000-07-11 Sun Microsystems, Inc. System and method for a multi-layer network element
US6044418A (en) 1997-06-30 2000-03-28 Sun Microsystems, Inc. Method and apparatus for dynamically resizing queues utilizing programmable partition pointers
US6016310A (en) 1997-06-30 2000-01-18 Sun Microsystems, Inc. Trunking support in a high performance network device
US6119196A (en) 1997-06-30 2000-09-12 Sun Microsystems, Inc. System having multiple arbitrating levels for arbitrating access to a shared memory by network ports operating at different data rates
US6128666A (en) * 1997-06-30 2000-10-03 Sun Microsystems, Inc. Distributed VLAN mechanism for packet field replacement in a multi-layered switched network element using a control field/signal for indicating modification of a packet with a database search engine
US6021132A (en) * 1997-06-30 2000-02-01 Sun Microsystems, Inc. Shared memory management in a switched network element
US6044087A (en) 1997-06-30 2000-03-28 Sun Microsystems, Inc. Interface for a highly integrated ethernet network element
US6246680B1 (en) 1997-06-30 2001-06-12 Sun Microsystems, Inc. Highly integrated multi-layer switch element architecture
US6094435A (en) 1997-06-30 2000-07-25 Sun Microsystems, Inc. System and method for a quality of service in a multi-layer network element
US6081512A (en) 1997-06-30 2000-06-27 Sun Microsystems, Inc. Spanning tree support in a high performance network device
WO1999001819A1 (en) * 1997-07-01 1999-01-14 Progress Software Corporation Testing and debugging tool for network applications
US6038601A (en) * 1997-07-21 2000-03-14 Tibco, Inc. Method and apparatus for storing and delivering documents on the internet
US6058425A (en) * 1997-07-21 2000-05-02 International Business Machines Corporation Single server access in a multiple TCP/IP instance environment
US6324565B1 (en) * 1997-07-28 2001-11-27 Qwest Communications International Inc. Dynamically generated document cache system
JP3774807B2 (ja) * 1997-08-06 2006-05-17 タキオン インコーポレイテッド 分散型システムとオブジェクトをプレフェッチする方法
US5935212A (en) * 1997-08-07 1999-08-10 I-Planet, Inc. Connection-oriented session emulation
US6070184A (en) * 1997-08-28 2000-05-30 International Business Machines Corporation Server-side asynchronous form management
US6035324A (en) * 1997-08-28 2000-03-07 International Business Machines Corporation Client-side asynchronous form management
US6631424B1 (en) * 1997-09-10 2003-10-07 Fmr Corp. Distributing information using a computer
US20060193278A1 (en) 1997-10-15 2006-08-31 Wolfgang Theimer Mobile telephone for Internet applications
US6185617B1 (en) * 1997-11-26 2001-02-06 International Business Machines Corporation Construction and usage of a pre-warmed cache for client-server emulator
US6292835B1 (en) * 1997-11-26 2001-09-18 International Business Machines Corporation Network bandwidth and object obsolescence sensitive scheduling method and apparatus for objects distributed broadcasting
US6360257B1 (en) * 1998-01-30 2002-03-19 Telefonaktiebolaget L M Ericsson (Publ) Managing group IP addresses in mobile end stations
FI112897B (fi) 1998-03-03 2004-01-30 Nokia Corp Menetelmä tiedonsiirtoverkossa ja tiedonsiirtolaite
US6148340A (en) * 1998-04-30 2000-11-14 International Business Machines Corporation Method and system for differencing container files
ATE463006T1 (de) * 1998-05-29 2010-04-15 Access Systems Americas Inc Verfahren und gerät zum drahtlosen interzugriff
US7025209B2 (en) * 1998-05-29 2006-04-11 Palmsource, Inc. Method and apparatus for wireless internet access
US6343318B1 (en) 1998-05-29 2002-01-29 Palm, Inc. Method and apparatus for communicating information over low bandwidth communications networks
US6185608B1 (en) * 1998-06-12 2001-02-06 International Business Machines Corporation Caching dynamic web pages
US6574618B2 (en) * 1998-07-22 2003-06-03 Appstream, Inc. Method and system for executing network streamed application
US7197570B2 (en) * 1998-07-22 2007-03-27 Appstream Inc. System and method to send predicted application streamlets to a client device
US20010044850A1 (en) 1998-07-22 2001-11-22 Uri Raz Method and apparatus for determining the order of streaming modules
US6311221B1 (en) 1998-07-22 2001-10-30 Appstream Inc. Streaming modules
US7127493B1 (en) * 1998-08-20 2006-10-24 Gautier Taylor S Optimizing server delivery of content by selective inclusion of optional data based on optimization criteria
US6535509B2 (en) 1998-09-28 2003-03-18 Infolibria, Inc. Tagging for demultiplexing in a network traffic server
US6321250B1 (en) * 1998-10-01 2001-11-20 Ericsson Inc. Data communication system and method for transporting objects over a permanent connections
EP0993163A1 (en) 1998-10-05 2000-04-12 Backweb Technologies Ltd. Distributed client-based data caching system and method
US6397253B1 (en) 1998-10-06 2002-05-28 Bull Hn Information Systems Inc. Method and system for providing high performance Web browser and server communications
US7293107B1 (en) * 1998-10-09 2007-11-06 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US7136645B2 (en) * 1998-10-09 2006-11-14 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US7778260B2 (en) * 1998-10-09 2010-08-17 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US8078727B2 (en) * 1998-10-09 2011-12-13 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US8060656B2 (en) 1998-10-09 2011-11-15 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US6546425B1 (en) 1998-10-09 2003-04-08 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US6230165B1 (en) * 1998-10-16 2001-05-08 Cerulean Method for encoding and transporting database objects over bandwidth constrained networks
US6279041B1 (en) 1998-11-13 2001-08-21 International Business Machines Corporation Methods, systems and computer program products for differencing data communications using a message queue
EP1003114A1 (en) * 1998-11-17 2000-05-24 International Business Machines Corporation Method of interconnecting computers and computer network
US8266266B2 (en) 1998-12-08 2012-09-11 Nomadix, Inc. Systems and methods for providing dynamic network authorization, authentication and accounting
US7194554B1 (en) 1998-12-08 2007-03-20 Nomadix, Inc. Systems and methods for providing dynamic network authorization authentication and accounting
US6813640B1 (en) 1998-12-08 2004-11-02 Macrovision Corporation System and method for controlling the editing by user action of digital objects created in a document server application
US8713641B1 (en) 1998-12-08 2014-04-29 Nomadix, Inc. Systems and methods for authorizing, authenticating and accounting users having transparent computer access to a network using a gateway device
US6973300B1 (en) 1998-12-23 2005-12-06 Nortel Networks Limited Intelligent wireless terminal with virtual memory
US6266678B1 (en) * 1998-12-31 2001-07-24 Computer Associates Think, Inc. System and method for dynamically viewing contents of a data file
EP1166525A1 (en) * 1999-04-02 2002-01-02 Infolibria Inc. Connection pass-through to optimize server performance
US6651103B1 (en) * 1999-04-20 2003-11-18 At&T Corp. Proxy apparatus and method for streaming media information and for increasing the quality of stored media information
US6484212B1 (en) 1999-04-20 2002-11-19 At&T Corp. Proxy apparatus and method for streaming media information
US7882247B2 (en) 1999-06-11 2011-02-01 Netmotion Wireless, Inc. Method and apparatus for providing secure connectivity in mobile and other intermittent computing environments
US6510458B1 (en) 1999-07-15 2003-01-21 International Business Machines Corporation Blocking saves to web browser cache based on content rating
US6430739B1 (en) * 1999-07-16 2002-08-06 Acceleration Software International Corporation Software execution contingent on home page setting
US6507891B1 (en) * 1999-07-22 2003-01-14 International Business Machines Corporation Method and apparatus for managing internal caches and external caches in a data processing system
US6658462B1 (en) 1999-08-26 2003-12-02 International Business Machines Corporation System, method, and program for balancing cache space requirements with retrieval access time for large documents on the internet
US7987420B1 (en) 1999-09-10 2011-07-26 Ianywhere Solutions, Inc. System, method, and computer program product for a scalable, configurable, client/server, cross-platform browser for mobile devices
US8595308B1 (en) 1999-09-10 2013-11-26 Ianywhere Solutions, Inc. System, method, and computer program product for server side processing in a mobile device environment
US7392308B2 (en) * 1999-09-10 2008-06-24 Ianywhere Solutions, Inc. System, method, and computer program product for placement of channels on a mobile device
US6839744B1 (en) 1999-09-10 2005-01-04 Ianywhere Solutions, Inc. System, method, and computer program product for administering channels, content, and data for mobile devices
US20020052781A1 (en) * 1999-09-10 2002-05-02 Avantgo, Inc. Interactive advertisement mechanism on a mobile device
US20010047394A1 (en) * 1999-09-10 2001-11-29 Kloba David D. System, method, and computer program product for executing scripts on mobile devices
US6757717B1 (en) * 1999-09-16 2004-06-29 Proxyconn, Inc. System and method for data access
US8108245B1 (en) 1999-09-17 2012-01-31 Cox Communications, Inc. Method and system for web user profiling and selective content delivery
US6308238B1 (en) 1999-09-24 2001-10-23 Akamba Corporation System and method for managing connections between clients and a server with independent connection and data buffers
US6801927B1 (en) 1999-09-24 2004-10-05 Akamba Corporation Network adaptor card with reverse proxy and cache and method implemented therewith
US6877036B1 (en) * 1999-09-24 2005-04-05 Akamba Corporation System and method for managing connections between a client and a server
FR2803706B1 (fr) * 1999-09-27 2002-03-08 Bull Cp8 Procede et architecture de pilotage a distance d'une station d'utilisateur via un reseau de type internet et leur application a un demonstrateur de carte a puce
US7089300B1 (en) * 1999-10-18 2006-08-08 Apple Computer, Inc. Method and apparatus for administering the operating system of a net-booted environment
US6721780B1 (en) * 1999-11-09 2004-04-13 Fireclick, Inc. Predictive pre-download of network objects
US6864904B1 (en) * 1999-12-06 2005-03-08 Girafa.Com Inc. Framework for providing visual context to www hyperlinks
US6708217B1 (en) 2000-01-05 2004-03-16 International Business Machines Corporation Method and system for receiving and demultiplexing multi-modal document content
US6983315B1 (en) * 2000-01-18 2006-01-03 Wrq, Inc. Applet embedded cross-platform caching
US7689696B2 (en) * 2000-01-31 2010-03-30 Telecommunication Systems, Inc. System and method for re-directing requests from browsers for communications over non-IP based networks
US7693981B2 (en) * 2001-01-24 2010-04-06 Telecommunication Systems, Inc. System and method to publish information from servers to remote monitor devices
US8370435B1 (en) 2000-01-31 2013-02-05 Telecommunication Systems, Inc. System and method for servers to send alerts to connectionless devices
US7970898B2 (en) 2001-01-24 2011-06-28 Telecommunication Systems, Inc. System and method to publish information from servers to remote monitor devices
US8090856B1 (en) 2000-01-31 2012-01-03 Telecommunication Systems, Inc. Intelligent messaging network server interconnection
US7003571B1 (en) 2000-01-31 2006-02-21 Telecommunication Systems Corporation Of Maryland System and method for re-directing requests from browsers for communication over non-IP based networks
US6435164B1 (en) 2000-12-07 2002-08-20 Ford Global Technologies, Inc. Fuel weathering method for vehicle evaporative emission system
US7418498B2 (en) * 2001-01-24 2008-08-26 Telecommunication Systems, Inc. System and method to publish information from servers to remote monitor devices
US7096418B1 (en) * 2000-02-02 2006-08-22 Persistence Software, Inc. Dynamic web page cache
US6820133B1 (en) 2000-02-07 2004-11-16 Netli, Inc. System and method for high-performance delivery of web content using high-performance communications protocol between the first and second specialized intermediate nodes to optimize a measure of communications performance between the source and the destination
US6947440B2 (en) * 2000-02-15 2005-09-20 Gilat Satellite Networks, Ltd. System and method for internet page acceleration including multicast transmissions
US7028251B2 (en) * 2000-03-02 2006-04-11 Iora, Ltd. System and method for reducing the size of data difference representations
US6789128B1 (en) * 2000-03-11 2004-09-07 Oracle International Corporation System and method for reducing network traffic between two computing devices
US7020719B1 (en) 2000-03-24 2006-03-28 Netli, Inc. System and method for high-performance delivery of Internet messages by selecting first and second specialized intermediate nodes to optimize a measure of communications performance between the source and the destination
AUPQ653800A0 (en) * 2000-03-28 2000-04-20 Sharinga Networks Inc. A data delivery process
US7187947B1 (en) 2000-03-28 2007-03-06 Affinity Labs, Llc System and method for communicating selected information to an electronic device
US6654794B1 (en) 2000-03-30 2003-11-25 International Business Machines Corporation Method, data processing system and program product that provide an internet-compatible network file system driver
AU2000263270A1 (en) * 2000-04-13 2001-10-30 Worldlink Information Technology Systems Limited Apparatus and a method for supplying information
WO2001080033A2 (en) 2000-04-17 2001-10-25 Circadence Corporation System and method for implementing application -independent functionality within a network infrastructure
US20110128972A1 (en) 2000-04-17 2011-06-02 Randy Thornton Peer to peer dynamic network link acceleration
US8996705B2 (en) 2000-04-17 2015-03-31 Circadence Corporation Optimization of enhanced network links
US7979880B2 (en) * 2000-04-21 2011-07-12 Cox Communications, Inc. Method and system for profiling iTV users and for providing selective content delivery
US7013340B1 (en) 2000-05-18 2006-03-14 Microsoft Corporation Postback input handling by server-side control objects
US6990526B1 (en) * 2000-05-22 2006-01-24 Pointred Technologies, Inc. Method and apparatus for web caching
US7062475B1 (en) * 2000-05-30 2006-06-13 Alberti Anemometer Llc Personalized multi-service computer environment
FI20001617A (fi) * 2000-07-06 2002-01-07 Nokia Mobile Phones Ltd Tiedonsiirtomenetelmõ ja -jõrjestely
FR2811504B1 (fr) * 2000-07-06 2003-07-04 Centre Nat Etd Spatiales Dispositif serveur de realisation multi-utilisateur en libre-service et de diffusion d'emissions de television et reseau de television
US6704024B2 (en) * 2000-08-07 2004-03-09 Zframe, Inc. Visual content browsing using rasterized representations
WO2002019636A1 (en) * 2000-08-31 2002-03-07 Padcom, Inc. Method and apparatus for routing data over multiple wireless networks
US6757894B2 (en) 2000-09-26 2004-06-29 Appstream, Inc. Preprocessed applications suitable for network streaming applications and method for producing same
US20020087717A1 (en) * 2000-09-26 2002-07-04 Itzik Artzi Network streaming of multi-application program code
US7801978B1 (en) * 2000-10-18 2010-09-21 Citrix Systems, Inc. Apparatus, method and computer program product for efficiently pooling connections between clients and servers
AU2002219796A1 (en) * 2000-11-20 2002-06-03 At And T Wireless Services, Inc. Systems for providing wireless communication presence information
US20020196793A1 (en) * 2000-11-29 2002-12-26 Quikcat.Com, Inc. End-user communication systems access network
US7269784B1 (en) 2001-01-22 2007-09-11 Kasriel Stephane Server-originated differential caching
US7174305B2 (en) * 2001-01-23 2007-02-06 Opentv, Inc. Method and system for scheduling online targeted content delivery
US7195923B2 (en) * 2001-01-31 2007-03-27 Scripps Laboratories, Inc. Ratiometric determination of glycated protein
US7665115B2 (en) * 2001-02-02 2010-02-16 Microsoft Corporation Integration of media playback components with an independent timing specification
US20020138331A1 (en) * 2001-02-05 2002-09-26 Hosea Devin F. Method and system for web page personalization
US6963930B2 (en) * 2001-02-15 2005-11-08 Centric Software, Inc. Automatic transfer and expansion of application-specific data for display at a website
US6968553B1 (en) * 2001-03-01 2005-11-22 Alcatel Element manager common gateway architecture system and method
US7380250B2 (en) * 2001-03-16 2008-05-27 Microsoft Corporation Method and system for interacting with devices having different capabilities
US7185094B2 (en) * 2001-03-30 2007-02-27 Sandcherry, Inc. Media session framework using a control module to direct and manage application and service servers
US20020156900A1 (en) * 2001-03-30 2002-10-24 Brian Marquette Protocol independent control module
US20020184363A1 (en) * 2001-04-20 2002-12-05 Steven Viavant Techniques for server-controlled measurement of client-side performance
US7031314B2 (en) * 2001-05-16 2006-04-18 Bytemobile, Inc. Systems and methods for providing differentiated services within a network communication system
EP1564960B1 (en) * 2001-05-16 2007-03-28 Bytemobile, Inc. System and methods for providing differentiated services within a network communication system
US6965765B2 (en) * 2001-05-17 2005-11-15 Palmsource, Inc. Transactional message-queue communication for wirelessly networked devices system and method
ATE344557T1 (de) * 2001-05-18 2006-11-15 Bytemobile Inc Zweifachmodus dienstplattform in netzwerkkommunikationssystem
US7493397B1 (en) 2001-06-06 2009-02-17 Microsoft Corporation Providing remote processing services over a distributed communications network
US6915454B1 (en) 2001-06-12 2005-07-05 Microsoft Corporation Web controls validation
US7562146B2 (en) * 2003-10-10 2009-07-14 Citrix Systems, Inc. Encapsulating protocol for session persistence and reliability
US20050198379A1 (en) 2001-06-13 2005-09-08 Citrix Systems, Inc. Automatically reconnecting a client across reliable and persistent communication sessions
US7165112B2 (en) * 2001-06-22 2007-01-16 Motorola, Inc. Method and apparatus for transmitting data in a communication system
US7185063B1 (en) * 2001-06-22 2007-02-27 Digital River, Inc. Content delivery network using differential caching
US20020198956A1 (en) * 2001-06-25 2002-12-26 International Business Machines Corporation Method and apparatus for managing a cache
US7548875B2 (en) 2001-06-27 2009-06-16 John Mikkelsen Media delivery platform
US7594001B1 (en) * 2001-07-06 2009-09-22 Microsoft Corporation Partial page output caching
US7092997B1 (en) 2001-08-06 2006-08-15 Digital River, Inc. Template identification with differential caching
US7188214B1 (en) 2001-08-07 2007-03-06 Digital River, Inc. Efficient compression using differential caching
US7822843B2 (en) * 2001-08-13 2010-10-26 Cox Communications, Inc. Predicting the activities of an individual or group using minimal information
US7099957B2 (en) * 2001-08-23 2006-08-29 The Directtv Group, Inc. Domain name system resolution
US7644171B2 (en) * 2001-09-12 2010-01-05 Netmotion Wireless, Inc. Mobile networking system and method using IPv4 and IPv6
WO2003032201A1 (en) * 2001-10-09 2003-04-17 Wildblue Communications, Inc. Performance enhancing proxy for high latency data
US7000238B2 (en) * 2001-10-10 2006-02-14 Borland Software Corporation Development system providing extensible remoting architecture
JP2003205483A (ja) * 2001-11-07 2003-07-22 Sony Corp ロボットシステム及びロボット装置の制御方法
US7428725B2 (en) 2001-11-20 2008-09-23 Microsoft Corporation Inserting devices specific content
US20030106057A1 (en) * 2001-12-05 2003-06-05 Predictive Networks, Inc. Television navigation program guide
EP1318461A1 (en) * 2001-12-07 2003-06-11 Sap Ag Method and computer system for refreshing client-data
US7296051B1 (en) 2002-02-19 2007-11-13 Digital River, Inc. Predictive predownload of templates with delta encoding
US7487261B1 (en) 2002-02-22 2009-02-03 Digital River, Inc. Delta caching service
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
US7263562B2 (en) * 2002-03-21 2007-08-28 Microsoft Corporation Method and system for describing uploaded files statement regarding federally-sponsored research or development
US20030182424A1 (en) * 2002-03-22 2003-09-25 Steve Odendahl Scriptable proxy server
US7111038B2 (en) * 2002-04-03 2006-09-19 International Business Machines Corporation Enhancing application server performance by relocating performance-degrading processing
EP1355238A1 (en) * 2002-04-19 2003-10-22 Sap Ag Method and computer system for delta-handling in server-pages
US7703015B2 (en) * 2002-04-30 2010-04-20 Sap Aktiengesellschaft Delta-handling in server-pages
WO2003096669A2 (en) * 2002-05-10 2003-11-20 Reisman Richard R Method and apparatus for browsing using multiple coordinated device
US6996584B2 (en) * 2002-05-14 2006-02-07 Pervasive Software, Inc. System and method of maintaining functional client side data cache coherence
US7434163B2 (en) * 2002-05-31 2008-10-07 Sap Aktiengesellschaft Document structures for delta handling in server pages
US9357013B2 (en) * 2002-07-26 2016-05-31 International Business Machines Corporation Client-side script to application communication system
US7765255B2 (en) * 2002-07-30 2010-07-27 Sap Ag Extended web infrastructure for business applications
US7272660B1 (en) 2002-09-06 2007-09-18 Oracle International Corporation Architecture for general purpose near real-time business intelligence system and methods therefor
US8255454B2 (en) 2002-09-06 2012-08-28 Oracle International Corporation Method and apparatus for a multiplexed active data window in a near real-time business intelligence system
US7412481B2 (en) 2002-09-16 2008-08-12 Oracle International Corporation Method and apparatus for distributed rule evaluation in a near real-time business intelligence system
US7454423B2 (en) 2002-09-06 2008-11-18 Oracle International Corporation Enterprise link for a software database
US7945846B2 (en) 2002-09-06 2011-05-17 Oracle International Corporation Application-specific personalization for data display
US7899879B2 (en) 2002-09-06 2011-03-01 Oracle International Corporation Method and apparatus for a report cache in a near real-time business intelligence system
US8165993B2 (en) 2002-09-06 2012-04-24 Oracle International Corporation Business intelligence system with interface that provides for immediate user action
US7912899B2 (en) 2002-09-06 2011-03-22 Oracle International Corporation Method for selectively sending a notification to an instant messaging device
US7941542B2 (en) 2002-09-06 2011-05-10 Oracle International Corporation Methods and apparatus for maintaining application execution over an intermittent network connection
US7243124B1 (en) 2002-09-06 2007-07-10 Oracle International Corporation Architecture for general purpose near real-time business intelligence system with client devices and methods therefor
US7401158B2 (en) * 2002-09-16 2008-07-15 Oracle International Corporation Apparatus and method for instant messaging collaboration
US7668917B2 (en) * 2002-09-16 2010-02-23 Oracle International Corporation Method and apparatus for ensuring accountability in the examination of a set of data elements by a user
US7426059B2 (en) 2002-09-16 2008-09-16 Oracle International Corporation Data presentation methods and apparatus to facilitate printing and reviewing
US7730155B1 (en) * 2002-10-01 2010-06-01 Apple Inc. Method and apparatus for dynamically locating resources
US7574653B2 (en) 2002-10-11 2009-08-11 Microsoft Corporation Adaptive image formatting control
US8069225B2 (en) * 2003-04-14 2011-11-29 Riverbed Technology, Inc. Transparent client-server transaction accelerator
US7650416B2 (en) * 2003-08-12 2010-01-19 Riverbed Technology Content delivery for client-server protocols with user affinities using connection end-point proxies
US8364815B2 (en) 2005-03-18 2013-01-29 Riverbed Technology, Inc. Reliability and availability of distributed servers
US6667700B1 (en) 2002-10-30 2003-12-23 Nbt Technology, Inc. Content-based segmentation scheme for data compression in storage and transmission including hierarchical segment representation
US8176186B2 (en) * 2002-10-30 2012-05-08 Riverbed Technology, Inc. Transaction accelerator for client-server communications systems
US7120666B2 (en) * 2002-10-30 2006-10-10 Riverbed Technology, Inc. Transaction accelerator for client-server communication systems
WO2004047408A1 (en) * 2002-11-15 2004-06-03 International Business Machines Corporation Network traffic control in peer-to-peer environments
JP2004240650A (ja) * 2003-02-05 2004-08-26 Brother Ind Ltd 通信システム、スイッチ操作部材、端末装置およびプログラム
US20040170181A1 (en) * 2003-02-27 2004-09-02 Padcom, Inc. Prioritized alternate port routing
US7904823B2 (en) * 2003-03-17 2011-03-08 Oracle International Corporation Transparent windows methods and apparatus therefor
EP1606754A4 (en) * 2003-03-25 2006-04-19 Sedna Patent Services Llc CREATION OF AUDIENCE ANALYSIS
US7113964B1 (en) 2003-06-05 2006-09-26 Iteration Software, Inc. Method and apparatus for archiving data in a relational database system
WO2004114529A2 (en) * 2003-06-16 2004-12-29 Mentat Inc. Pre-fetch communication systems and methods
US7882510B2 (en) * 2003-08-06 2011-02-01 Microsoft Corporation Demultiplexer application programming interface
US7853699B2 (en) 2005-03-15 2010-12-14 Riverbed Technology, Inc. Rules-based transaction prefetching using connection end-point proxies
US7873353B2 (en) * 2003-09-30 2011-01-18 Ianywhere Solutions, Inc. Method and system for accessing applications and data, and for tracking of key indicators on mobile handheld devices
US7472254B2 (en) * 2003-10-10 2008-12-30 Iora, Ltd. Systems and methods for modifying a set of data objects
US7774774B1 (en) * 2003-10-22 2010-08-10 Apple Inc. Software setup system
US20050091226A1 (en) * 2003-10-23 2005-04-28 Yun Lin Persistent caching directory level support
US7441011B2 (en) * 2003-10-23 2008-10-21 Microsoft Corporation Truth on client persistent caching
US7890604B2 (en) 2004-05-07 2011-02-15 Microsoft Corproation Client-side callbacks to server events
US9026578B2 (en) 2004-05-14 2015-05-05 Microsoft Corporation Systems and methods for persisting data between web pages
US7464386B2 (en) 2004-05-17 2008-12-09 Microsoft Corporation Data controls architecture
US8135803B2 (en) * 2004-08-23 2012-03-13 Ianywhere Solutions, Inc. Method, system, and computer program product for offline advertisement servicing and cycling
US20060064470A1 (en) * 2004-09-23 2006-03-23 Sargent Antony J Method, system, and computer program product for improved synchronization efficiency for mobile devices, including database hashing and caching of web access errors
US20060078125A1 (en) * 2004-10-08 2006-04-13 Philip Cacayorin Devices and methods for implementing cryptographic scrambling
US7908397B1 (en) 2005-02-28 2011-03-15 Adobe Systems Incorporated Application server gateway technology
US20060248194A1 (en) 2005-03-18 2006-11-02 Riverbed Technology, Inc. Connection forwarding
US20060224702A1 (en) * 2005-03-31 2006-10-05 Patrick Schmidt Local workflows in a business process management system
US8943304B2 (en) 2006-08-03 2015-01-27 Citrix Systems, Inc. Systems and methods for using an HTTP-aware client agent
US9692725B2 (en) * 2005-05-26 2017-06-27 Citrix Systems, Inc. Systems and methods for using an HTTP-aware client agent
WO2007016236A2 (en) * 2005-07-28 2007-02-08 Riverbed Technology, Inc. Automatic framing selection
US8370583B2 (en) * 2005-08-12 2013-02-05 Silver Peak Systems, Inc. Network memory architecture for providing data based on local accessibility
US8095774B1 (en) 2007-07-05 2012-01-10 Silver Peak Systems, Inc. Pre-fetching data into a memory
US8392684B2 (en) * 2005-08-12 2013-03-05 Silver Peak Systems, Inc. Data encryption in a network memory architecture for providing data based on local accessibility
US8171238B1 (en) 2007-07-05 2012-05-01 Silver Peak Systems, Inc. Identification of data stored in memory
US8811431B2 (en) 2008-11-20 2014-08-19 Silver Peak Systems, Inc. Systems and methods for compressing packet data
US8929402B1 (en) 2005-09-29 2015-01-06 Silver Peak Systems, Inc. Systems and methods for compressing packet data by predicting subsequent data
US8489562B1 (en) 2007-11-30 2013-07-16 Silver Peak Systems, Inc. Deferred data storage
US7805670B2 (en) * 2005-12-16 2010-09-28 Microsoft Corporation Partial rendering of web pages
US7924884B2 (en) 2005-12-20 2011-04-12 Citrix Systems, Inc. Performance logging using relative differentials and skip recording
US20070203973A1 (en) * 2006-02-28 2007-08-30 Microsoft Corporation Fuzzing Requests And Responses Using A Proxy
CN101043522B (zh) * 2006-03-22 2013-11-13 腾讯科技(深圳)有限公司 一种基于Web服务器的通信方法及系统
US8140618B2 (en) * 2006-05-04 2012-03-20 Citrix Online Llc Methods and systems for bandwidth adaptive N-to-N communication in a distributed system
WO2008005629A2 (en) * 2006-05-26 2008-01-10 Riverbed Technology, Inc. Throttling of predictive acks in an accelerated network communication system
US7769834B2 (en) 2006-05-30 2010-08-03 Riverbed Technology, Inc. System for selecting a proxy pair based on configurations of autodiscovered proxies on a network
KR100765785B1 (ko) * 2006-06-05 2007-10-12 삼성전자주식회사 무선 usb를 이용한 단일 무선장치와 다수의 호스트 간의접속 방법 및 시스템
US20070300243A1 (en) * 2006-06-22 2007-12-27 Sap Portals Israel Ltd. Modular caching method and system for enabling offline functionality of server-client systems
US7941560B1 (en) * 2006-07-14 2011-05-10 Intuit Inc. Client caching of target addresses for network requests
US8755381B2 (en) 2006-08-02 2014-06-17 Silver Peak Systems, Inc. Data matching using flow based packet data storage
US8885632B2 (en) 2006-08-02 2014-11-11 Silver Peak Systems, Inc. Communications scheduler
US8312120B2 (en) * 2006-08-22 2012-11-13 Citrix Systems, Inc. Systems and methods for providing dynamic spillover of virtual servers based on bandwidth
US8493858B2 (en) 2006-08-22 2013-07-23 Citrix Systems, Inc Systems and methods for providing dynamic connection spillover among virtual servers
TR200606833A2 (tr) * 2006-12-01 2007-10-22 B�Lmed B�Lg�Sayar Ve Yazilim A.�. Web tarayıcı tabanlı uygulamalarda performans arttırma yöntemi
US7733910B2 (en) * 2006-12-29 2010-06-08 Riverbed Technology, Inc. Data segmentation using shift-varying predicate function fingerprinting
CN101242337B (zh) * 2007-02-08 2010-11-10 张永敏 一种计算机网络的内容发布方法及系统
US8533310B2 (en) * 2007-03-09 2013-09-10 Riverbed Technology, Inc. Method and apparatus for acceleration by prefetching associated objects
CN101272442B (zh) * 2007-03-21 2010-05-26 杭州波导软件有限公司 数字图像无损压缩方法和装置、解析方法及图像译码器
WO2008138008A1 (en) * 2007-05-08 2008-11-13 Riverbed Technology, Inc A hybrid segment-oriented file server and wan accelerator
US20090097470A1 (en) * 2007-10-12 2009-04-16 Collier David S Methods and systems for communicating data
US8190876B2 (en) * 2007-11-19 2012-05-29 Red Hat, Inc. Renegotiating SSL/TLS connections with client certificates on post requests
US8307115B1 (en) * 2007-11-30 2012-11-06 Silver Peak Systems, Inc. Network memory mirroring
US8635361B2 (en) * 2007-12-03 2014-01-21 Riverbed Technology, Inc. Transaction acceleration using application-specific locking
US8775550B2 (en) * 2008-02-08 2014-07-08 Microsoft Corporation Caching HTTP request and response streams
US8442052B1 (en) 2008-02-20 2013-05-14 Silver Peak Systems, Inc. Forward packet recovery
US8463941B1 (en) * 2008-06-16 2013-06-11 Riverbed Technology, Inc. Cross-session protocol acceleration and its application to storage area network file systems
US10164861B2 (en) 2015-12-28 2018-12-25 Silver Peak Systems, Inc. Dynamic monitoring and visualization for network health characteristics
US10805840B2 (en) 2008-07-03 2020-10-13 Silver Peak Systems, Inc. Data transmission via a virtual wide area network overlay
US8743683B1 (en) 2008-07-03 2014-06-03 Silver Peak Systems, Inc. Quality of service using multiple flows
US9717021B2 (en) 2008-07-03 2017-07-25 Silver Peak Systems, Inc. Virtual network overlay
US8793339B2 (en) * 2008-08-29 2014-07-29 Red Hat, Inc. Facilitating client server interaction
US8793398B2 (en) * 2008-08-29 2014-07-29 Red Hat, Inc. Facilitating client server interaction
US8925034B1 (en) 2009-06-30 2014-12-30 Symantec Corporation Data protection requirements specification and migration
US8387047B1 (en) 2009-08-03 2013-02-26 Symantec Corporation Method of virtualizing file extensions in a computer system by determining an association between applications in virtual environment and a file extension
US8352937B2 (en) * 2009-08-03 2013-01-08 Symantec Corporation Streaming an application install package into a virtual environment
US8090744B1 (en) 2009-08-26 2012-01-03 Symantec Operating Corporation Method and apparatus for determining compatibility between a virtualized application and a base environment
US8473444B1 (en) 2009-08-28 2013-06-25 Symantec Corporation Management of actions in multiple virtual and non-virtual environments
US8438555B1 (en) 2009-08-31 2013-05-07 Symantec Corporation Method of using an encapsulated data signature for virtualization layer activation
US8458310B1 (en) 2009-09-14 2013-06-04 Symantec Corporation Low bandwidth streaming of application upgrades
US8566297B1 (en) 2010-01-14 2013-10-22 Symantec Corporation Method to spoof data formats from image backups
US8290912B1 (en) 2010-01-29 2012-10-16 Symantec Corporation Endpoint virtualization aware backup
US8707296B2 (en) 2010-04-27 2014-04-22 Apple Inc. Dynamic retrieval of installation packages when installing software
US10142157B2 (en) 2010-06-10 2018-11-27 Blackberry Limited Method and system for reducing transmission of redundant data
US8495625B1 (en) 2010-07-27 2013-07-23 Symantec Corporation Method and system for creation of streamed files on-demand
WO2012106573A1 (en) * 2011-02-04 2012-08-09 Opnet Technologies, Inc. Correlating input and output requests between client and server components in a multi-tier application
US9094090B2 (en) 2011-09-23 2015-07-28 Gilat Satellite Networks Ltd. Decentralized caching system
US9130991B2 (en) 2011-10-14 2015-09-08 Silver Peak Systems, Inc. Processing data packets in performance enhancing proxy (PEP) environment
US9626224B2 (en) 2011-11-03 2017-04-18 Silver Peak Systems, Inc. Optimizing available computing resources within a virtual environment
US9084058B2 (en) 2011-12-29 2015-07-14 Sonos, Inc. Sound field calibration using listener localization
US20130212227A1 (en) * 2012-02-09 2013-08-15 Cogent Real-Time Systems Inc. System and method for streaming data via http
US9274870B2 (en) 2012-02-10 2016-03-01 Empire Technology Development Llc Monitoring connection quality
US9106192B2 (en) 2012-06-28 2015-08-11 Sonos, Inc. System and method for device playback calibration
US9219460B2 (en) 2014-03-17 2015-12-22 Sonos, Inc. Audio settings based on environment
US9542172B2 (en) 2013-02-05 2017-01-10 Apple Inc. Automatic updating of applications
US9880776B1 (en) 2013-02-22 2018-01-30 Veritas Technologies Llc Content-driven data protection method for multiple storage devices
JP6088853B2 (ja) * 2013-02-27 2017-03-01 株式会社東芝 通信装置、通信方法および通信プログラム
US9264839B2 (en) 2014-03-17 2016-02-16 Sonos, Inc. Playback device configuration based on proximity detection
US9613158B1 (en) * 2014-05-13 2017-04-04 Viasat, Inc. Cache hinting systems
US9948496B1 (en) 2014-07-30 2018-04-17 Silver Peak Systems, Inc. Determining a transit appliance for data traffic to a software service
US9875344B1 (en) 2014-09-05 2018-01-23 Silver Peak Systems, Inc. Dynamic monitoring and authorization of an optimization device
US9952825B2 (en) 2014-09-09 2018-04-24 Sonos, Inc. Audio processing algorithms
CN105491078B (zh) 2014-09-15 2019-01-22 阿里巴巴集团控股有限公司 Soa系统中的数据处理方法及装置、soa系统
US9693165B2 (en) 2015-09-17 2017-06-27 Sonos, Inc. Validation of audio calibration using multi-dimensional motion check
CN111314826B (zh) 2015-09-17 2021-05-14 搜诺思公司 由计算设备执行的方法及相应计算机可读介质和计算设备
US9743207B1 (en) 2016-01-18 2017-08-22 Sonos, Inc. Calibration using multiple recording devices
US11106423B2 (en) 2016-01-25 2021-08-31 Sonos, Inc. Evaluating calibration of a playback device
US10003899B2 (en) 2016-01-25 2018-06-19 Sonos, Inc. Calibration with particular locations
US9860662B2 (en) 2016-04-01 2018-01-02 Sonos, Inc. Updating playback device configuration information based on calibration data
US9864574B2 (en) 2016-04-01 2018-01-09 Sonos, Inc. Playback device calibration based on representation spectral characteristics
US9763018B1 (en) 2016-04-12 2017-09-12 Sonos, Inc. Calibration of audio playback devices
US10432484B2 (en) 2016-06-13 2019-10-01 Silver Peak Systems, Inc. Aggregating select network traffic statistics
US9794710B1 (en) 2016-07-15 2017-10-17 Sonos, Inc. Spatial audio correction
US10372406B2 (en) 2016-07-22 2019-08-06 Sonos, Inc. Calibration interface
US10459684B2 (en) 2016-08-05 2019-10-29 Sonos, Inc. Calibration of a playback device based on an estimated frequency response
US9967056B1 (en) 2016-08-19 2018-05-08 Silver Peak Systems, Inc. Forward packet recovery with constrained overhead
US10361997B2 (en) 2016-12-29 2019-07-23 Riverbed Technology, Inc. Auto discovery between proxies in an IPv6 network
US10771394B2 (en) 2017-02-06 2020-09-08 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows on a first packet from DNS data
US10892978B2 (en) 2017-02-06 2021-01-12 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows from first packet data
US11044202B2 (en) 2017-02-06 2021-06-22 Silver Peak Systems, Inc. Multi-level learning for predicting and classifying traffic flows from first packet data
US10257082B2 (en) 2017-02-06 2019-04-09 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows
US11212210B2 (en) 2017-09-21 2021-12-28 Silver Peak Systems, Inc. Selective route exporting using source type
CN117544884A (zh) 2017-10-04 2024-02-09 谷歌有限责任公司 基于房间特性自动均衡音频输出的方法和系统
KR102274055B1 (ko) * 2017-12-26 2021-07-06 삼성에스디에스 주식회사 메시지 시스템 및 애플리케이션 활성화 방법과 이를 수행하기 위한 사용자 단말
US10637721B2 (en) 2018-03-12 2020-04-28 Silver Peak Systems, Inc. Detecting path break conditions while minimizing network overhead
US11206484B2 (en) 2018-08-28 2021-12-21 Sonos, Inc. Passive speaker authentication
US10299061B1 (en) 2018-08-28 2019-05-21 Sonos, Inc. Playback device calibration
US10868892B1 (en) * 2019-05-31 2020-12-15 Micro Focus Llc Replacement code implementing full-duplex communication channel protocol for message interception
US10734965B1 (en) 2019-08-12 2020-08-04 Sonos, Inc. Audio calibration of a portable playback device
US11968417B2 (en) * 2021-12-30 2024-04-23 Comcast Cable Communications, Llc Systems, methods, and apparatuses for buffer management

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4438511A (en) * 1980-11-10 1984-03-20 Telebit Corporation Packetized ensemble modem
US5021949A (en) * 1988-02-29 1991-06-04 International Business Machines Corporation Method and apparatus for linking an SNA host to a remote SNA host over a packet switched communications network
US4893307A (en) * 1988-02-29 1990-01-09 International Business Machines Corporation Method and apparatus for linking SNA terminals to an SNA host over a packet switched communications network
US5473772A (en) * 1991-04-02 1995-12-05 International Business Machines Corporation Automatic update of static and dynamic files at a remote network node in response to calls issued by or for application programs
US5193162A (en) * 1989-11-06 1993-03-09 Unisys Corporation Cache memory with data compaction for use in the audit trail of a data processing system having record locking capabilities
US5220501A (en) * 1989-12-08 1993-06-15 Online Resources, Ltd. Method and system for remote delivery of retail banking services
JP2511591B2 (ja) * 1990-10-29 1996-06-26 インターナショナル・ビジネス・マシーンズ・コーポレイション 無線光通信システムの動作方法および光通信システム
US5481721A (en) * 1991-07-17 1996-01-02 Next Computer, Inc. Method for providing automatic and dynamic translation of object oriented programming language-based message passing into operation system message passing using proxy objects
US5224098A (en) * 1991-07-17 1993-06-29 International Business Machines Corporation Compensation for mismatched transport protocols in a data communications network
DE4131133B4 (de) * 1991-09-19 2005-09-08 Robert Bosch Gmbh Verfahren und Vorrichtung zum Austausch von Daten in Datenverarbeitungsanlagen
US5442633A (en) * 1992-07-08 1995-08-15 International Business Machines Corporation Shortcut network layer routing for mobile hosts
US5737536A (en) * 1993-02-19 1998-04-07 Borland International, Inc. System and methods for optimized access in a multi-user environment
US5511208A (en) * 1993-03-23 1996-04-23 International Business Machines Corporation Locating resources in computer networks having cache server nodes
JPH06324928A (ja) * 1993-05-14 1994-11-25 Mitsubishi Electric Corp ログ生成装置とファイルの異なるバージョンの調停のための装置及び異なる場所にあるコンピュータファイルの異なるバージョンを調停するための装置
US5446736A (en) * 1993-10-07 1995-08-29 Ast Research, Inc. Method and apparatus for connecting a node to a wireless network using a standard protocol
US5412654A (en) * 1994-01-10 1995-05-02 International Business Machines Corporation Highly dynamic destination-sequenced destination vector routing for mobile computers
US5446888A (en) * 1994-01-14 1995-08-29 Pyne; Charles F. Remote file transfer method and apparatus
US5574906A (en) * 1994-10-24 1996-11-12 International Business Machines Corporation System and method for reducing storage requirement in backup subsystems utilizing segmented compression and differencing
US5572528A (en) * 1995-03-20 1996-11-05 Novell, Inc. Mobile networking method and apparatus
US5581558A (en) * 1995-03-29 1996-12-03 Lucent Technologies Inc. Apparatus for bridging non-compatible network architectures
US5829023A (en) * 1995-07-17 1998-10-27 Cirrus Logic, Inc. Method and apparatus for encoding history of file access to support automatic file caching on portable and desktop computers
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
US5737619A (en) * 1995-10-19 1998-04-07 Judson; David Hugh World wide web browsing with content delivery over an idle connection and interstitial content display
US5754774A (en) * 1996-02-15 1998-05-19 International Business Machine Corp. Client/server communication system
US5867661A (en) * 1996-02-15 1999-02-02 International Business Machines Corporation Method and apparatus of using virtual sockets for reducing data transmitted over a wireless communication link between a client web browser and a host web server using a standard TCP protocol
US5859971A (en) * 1996-02-15 1999-01-12 International Business Machines Corp. Differencing client/server communication system for use with CGI forms
US5878213A (en) * 1996-02-15 1999-03-02 International Business Machines Corporation Methods, systems and computer program products for the synchronization of time coherent caching system
US5673322A (en) * 1996-03-22 1997-09-30 Bell Communications Research, Inc. System and method for providing protocol translation and filtering to access the world wide web from wireless or low-bandwidth networks
JPH09270794A (ja) * 1996-03-29 1997-10-14 Mitsubishi Electric Corp ネットワーク管理装置
US5764910A (en) * 1996-04-02 1998-06-09 National Semiconductor Corporation Method and apparatus for encoding and using network resource locators
US5857201A (en) * 1996-06-18 1999-01-05 Wright Strategies, Inc. Enterprise connectivity to handheld devices
US5870558A (en) * 1996-06-25 1999-02-09 Mciworldcom, Inc. Intranet graphical user interface for SONET network management
US5774660A (en) * 1996-08-05 1998-06-30 Resonate, Inc. World-wide-web server with delayed resource-binding for resource-based load balancing on a distributed resource multi-node network

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3012739A1 (en) 2014-10-20 2016-04-27 TISOFT Wojciech Jedrzejewski System for synchronizing web browsers

Also Published As

Publication number Publication date
KR19980703861A (ko) 1998-12-05
DE69610495D1 (de) 2000-11-02
CN1195443A (zh) 1998-10-07
WO1997030538A2 (en) 1997-08-21
EP0823170B1 (en) 2000-09-27
JPH11500895A (ja) 1999-01-19
DE69610495T2 (de) 2001-05-10
JP3953109B2 (ja) 2007-08-08
HUP9801295A2 (hu) 1998-08-28
JP3962369B2 (ja) 2007-08-22
TW297194B (en) 1997-02-01
HK1017789A1 (en) 1999-11-26
ATE196707T1 (de) 2000-10-15
US6003087A (en) 1999-12-14
CA2218169A1 (en) 1997-08-21
US5754774A (en) 1998-05-19
CZ354297A3 (cs) 1998-03-18
HUP9801295A3 (en) 1998-10-28
CN1148927C (zh) 2004-05-05
PL327294A1 (en) 1998-12-07
EP0823170A2 (en) 1998-02-11
MY122038A (en) 2006-03-31
CA2218169C (en) 2004-12-14
WO1997030538A3 (en) 1998-04-30
KR100289520B1 (ko) 2001-05-02
ES2151176T3 (es) 2000-12-16
CZ287988B6 (cs) 2001-03-14
JP2004164630A (ja) 2004-06-10

Similar Documents

Publication Publication Date Title
PL180570B1 (pl) Sposób, urzadzenie i produkt programu komputerowego do komunikacjiw systemie klient/serwer PL PL PL PL PL PL PL PL PL PL PL
PL180608B1 (pl) Sposób, urzadzenie i produkt programu komputerowego do komunikacji TCP o zredukowanych operacjach pomocniczych PL PL PL PL PL PL PL PL PL PL PL
PL182978B1 (pl) Sposób pamiętania podręcznego danych i urządzenie do pamiętania podręcznego danych oraz produkt programu komputerowego do pamiętania podręcznego danych
CA2218187C (en) Differencing communication system
CZ287679B6 (cs) Způsob zachycování dat přijatých od druhé aplikace, zařízení a počítačový programový produkt k jeho provádění