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 PLInfo
- 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
Links
- 238000004891 communication Methods 0.000 title claims abstract description 155
- 238000000034 method Methods 0.000 claims abstract description 37
- 238000006243 chemical reaction Methods 0.000 claims abstract description 19
- 230000005540 biological transmission Effects 0.000 claims description 110
- 230000004044 response Effects 0.000 claims description 105
- 230000002085 persistent effect Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 description 61
- 230000001427 coherent effect Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 230000004069 differentiation Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 201000007902 Primary cutaneous amyloidosis Diseases 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 208000014670 posterior cortical atrophy Diseases 0.000 description 1
- 238000000513 principal component analysis Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000002269 spontaneous effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation 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)
- Zastrzeżenia patentowe1. 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. 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. 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. 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. 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ądarki180 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. 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. 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. 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. 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 na180 570 niezależny protokół komunikacyjny klient/serwer i dostarczenia komunikatu po konwersji do drugiej aplikacji (20).
- 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).* * *
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)
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)
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)
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 |
-
1996
- 1996-02-15 US US08/601,804 patent/US5754774A/en not_active Expired - Lifetime
- 1996-05-01 TW TW085105226A patent/TW297194B/zh not_active IP Right Cessation
- 1996-07-11 HU HU9801295A patent/HUP9801295A3/hu unknown
- 1996-07-11 PL PL96327294A patent/PL180570B1/pl unknown
- 1996-07-11 JP JP52931197A patent/JP3953109B2/ja not_active Expired - Lifetime
- 1996-07-11 CA CA002218169A patent/CA2218169C/en not_active Expired - Lifetime
- 1996-07-11 WO PCT/US1996/011551 patent/WO1997030538A2/en active IP Right Grant
- 1996-07-11 DE DE69610495T patent/DE69610495T2/de not_active Expired - Lifetime
- 1996-07-11 CN CNB96193946XA patent/CN1148927C/zh not_active Expired - Lifetime
- 1996-07-11 ES ES96923748T patent/ES2151176T3/es not_active Expired - Lifetime
- 1996-07-11 EP EP96923748A patent/EP0823170B1/en not_active Expired - Lifetime
- 1996-07-11 KR KR1019970707261A patent/KR100289520B1/ko not_active IP Right Cessation
- 1996-07-11 CZ CZ19973542A patent/CZ287988B6/cs not_active IP Right Cessation
- 1996-07-11 AT AT96923748T patent/ATE196707T1/de not_active IP Right Cessation
-
1997
- 1997-02-04 MY MYPI97000417A patent/MY122038A/en unknown
- 1997-10-03 US US08/939,724 patent/US6003087A/en not_active Expired - Fee Related
-
1998
- 1998-12-03 HK HK98112736A patent/HK1017789A1/xx not_active IP Right Cessation
-
2003
- 2003-10-24 JP JP2003364382A patent/JP3962369B2/ja not_active Expired - Lifetime
Cited By (1)
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í |