PL180619B1 - o zredukowanych operacjach pomocniczych PL PL PL PL PL PL PL PL PL PL PL - Google Patents
o zredukowanych operacjach pomocniczych PL PL PL PL PL PL PL PL PL PL PLInfo
- Publication number
- PL180619B1 PL180619B1 PL96322830A PL32283096A PL180619B1 PL 180619 B1 PL180619 B1 PL 180619B1 PL 96322830 A PL96322830 A PL 96322830A PL 32283096 A PL32283096 A PL 32283096A PL 180619 B1 PL180619 B1 PL 180619B1
- Authority
- PL
- Poland
- Prior art keywords
- server
- computer
- client
- application
- response
- Prior art date
Links
Classifications
-
- 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
- H04L67/04—Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
-
- 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/2866—Architectures; Arrangements
- H04L67/2876—Pairs of inter-processing entities at each side of the network, e.g. split proxies
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
- H04L67/5651—Reducing the amount or size of exchanged application data
-
- 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
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- 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/14—Session management
- H04L67/142—Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5682—Policies or rules for updating, deleting or replacing the stored data
-
- 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/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
- Optical Communication System (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Stored Programmes (AREA)
Abstract
aplikacji w pierwszym komputerze i do drugiej aplikacji w drugim kom- puterze, gdzie dane transm ituje sie przez zewnetrzne lacze kom unikacyjne z pierwszego komputera do drugiego komputera, znam ienny tym, ze zapamietuje sie strum ien danych z pierwszej aplikacji dostarczanej do drugiej aplikacji w odpowiedzi na zadanie z drugiej aplikacji w pamieci podrecznej w pierwszym kom puterze dla w ytw arzania zapisu podstawowej pamieci podrecznej serwera, zapam ietuje sie strum ien danych dostarczany do drugiej aplikacji w odpowiedzi na zadanie z drugiej aplikacji w pamieci podrecznej znajdujacej sie w drugim kom puterze dla w ytw arzania zapisu podstawowej pamieci podrecznej klienta, ocenia sie zadania z drugiej aplikacji dla okreslenia, czy zapis podstawowej pam ieci podrecznej klienta, odpowiadajacy w yw olyw anem u zadaniu, w ystepuje dla dostarcze- nia podstawowej formy klienta, w yw oluje sie zadania z drugiej aplikacji dla okreslenia, czy zapis podstawowej pam ieci podrecznej komputera serwera, odpowiadajacy w yw olyw anem u zadaniu, w ystepuje dla dostar- czania podstawowej formy serwera, przechw ytuje sie strum ien danych, odpowiadajacy odpowiedzi poczatkow anej przez pierw sza aplikacje w odpowiedzi na w ywolywane zadanie z drugiej aplikacji przed transm isja odpowiedzi przez zewnetrzne lacze kom unikacyjne, porów nuje sie prze- chw ycona odpowiedz z podstaw ow a form a serw era dla dostarczania danych róznicowych, odpow iadajacych róznicy pom iedzy przechwycona odpow iedzia i podstaw ow a form a serw era, przesyla sie dane róznicowe do drugiego kom putera przez zewnetrzne lacze kom unikacyjne, odbiera sie dane róznicowe transm itowane przez zewnetrzne lacze komunikacyjne, przesylane przez pierwszy kom puter, odtw arza sie strum ien danych odpowiedzi, odpowiednio do transm isji z pierwszej aplikacji ze specyficz- nego strumienia danych klienta/serwera, odbieranego przez zewnetrzne lacze kom unikacyjne, poprzez laczenie podstawowej form y klienta z danymi róznicowym i odbieranymi przez zewnetrzne lacze kom unikacyjne dla w ytwarzania strum ienia danych odpow iedzi, odpow iadajacego prze- chwyconej odpowiedzi i dostarcza sie odtworzony strum ien danych, odpowiadajacy przechwyconej odpow iedzi, do drugiej aplikacji. FIG. 2 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 TCP o zredukowanych operacjach pomocniczych, zwłaszcza do komunikacji pomiędzy aplikacjami znajdującymi się w różnych komputerach, takimi jak przeglądarka WWW i serwer WWW, zwłaszcza rozróżniania komunikacji przez zewnętrzne łącze komunikacyjne pomiędzy komputerami.
Znana jest powszechna akceptacja sieci Internet jako środka komunikacji masowej. To oparte na szerokiej podstawie uznanie intemetu jako środka komunikacji i interakcji między licznymi sieciami wytworzyło także dobrze utrwaloną bazę zbudowaną na standaryzowanych internetowych protokołach współdziałania między sieciami komputerowymi.
Zasadą dla intemetu jest taka relacja między klientem a serwerem, że klienci (przeglądarki) komunikują się z serwerami intemetu. Dla zwiększenia dostępu do intemetu, stosowane protokoły komunikacyjne i języki używane przez klientów i serwery zostały poddane standaryzacji. Te protokoły zawierają protokół przesyłania hipertekstu HTTP, który jest protoko180 619 łem komunikacyjnym używanym pomiędzy klientami i serwerami oraz protokół sterujący transmisją w sieci Internet TCP/IP, gdzie protokół TCP jest specjalnym protokołem dla komunikacji pomiędzy komputerami lub aplikacjami. Również standaryzowany jest język zwany językiem hipertekstowego znakowania informacji HTML. Ponieważ te protokoł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 sieci ogólnoświatowej WWW klientem może być przeglądarka WWW, która działa jako interfejs użytkownika. Przeglądarka WWW przesyła żądania klienta do 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 hiperłączy, które wymagają kolejnych żądań przeglądarki, następnie inicjowanych 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.
Przykładem typowej komunikacji sieciowej jest przypadek, gdy przeglądarka sieciowa, inicjujące żądanie strony tytułowej z serwera sieciowego, ilustruje podstawowe zależności pomiędzy danymi HTTP, HTML, TCP i przeglądarka 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 tego przykładu może być stroną tytułową. Lokalizator URL funkcjonuje jak adres strony sieciowej i jest unikalny dla całego intemetu. 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 intemecie, realizowane przez sieciowy serwer intemetu lub lokalizator 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 lokalizatora 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ć w 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.
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ż protokoł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 dostępu do sieci informatycznej. Dlatego powszechnie instalowane u użytkowników przeglądarki w połączeniu z dostępnością intemetu i łatwością zapisu aplikacji serwerów, wykorzystując wspólny interfejs bramy CGI, czyni technikę sieciową bardzo atrakcyjną dla szerokiej klasy aplikacji formatowanych.
Znane jest, że gdy wzrastała popularność i stosowanie intemetu, zwiększała się również popularność komputerów przenośnych. Użycie laptopów, notebooków, osobistych urządzeń cyfro wy ch/komunikacyjnych i innych urządzeń przenośnych doprowadziło do zwiększenia wymagań w zakresie komunikacji radiowej. Radiowe sieci wielkoobszarowe, łączność komórkowa i radiowa mają jednak 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 techniki radiowej do bezstanowego protokołu komunikacyjnego sieci WWW. Również, ponieważ protokół sieci jest bezstanowy, ilość
180 619 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 techniki radiowej lub innych powolnych technik komunikacyjnych z techniką sieciową wydaje się niepraktyczne, przy czym możliwości techniki sieciowej o uniwersalnym charakterze uwydatniają słabość techniki radiowej.
Istotą wynalazku jest to, że w sposobie zapamiętuje się strumień danych z pierwszej aplikacji dostarczanej do drugiej aplikacji w odpowiedzi na żądanie z drugiej aplikacji w pamięci podręcznej w pierwszym komputerze dla wytwarzania zapisu podstawowej pamięci podręcznej serwera. Zapamiętuje się strumień danych dostarczany do drugiej aplikacji w odpowiedzi na żądanie z drugiej aplikacji w pamięci podręcznej znajdującej się w drugim komputerze dla wytwarzania zapisu podstawowej pamięci podręcznej klienta. Ocenia się żądania z drugiej aplikacji dla określenia, czy zapis podstawowej pamięci podręcznej klienta, odpowiadający wywoływanemu żądaniu, występuje dla dostarczenia podstawowej formy klienta. Wywołuje się żądania z drugiej aplikacji dla określenia, czy zapis podstawowej pamięci podręcznej komputera serwera, odpowiadający wywoływanemu żądaniu, występuje dla dostarczania podstawowej formy serwera. Przechwytuje się strumień danych, odpowiadający odpowiedzi początkowanej przez pierwszą aplikację w odpowiedzi na wywoływane żądanie z drugiej aplikacji przed transmisja odpowiedzi przez zewnętrzne łącze komunikacyjne. Porównuje się przechwyconą odpowiedź z podstawową formą serwera dla dostarczania danych różnicowych, odpowiadających różnicy pomiędzy przechwyconą odpowiedzią i podstawową formą serwera. Przesyła się dane różnicowe do drugiego komputera przez zewnętrzne łącze komunikacyjne. Odbiera się dane różnicowe transmitowane przez zewnętrzne łącze komunikacyjne, przesyłane przez pierwszy komputer. Odtwarza się strumień danych odpowiedzi, odpowiednio do transmisji z pierwszej aplikacji ze specyficznego strumienia danych klienta/serwera, odbieranego przez zewnętrzne łącza komunikacyjne, poprzez łączenie podstawowej formy klienta z danymi różnicowymi odbieranymi przez zewnętrzne łącze komunikacyjne dla wytwarzania strumienia danych odpowiedzi, odpowiadającego przechwyconej odpowiedzi i dostarcza się odtworzony strumień danych, odpowiadający przechwyconej odpowiedzi, do drugiej aplikacji.
Korzystnym jest, że określa się, czy podstawowa forma serwera jest identyczna z podstawową formą klienta, a podczas przesyłania transmituje się podstawową formę serwera i transmituje się dane różnicowe do drugiego komputera przez zewnętrzne łącze komunikacyjne, jeżeli podczas określania określa się, że podstawowa forma serwera nie jest identyczna z podstawową formą klienta. Podczas odtwarzania odtwarza się przechwycony strumień danych odpowiedzi, odpowiedni do odpowiedzi z pierwszej aplikacji, przez łączenie podstawowej formy serwera, odbieranej przez zewnętrzne łącze komunikacyjne, z danymi różnicowymi odbieranymi przez zewnętrzne łącze komunikacyjne dla wytworzenia strumienia danych odpowiadającego przechwyconej odpowiedzi i aktualizuje się podstawową formę klienta, odpowiadającą wywoływanemu żądaniu, przez pamiętanie odbieranej podstawowej formy serwera, gdy zapis podstawowej pamięci podręcznej klienta odpowiada wywoływanemu żądaniu.
Korzystnym jest, że określa się, czy różnica pomiędzy podstawową formą serwera i przechwyconą odpowiedzią jest większa niż określony poziom progowy różnicowy. Aktualizuje się podstawową formę serwera, odpowiadającą wywoływanemu żądaniu, przez zapamiętanie przechwyconego strumienia danych odpowiedzi, odbieranego z pierwszej aplikacji, gdy zapis podstawowej pamięci podręcznej serwera odpowiada przechwyconemu żądaniu, jeżeli różnica pomiędzy podstawową formą serwera i przechwyconą odpowiedzią jest większa niż określony poziom progowy, a podczas porównywania i przesyłania wykorzystuje aktualizowaną formę podstawową serwera.
Korzystnym jest, że utrzymuje się wiele zapisów podstawowej pamięci podręcznej serwera, które odpowiadają żądaniu z drugiej aplikacji, a podczas wywoływania określa się, czy wiele zapisów podstawowej pamięci podręcznej serwera występuje odpowiednio do żądania z drugiej aplikacji dla dostarczenia wielu podstawowych form serwera. Określa się, czy jedna z wielu podstawowych form serwera jest identyczna z podstawową formą klienta i podczas
180 619 porównywania wykorzystuje się jedną z wielu podstawowych form serwera, która jest identyczna z podstawową formą klienta, jeżeli podczas określania określa się, że jedna z wielu podstawowych form serwera jest identyczna z podstawową formą klienta.
Korzystnym jest, że aktualizuje się zapis pamięci podręcznej serwera przez strumień danych z pierwszej aplikacji w odpowiedzi na żądanie z drugiej aplikacji. Utrzymuje się wiele zbiorów danych różnicowych, które odpowiadają żądaniu z drugiej aplikacji i które reprezentują różnicę pomiędzy kolejnymi zapisami pamięci podręcznej serwera dla dostarczania archiwalnych danych różnicowych. Utrzymuje się wiele zapisów cyklicznej kontroli nadmiarowej, a każdy z wielu zapisów cyklicznej kontroli nadmiarowej jest związany z jednym z wielu zbiorów danych różnicowych i unikalnie identyfikuje podstawową formę serwera, z której uzyskuje się zbiór danych różnicowych. Podczas wywoływania określa się, czy występuje wiele zbiorów danych różnicowych i zapisów cyklicznej kontroli nadmiarowej CRC odpowiednio do żądania z drugiej aplikacji, określa się, czy jeden z wielu zapisów cyklicznej kontroli nadmiarowej CRC odpowiada podstawowej formie serwera, która jest identyczna z podstawową formą klienta. Podczas przesyłania przesyła się archiwalne dane różnicowe, odpowiadające zapisowi cyklicznej kontroli nadmiarowej, które odpowiadają podstawowej formie klienta, kolejne zbiory archiwalnych danych różnicowych i dane różnicowe obliczane przez porównywanie, do drugiego komputera przez zewnętrzne łącze komunikacyjne. Podczas odtwarzania odtwarza się strumień danych odpowiedzi, odpowiadający transmisji z pierwszej aplikacji ze strumienia danych odbieranego przez zewnętrzne łącze komunikacyjne, przez kolejne łączenie podstawowej formy klienta z danymi różnicowymi odbieranymi przez zewnętrzne łącze komunikacyjne dla wytworzenia strumienia danych odpowiedzi odpowiednio do przechwyconej odpowiedzi i aktualizuje się zapis pamięci podręcznej klienta, odpowiadający żądaniu z drugiej aplikacji, przez odtwarzany strumień danych.
Urządzenie według wynalazku zawiera pierwszy moduł przechwytujący włączony pomiędzy pierwszą aplikację i zewnętrzne łącze komunikacyjne w pierwszym komputerze, do pamiętania strumienia danych z pierwszej aplikacji do drugiej aplikacji w pamięci podręcznej dołączonej do pierwszego modułu przechwytującego w pierwszym komputerze i do wywoływania żądań z drugiej aplikacji dla określania, czy istnieje podstawowy zapis pamięci podręcznej serwera i do przechwytywania strumienia danych odpowiadającego odpowiedzi początkowej przez pierwszą aplikację oraz do porównywania przechwyconej odpowiedzi z podstawową formą serwera dla dostarczania danych różnicowych, a także do przesyłania danych różnicowych do drugiego komputera przez zewnętrzne łącze komunikacyjne. Urządzenie zawiera ponadto drugi moduł przechwytujący włączony pomiędzy drugą aplikację i zewnętrzne łącze komunikacyjne w drugim komputerze, do pamiętania strumienia danych dostarczanego do drugiej aplikacji w odpowiedzi na żądanie z drugiej aplikacji w pamięci podręcznej dołączonej do drugiego modułu przechwytującego w drugim komputerze dla wytwarzania podstawowego zapisu pamięci podręcznej klienta, do oceny żądań z drugiej aplikacji dla określania, czy istnieje podstawowy zapis pamięci podręcznej klienta, i do odbioru danych różnicowych, transmitowanych przez zewnętrzne łącze komunikacyjne, przesyłanych przez pierwszy komputer oraz do odtwarzania strumienia danych odpowiedzi, odbieranej przez zewnętrzne łącze komunikacyjne przez połączenie podstawowej formy klienta z danymi różnicowymi, odbieranymi przez zewnętrzne łącze komunikacyjne, a także do dostarczania odtwarzanego strumienia danych.
Korzystnym jest, że pierwsza aplikacja zawiera serwer WWW i druga aplikacja zawiera przeglądarkę WWW.
Korzystnym jest, że zewnętrzne łącze komunikacyjne zawiera bezprzewodowe łącze komunikacyjne.
Korzystnym jest, że żądanie z przeglądarki WWW zawiera wspólny interfejs bramy.
Korzystnym jest, że żądanie z przeglądarki WWW zawiera żądanie wspólnego interfejsu bramy.
Produkt programu komputerowego· według wynalazku zawiera odczyty walne komputerowo elementy kodu programowego zapamiętywania przez pierwszy komputer strumienia danych z pierwszej aplikacji do drugiej aplikacji w pamięci podręcznej dołączonej do pierw
180 619 szego modułu przechwytującego w pierwszym komputerze i odczyty walne komputerowo elementy kodu programowego wywoływania przez pierwszy komputer żądań z drugiej aplikacji i odczytywalne komputerowo elementy kodu programowego przechwytywania przez pierwszy komputer strumienia danych, odpowiadającego odpowiedzi początkowanej przez pierwszą aplikację i odczytywalne komputerowo elementy kodu programowego porównywania przez komputer przechwyconej odpowiedzi z podstawową formą serwera dla dostarczania danych różnicowych i odczytywalne komputerowo elementy kodu programowego przesyłania przez pierwszy komputer danych różnicowych do drugiego komputera przez zewnętrzne łącze komunikacyjne i odczytywalne komputerowo elementy kodu programowego zapamiętywania przez drugi komputer strumienia danych dostarczanego do drugiej aplikacji w pamięci podręcznej dołączonej do drugiego modułu przechwytującego w drugim komputerze i odczytywalne komputerowo elementy kodu programowego oceny przez drugi komputer żądań z drugiej aplikacji dla określania, czy istnieje podstawowy zapis pamięci podręcznej klienta i odczytywalne komputerowo elementy kodu programowego odbioru przez drugi komputer danych różnicowych transmitowanych przez zewnętrzne łącze komunikacyjne przesyłane przez pierwszy komputer i odczytywalne komputerowo elementy kodu programowego odtwarzania przez drugi komputer strumienia danych odpowiedzi, odpowiadającego komunikacji z pierwszej aplikacji ze specyficznego strumienia danych klienta/serwera, odbieranego przez zewnętrzne łącze komunikacyjne przez połączenie formy bazy klienta z danymi różnicowymi odbieranymi przez zewnętrzne łącze komunikacyjne oraz odczytywalne komputerowo elementy kodu programowego dostarczania przez drugi komputer odtwarzanego strumienia danych, odpowiadającego przechwyconej odpowiedzi, do drugiej aplikacji.
Zaletą wynalazku jest zapewnienie systemu komunikacyjnego, który redukuje ilość danych transmitowanych pomiędzy programami użytkowymi, który może być zastosowany w środowisku przeglądarki/serwera WWW i jest zgodny z istniejącymi protokołami i językami komunikacyjnymi w powolnym lub bezprzewodowym systemie komunikacyjnym, bez wymagania modyfikacji aplikacji przeglądarki WWW lub serwera WWW.
Zaletą wynalazku jest zapewnienie systemu komunikacyjnego, który redukuje ilość transmisji wymaganych pomiędzy przeglądarką WWW i serwerem WWW, skutkiem czego zwiększa wydajność systemu komunikacyjnego.
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 klienta i moduł przechwytujący serwera, fig. 3 - sieć działań operacji wykonywanych przez moduł przechwytujący klienta w przykładzie wykonania zawierającym-koherentny system pamiętania podręcznego, fig. 4 - sieć działań operacji wykonywanych przez moduł przechwytujący klienta w przykładzie wykonania zawierającym koherentny system pamiętania podręcznego, fig. 5 - sieć działań operacji wykonywanych przez moduł przechwytujący serwera w przykładzie wykonania zawierającym koherentny system pamiętania podręcznego, fig. 6 - sieć działań operacji wykonywanych przez moduł przechwytujący serwera w przykładzie wykonania zawierającym koherentny system pamiętania podręcznego, 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 blok zarządzający 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ń
180 619 operacji wykonywanych przez funkcję przechwytującą klienta w przykładzie wykonania wykorzystującym gniazda wirtualne, fig. 15 - sieć działań operacji wykonywanych przez funkcję przechwytującą 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 oraz fig. 17-2 - sieć działań wirtualnej operacji zamykania według przykładu wykonania wykorzystującego gniazda wirtualne.
Figura 1 przedstawia podstawową znaną strukturę komunikacyjną dla systemu internetowego. Na fig. 1 przeglądarka WWW 10 komunikuje się z serwerem WWW 20 poprzez łącze komunikacyjne 15. Łącze komunikacyjne 15 jest typowym 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 danymi HTML, jak opisano powyżej. Serwer 20 może być pośrednikiem, który odbiera transmisje od wielu przeglądarek i kieruje je do serwera.
Figury 3 do 10 i 13 do 17-2 przedstawiają sieci działań ilustrują sposoby według wynalazku. 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 są ładowane do komputera lub innego urządzenia programowalnego działającego jak komputer, tak że instrukcje wykonywane przez komputer lub inne urządzenie programowalne tworzą elementy do realizacji funkcji określonych w bloku lub blokach sieci działań. Instrukcje programu komputerowego mogą być także zapamiętywane w pamięci odczytywalnej przez komputer, która steruje 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ą wykonywany 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 wykonania przez komputer lub inne urządzenie programowalne serii etapów operacyjnych procesu realizowanego przez komputer, a 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 bloki w sieci działań przedstawiają kombinację elementów do wykonania określonych funkcji i kombinację etapów do wykonania, określonych funkcji. 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ą funkcje lub etapy operacyjne.
Figura 2 przedstawia schemat blokowy rozwiązania według wynalazku. Przeglądarka WWW 10 komunikuje się z modułem przechwytującym 30 klienta. Serwer WWW 20 komunikuje się z modułem przechwytującym 40 serwera przez łącze komunikacyjne 35. Przeglądarka WWW 10 i moduł przechwytujący 30 klienta mogą być umieszczone w pierwszym komputerze 5. Moduł przechwytujący 40 serwera 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.
Przeglądarka 10 jest przeglądarką internetową wykorzystującą protokół przesyłania hipertekstu HTTP i język HTML do komunikowania się z serwerem 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 przechwytywany przez moduł przechwytujący 30 klienta. Przechwycenie strumienia danych HTTP przez moduł przechwytujący 30 klienta może być
180 619 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 intemetem wielu przeglądarkom. Gdy serwer 20 otrzymuje informacje dla przesłania do przeglądarki 10, na przykład w odpowiedzi na żądanie przeglądarki określonej strony tytułowej 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 20 jest przechwytywana 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 z drugiego komputera 6 do pierwszego komputera 5. Specyficzny strumień danych klient/serwer jest odbierany przez moduł przechwytujący 30 klienta, a oryginalny strumień danych HTTP, pochodzący z serwera, jest odtwarzany i dostarczany do przeglądarki 10.
W szczególnym przykładzie wykonania wynalazku zewnętrzne łącze komunikacyjne 35 jest łączem radiowym. W takim przypadku, aby uzyskać parametry systemu akceptowalne przez użytkowników, jest pożądane zmniejszenie wielkości transmisji przez zewnętrzne łącze komunikacyjne 35 zarówno w zakresie częstotliwości transmisji, jak i ilości informacji, które muszą być przesłane przez zewnętrzne łącze komunikacyjne 35. Dlatego wynalazek wykorzystuje pamiętanie podręczne, różnicowanie i techniki redukujące protokół dla zminimalizowania transmisji przez zewnętrzne łącze komunikacyjne 35. Te techniki są realizowane przez przetworzenie bezstanowych lub stochastycznych protokołów HTTP 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ęć podręczną. Pamięć podręczna 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ęć podręczna 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ęć podręczna umieszczona w pierwszym lub drugim komputerze 5 i 6 może mieć wymiar oparty na określonej konfiguracji sprzętowej komputerów. Informacje zapamiętywane w pamięci podręcznej zawierają dla każdej transmisji lokalizatora URL unikalny identyfikator oparty na zawartościach transmisji, takich jak cykliczna kontrola nadmiarowa CRC danych transmisji, czas pamiętania danych SDT określający czas, w którym zapis pamięci podręcznej był utworzony lub odświeżony i dane transmisji. Tak więc katalog zapisu pamięci podręcznej może być utworzony dla każdej transmisji zapamiętanej w pamięci podręcznej. Ponadto z powodu ograniczonych zasobów dostępnych w danej konfiguracji sprzętowej, może być stosowana, dla utrzymywania pamięci podręcznych, umieszczonych w pierwszym i drugim komputerze 5 i 6, pewna liczba technik pamiętania podręcznego. Tak więc na przykład pamięć podręczna może unieważniać najstarszy zapis katalogu, jeśli określony przez użytkownika wymiar pamięci podręcznej byłby przekroczony przez dodanie nowego zapisu, a następnie dodanie nowego zapisu w miejsce zapisu unieważnionego. Ponadto zapisy pamięci podręcznej mogą być utrzymywane przez wiele żądań aplikacji przeglądarki lub serwera lub nawet cykli włączenia zasilania pierwszego lub drugiego komputera 5 i 6 dla utworzenia trwałej
180 619 pamięci podręcznej. Działanie struktury podręcznej według wynalazku będzie opisane w odniesieniu do figur 3 do 6.
Figury 3 do 6 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 podręcznej klienta w pierwszym komputerze 5. Jeżeli informacja odpowiadająca lokalizatorowi URL nie była wcześniej zapamiętana w pamięci podręcznej 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 po sprawdzeniu transmisji z przeglądarki, jak pokazano w bloku 105, istnieje zapis podręczny klienta, który odpowiada transmisji z przeglądarki, to w najprostszym wykonaniu ta informacja będzie dostarczana do przeglądarki jako strumień danych HTTP. Jednak, jak przedstawiono ną fig. 3, realizowane jest to, co jest tu określane jako sprawdzenie przedziału czasu koherencji w zapisie podręcznym, odpowiadającym transmisji z przeglądarki. Ta operacja jest przedstawiona w bloku 110 na fig. 3.
Przedział czasu koherencji dla modułu przechwytującego 30 klienta może być zdefiniowany przez użytkownika i jest to okres czasu, w którym może istnieć zapis podręczny, nim stanie się nieaktualny i również gdy istnieje, musi być odświeżany 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 zapisu podręcznego, odpowiadającego transmisji z przeglądarki, a okres koherencji 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 podręcznej, 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ł czasu koherencji, to przyjmowana 'jest gałąź tak z bloku 110 i jak pokazano w bloku 111 oraz zapis podręczny jest dostarczany do przeglądarki jako strumień danych HTTP. W ten sposób zamyka się transmisję pochodzącą z przeglądarki, odbieraną przez moduł przechwytujący 30 klienta w bloku 100 na fig. 3.
Jeżeli sprawdzenie przedziału czasu koherencji, przedstawione w bloku 110 wykazuje, że zapis podręczny umieszczony w pierwszym komputerze 5 jest nieaktualny, przekazywany jest do modułu przechwytującego 40 serwera dla sprawdzenia koherencji zapisu podręcznego umieszczonego w drugim komputerze 6. Ta operacja jest przedstawiona w bloku 112 na fig. 3. Jest to wykonywane przez dostarczenie przez zewnętrzne łącze komunikacyjne 35 do modułu przechwytującego 40 serwera przedziału czasu koherencji dla określonego modułu przechwytującego 30 klienta dla żądania pochodzącego z przeglądarki 10 i unikalnego wskaźnika zawartości pamięci podręcznej klienta, odpowiadającego lokalizatorowi URL dla transmisji pochodzącej z przeglądarki. Korzystnie ten unikalny wskaźnik powstaje w wyniku cyklicznej kontroli nadmiarowej CRC dla zapisu podręcznego.
Figura 5 przedstawia sieć działań modułu przechwytującego 40 serwera w odpowiedzi na informację odebraną przez zewnętrzne łącze komunikacyjne 35 z modułu przechwytującego 30 klienta. Gdy moduł przechwytujący 40 serwera otrzymuje żądanie od modułu przechwytującego 30 klienta, moduł przechwytujący 40 serwera odbiera wcześniej określony przedział czasu koherencji klienta, wartość kontrolna CRC zapisu podręcznego klienta i żądanie HTTP pochodzące z przeglądarki. Odebranie tej informacji jest pokazane w bloku 120 na fig· 5.
Po odebraniu informacji z modułu przechwytującego 30 klienta, moduł przechwytujący 40 serwera sprawdza pamięć podręczną serwera, umieszczoną w drugim komputerze 6 dla stwierdzenia, czy istnieje zapis podręczny serwera, odpowiadający lokalizatorowi URL
180 619 żą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 serwera stwierdza, że istnieje zapis podręczny, odpowiadający informacji żądanej w transmisji pochodzącej z przeglądarki, to przyjmowana jest gałąź tak z bloku 125. Moduł przechwytujący 40 serwera porównuje następnie bieżącą datę i czas SSI modułu przechwytującego 40 serwera z sumą SDT zapisu podręcznego serwera, odpowiadającego informacji żądanej w transmisji pochodzącej z przeglądarki i wcześniej określonemu przedziałowi czasu koherencji klienta, otrzymanemu z modułu przechwytującego 30 klienta. Jeżeli bieżąca data i czas są mniejsze niż suma SDT zapisu podręcznego serwera i przedziału czasu koherencji, to przyjmowana jest gałąź tak z bloku 130 z fig. 5. Moduł przechwytujący 40 serwera porównuje następnie wartość kontrolną CRC zapisu podręcznego serwera z wartością kontrolną CRC zapisu podręcznego klienta dla sprawdzenia, czy zapisy podręczne są identyczne. Jeżeli dwa zapisy podręczne 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 zapisie podręcznym klienta i w zapisie podręcznym serwera nie są identyczne i jak pokazano w bloku 137, moduł przechwytujący 40 serwera przesyła zapis podręczny serwera do pierwszego komputera 5 przez zewnętrzne łącze komunikacyjne 35. Przesyłając zapis podręczny serwera do modułu przechwytującego 30 klienta, moduł przechwytujący 40 serwera przetwarza zapis w specjalny protokół komunikacyjny, który zawiera wartości kontrolne CRC zapisu podręcznego serwera, dane zapisu podręcznego serwera i wiek zapisu podręcznego serwera. Wiek zapisu podręcznego serwera jest obliczany przez odejmowanie od bieżącej daty i czasu SDT zapisu podręcznego.
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żeli nie ma zapisu podręcznego, odpowiadającego lokalizatorowi URL transmisji pochodzącej z przeglądarki, to przyjmowana jest ścieżka nie z bloku 130 lub ścieżka nie z bloku 125. Będzie więc wykonywana operacja z bloku 126 i moduł przechwytujący 40 serwera prześle do serwera transmisję pochodzącą z przeglądarki jako strumień danych HTTP. Jeżeli moduł przechwytujący 40 serwera musi przesłać do serwera transmisję pochodzącą z przeglądarki jako strumień danych HTTP, to moduł przechwytujący 40 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 serwera odbiera strumień danych HTTP z serwera 20. Na potwierdzenie strumienia danych HTTP, moduł przechwytujący 40 serwera oblicza wartości kontrolne CRC dla strumienia danych HTTP i chwilowo pamięta strumień danych HTTP. Następnie, jak pokazano w bloku 145, moduł przechwytujący 40 serwera sprawdza strumień danych HTTP i określa, czy istnieje zapis podręczny serwera, odpowiadający lokalizatorowi URL strumienia danych HTTP. Jeżeli takie wejście istnieje, to wykonana jest ścieżka tak z bloku 145. Moduł przechwytujący 40 serwera porównuje następnie ostatnio obliczoną wartość kontrolną CRC strumienia danych odebranego z serwera 20 z wartością kontrolną CRC zapisu podręcznego 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 serwera aktualizuje zapis SDT dla zapisu podręcznego 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 zapis podręczny serwera jest inny niż strumień danych HTTP odebranych z serwera 20, to wykonana jest ścieżka nie z bloku 150. Moduł przechwytujący 40 serwera pobiera z zapisu podręcznego serwera istniejące dane, jak pokazano w bloku 153, a następnie, jak pokazano w bloku 154, aktualizuje zapis podręczny serwera przez nowe informacje. Jak pokazano w bloku 154, ta aktualizacja obejmuje zapamiętanie w zapisie podręcznym serwera wartości kontrolnej CRC transmisji serwera, pamiętanej jako część zapisu podręcznego bieżącej daty i czasu jako wartości SDT dla zapisu podręcznego oraz zapamiętanie strumienia danych HTTP. W jednym z przypadków, gdy zapis podręczny serwera jest zaktualizowany lub gdy zapis podręczny serwera
180 619 jest identyczny ze strumieniem danych HTTP odebranych z serwera 20, moduł przechwytujący 40 serwera określa, czy zapis podręczny serwera jest identyczny z zapisem podręcznym klienta, odpowiadającym transmisji pochodzącej z przeglądarki. Ta operacja jest pokazana w bloku 155.
Jeżeli moduł przechwytujący 40 serwera określa, że zapis podręczny, odpowiadający odpowiedzi odebranej z serwera 20 nie istnieje, to wykonana jest ścieżka nie z bloku 145. Zapis podręczny serwera jest tworzony, 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 zapisu SDT bieżącej daty i czasu. Po utworzeniu zapisu podręcznego transmisji pochodzącej z przeglądarki, moduł przechwytujący 40 serwera porównuje następnie ponownie wartości kontrolne CRC zapisu podręcznego tego serwera z wartościami kontrolnymi CRC zapisu podręcznego klienta, jak pokazano w bloku 155.
Jeżeli wynik porównania zapisu podręcznego serwera z zapisem podręcznym klienta wskazuje, że zapisy podręczne 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 serwera przesyła odpowiedź koherentną do modułu przechwytującego 30 klienta. Moduł przechwytujący 40 serwera przetwarza żądanie zapisu podręcznego w specjalny strumień danych klient/serwer, wysyłając odpowiedź koherentną i wysyłając wiek zero do modułu przechwytującego klienta.
Jeżeli moduł przechwytujący 40 serwera określa, że zapis podręczny klienta nie jest identyczny z zapisem podręcznym 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 serwera przetwarza zapis podręczny serwera w specjalny strumień danych klient/serwer. Strumień danych zawiera wartości kontrolne CRC zapisu podręcznego serwera, strumień danych HTTP zapisu podręcznego serwera i wiek zapisu podręcznego, 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 serwera będą opisane 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 z modułu przechwytującego 40 serwera, jak pokazano w bloku 165. Jeżeli moduł przechwytujący 40 serwera określa, że zapis podręczny klienta jest koherentny, to jest zapis podręczny klienta i zapis podręczny serwera są identyczne, to wykonane są operacje pokazane w bloku 166. Jak pokazano w bloku 160, moduł przechwytujący 30 klienta aktualizuje czas SDT zapisu podręcznego 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 serwera. Tak wiec bez synchronizacji zegarów pierwszego komputera 5 i drugiego komputera 6 sprawdza się koherencję czasową zapisu podręcznego pierwszego komputera 5, aby uwzględnić nowsze dane z drugiego komputera 6. Po aktualizacji wartości SDT dla zapisu podręcznego klienta, odpowiadającego transmisji pochodzącej z przeglądarki, moduł przechwytujący 30 klienta przesyła zapis podręczny 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 zapis podręczny, odpowiadający transmisji pochodzącej z przeglądarki. Jeżeli zapis podręczny istnieje, to obierana jest ścieżka tak z bloku 170 i jak pokazano w bloku 171, istniejący zapis podręczny jest usuwany. Moduł przechwytujący 30 klienta aktualizuje następnie zapis podręczny klienta, odpowiadający transmisji pochodzącej z przeglądarki, przez zapamiętanie wartości CRC strumienia HTTP odebranego z modułu prze
180 619 chwytającego 40 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 serwera i przez zapamiętanie strumienia danych HTTP. Ta operacja jest pokazana w bloku 172.
Jeżeli nie istnieje zapis podręczny, odpowiadający transmisji pochodzącej z przeglądarki, to obierana jest ścieżka nie z bloku 170. Zapis podręczny klienta jest tworzony przez wykonanie operacji przedstawionych w bloku 173. W bloku 173 moduł przechwytujący 30 klienta tworzy zapis podręczny klienta przez zapamiętanie lokalizatora UTL strumienia danych HTTP odebranych z modułu przechwytującego 40 serwera przez zapamiętanie wartości CRC strumienia danych HTTP odebranych z modułu przechwytującego 40 serwera i przez zapamiętanie strumienia danych HTTP. Moduł przechwytujący 30 klienta aktualizuje wartości SDT lub zapamiętuje wartości SDT przez odjęcie od bieżącej daty i czasu wieku odebranego przez zewnętrzną linię komunikacyjną 35 z modułu przechwytującego 40 serwera.
Chociaż zapis podręczny klienta jest tworzony przez wykonanie operacji przedstawionych w blokach 176, 172 łub 173, moduł przechwytujący 30 klienta przesyła lub dostarcza zapis podręczny klienta do przeglądarki 10 jako strumień danych HTTP. Te operacje są pokazane w bloku 174 z fig. 4.
Zapis podręczny klienta i zapis podręczny serwera mogą być zrealizowane w pamięci lub pamięci masowej, takiej jak twardy dysk, dyski CD-ROM, 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 podręczne są umieszczane w pierwszym lub drugim komputerze 5 i 6, korzystne jest także, gdy pamięć podręczna 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ętowa pamięć podręczna, służąca jako pamięć podręczna klienta, może być umieszczona na zewnątrz pierwszego komputera 5 i połączona z nim szybką transmisją, również gdy pamięć podręczna jest po tej samej stronie, co pierwszy komputer 5.
W odmiennym rozwiązaniu według wynalazku moduł przechwytujący 40 serwera nie utrzymuje kopii strumienia danych HTTP odebranych z serwera 20, ale po prostu utrzymuje element katalogu dla transmisji. Element katalogu zawiera lokalizator 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óre mogą być przyjęte 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 serwera dla transmisji, która odpowiada lokalizatorowi URL, dla którego moduł przechwytującego 40 serwera utrzymuje wartości CRC i STD, następnie moduł przechwytujący 40 serwera sprawdza wartości CRC otrzymane z modułu przechwytującego 30 klienta dla określenia, czy odpowiadają one wartościom 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 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ą sieci działań operacji wykonywanych przez moduł przechwytujący 30 klienta i moduł przechwytujący 40 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 na bloku 205, moduł przechwytujący 30 klienta sprawdza przejęte żądanie HTTP z przeglądarki 10 dla stwierdzenia, czy jest to żądanie dla wspólnego interfejsu przejścia CGI.
Jeżeli nie jest to żądanie dla interfejsu przejścia, to moduł przechwytujący 30 klienta przepuszcza żądanie do modułu przechwytującego 40 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ł
180 619 przechwytujący 30 klient/serwer określa, czy istnieje bazowy zapis podręczny klienta, odpowiadający strumieniowi danych HTTP, który był poprzednio dostarczony do przeglądarki w odpowiedzi na żą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 zapisie podręcznym klienta.
Bazowy zapis podręczny klienta może być inicjalizowany 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. Ten bazowy zapis podręczny może być utrzymywany przez wiele żądań lub sesji przeglądarki 10. Bazowy zapis podręczny klienta może być aktualizowany, jak pokazano na fig. 7, 8, 9 i 10. Jeżeli istnieje bazowy zapis podręczny klienta, odpowiadający lokalizatorowi URL dla transmisji pochodzącej z przeglądarki, to wartość CRC, która ma być wysłana do modułu przechwytującego 40 serwera przez zewnętrzne łącze komunikacyjne 35, jest ustalana jako równa wartość CRC dla bazowego zapisu podręcznego klienta, jak pokazano w bloku 211 z fig. 7. Jeżeli nie istnieje bazowy zapis podręczny klienta, to obierana jest ś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 serwera, jest kasowana. 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 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 bazowy zapis podręczny klienta dla lokalizatora URL żądania interfejsu CGI, albo zostało ustalone jako wartość CRC bazowego zapisu podręcznego klienta, jeżeli zapis istnieje. Tak więc 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 serwera, przez zewnętrzne łącze komunikacyjne 35.
Figura 9 przedstawia działania podjęte przez moduł przechwytujący 40 serwera, gdy odebrane jest żądanie interfejsu CGI. Potwierdzenie żądania interfejsu CGI przez moduł przechwytujący 40 serwera jest pokazane w bloku 220. Gdy moduł przechwytujący 40 serwera odbiera żądanie interfejsu CGI, zapamiętuje on kopię wartości CRC i żądania HTTP. Jak pokazano w bloku 221, moduł przechwytujący 40 serwera przesyła żądanie HTTP do serwera 20.
Gdy moduł przechwytujący 40 serwera odbiera odpowiedź na żądanie HTTP, odpowiadające transmisji pochodzącej z przeglądarki lub żądanie interfejsu CGI, moduł przechwytujący 40 serwera odbiera tę odpowiedź jako strumień danych HTTP, jak pokazano w bloku 230 z fig. 10. Moduł przechwytujący 40 serwera zapamiętuje strumień danych HTTP i oblicza wartość CRC dla strumienia danych HTTP odebranych z serwera 20. Moduł przechwytujący 40 serwera zeruje także wartości różnicowe dla inicjalizacji różnicy danych. Moduł przechwytujący 40 serwera określa następnie, czy odpowiedź otrzymana jako transmisja pochodząca 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 przechwytującego klienta. Jak pokazano w bloku 236, ta operacja może polegać na tworzeniu pamięci podręcznej, co pokazano na fig. 3 do 6. Jeżeli odpowiedź odebrana w bloku 230 jest odpowiedzią na żądanie interfejsu CGI, to odbierana jest ścieżka tak z bloku 235 i moduł przechwytujący 40 serwera określa następnie, czy istnieje bazowy zapis podręczny serwera dla odpowiedzi interfejsu CGI, jak pokazano w bloku 240.
Bazowy zapis podręczny serwera może być utworzony, gdy moduł przechwytujący 40 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 serwera będzie następnie tworzył bazowy zapis podręczny serwera, odpowiadający żą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 kohe16
180 619 rentnym systemem tworzenia pamięci podręcznej, opisanej na fig. 3 do 6, bazowy zapis podręczny serwera może także zawierać zapisy SDT. Termin forma bazowa interfejsu CGI serwera odnosi się tutaj do bazowego zapisu podręcznego serwera, odpowiadającego żądaniu interfejsu CGI otrzymanemu z przeglądarki 10.
Jeżeli istnieje bazowy zapis podręczny serwera, odpowiadający żądaniu interfejsu CGI, to obierana jest ścieżka tak z bloku 240. Moduł przechwytujący 40 serwera porównuje wartość CRC bazowego zapisu podręcznego 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 serwera określa, czy wartość CRC bazowego zapisu podręcznego serwera odpowiada wartości CRC bazowego zapisu podręcznego klienta. Jeżeli te dwie wartości są takie same, to bazowy zapis podręczny klienta, bazowy zapis podręczny serwera i odpowiedź otrzymana z serwera 20, wszystkie zawierają ten sam strumień danych HTTP. Porównanie bazowego zapisu podręcznego serwera i bazowego zapisu podręcznego klienta jest przedstawione w bloku 250.
Jeżeli oba bazowe zapisy podręczne są takie same, to moduł przechwytujący serwera nie. potrzebuje przesyłać bazowego zapisu podręcznego 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 serwera przetwarza następnie strumień danych HTTP odebrany z serwera 20 na specjalny protokół komunikacyjny klient/serwer przez przesłanie wartości CRC strumienia danych HTTP, zapamiętanego w bazowym zapisie podręcznym serwera, odpowiadającego żądaniu interfejsu CGI, wyzerowany strumień danych HTTP i wyzerowaną różnicą danych dla wskazania, że odpowiedź na żądanie interfejsu CGI była identyczna z bazowym zapisem podręcznym klienta, jak pokazano w bloku 252.
Wracając do bloku 245, jeżeli wartość CRC dla bazowego zapisu podręcznego 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 serwera wykonuje następnie operacje przedstawione w bloku 246. Moduł przechwytujący 40 serwera porównuje przechwyconą odpowiedź interfejsu CGI do bazowego zapisu podręcznego serwera, odpowiadającą przejętemu żądaniu interfejsu CGI lub bazowej formy interfejsu CGI serwera. To porównanie przejętej odpowiedzi interfejsu CGI z bazową formą interfejsu 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 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 bazowy zapis podręczny serwera, odpowiadający żądaniu interfejsu CGI, powinien być aktualizowany, mogą dotyczyć koherentności czasu, tak jak przedstawiono na fig. 3 do 6, lub innych sposobów pozwalających określić, czy różnica danych wzrosła w takim stopniu, że przebazowanie dla utworzenia nowego bazowego zapisu podręcznego 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 serwera wykonuje następnie operacje przedstawione w bloku 250 dla określenia, czy wartość CRC bazowego zapisu podręcznego klienta jest taka sama, jak wartość CRC bazowego zapisu podręcznego serwera lub forma bazowa interfejsu CGI serwera jest identyczna z formą bazową interfejsu CGI klienta, które są zapisami podręcznymi serwera i klienta, odpowiadającymi określonemu żądaniu interfejsu CGI z transmisji pochodzącej z przeglądarki. Jeżeli formy bazowe są takie same, to klient nie musi być przebazowany i strumień informacji HTTP jest zerowany, jak przedstawiono w bloku 251. Moduł przechwytujący 40 serwera następnie wysyła różnicę odpowiedzi do modułu przechwytującego 30
180 619 klienta przez wysłanie wartości CRC bazowego zapisu podręcznego 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 serwera określa, że wartości CRC nie są takie same dla formy bazowej interfejsu CGI klienta i formy bazowej interfejsu CGI serwera, to klient powinien się przebazować. Operacja przebazo wania klienta zawiera wysłanie formy bazowej interfejsu CGI serwera do modułu przechwytującego 30 klienta. Dla wykonania tej operacji, moduł przechwytujący 40 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 serwera przekształca strumień danych HTTP odebranych z serwera w specjalny protokół klient/serwer 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 to 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 serwera aktualizuje bazowy zapis podręczny serwera, odpowiadający 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 serwera porównuje następnie wartość CRC nowego zapisu podręcznego 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 serwera są pokazane na fig. 8. Potwierdzenie odpowiedzi modułu przechwytującego 40 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 pamięci podręcznej pokazanej 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ą przedstawione w bloku 266 na fig. 8.
Moduł przechwytujący 30 klienta określa, czy istnieje bazowy zapis podręczny klienta, odpowiadający przejętemu żądaniu interfejsu CGI, który zawiera formę bazową interfejsu 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ę, aktualizując formę bazową interfejsu CGI przez zamianę bazowego zapisu podręcznego klienta, odpowiadającego lokalizatorowi 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 serwera. Bazowy zapis podręczny klienta jest także aktualizowany 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 przechwytującego serwera jest taka sama, jak forma bazowa interfejsu CGI klienta modułu przechwytującego 30 klienta i odbierana jest ścieżka tak z bloku 275.
180 619
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 odpowiadającym lokalizatorowi 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 bazowy zapis podręczny klienta, odpowiadający 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 serwera i aktualnych danych strumienia danych HTTP. Zapamiętując te informacje tworzy on bazowy zapis podręczny klienta, odpowiadający przejętemu żądaniu interfejsu CGI, a wiec 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 poprzez dodawanie lub łączenie formy bazowej interfejsu CGI klienta z różnicą danych interfejsu CGI, które mogły zostać wyzerowane.
Przedstawiona technika różnicowania może być także zastosowana do danych nie będących danymi interfejsu CGI. W takim przypadku moduł przechwytujący 40 serwera może potrzebować utworzyć wiele bazowych zapisów podręcznych 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 serwera może następnie porównać wartości CRC otrzymane z modułu przechwytującego 30 klienta z wartościami CRC każdej wcześniej utworzonej formy bazowej serwera, aż do uzyskania zgodności. Moduł przechwytujący 40 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 pamięci podręcznych 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 serwera oblicza różnicę pomiędzy formą bazową serwera, odpowiadającą żądaniu i strumieniowi danych HTTI odpowiedzi z serwera. Te dane różnicowe są następnie zapamiętywane w module przechwytującym 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 przechwytującego klienta w oparciu o wartości CRC formy bazowej klienta, odpowiadającej żądaniu nie pochodzącemu z interfejsu CGI.
Jako przykład sposobu różnicowania danych nie będących; danymi interfejsu CGI, gdy moduł przechwytujący serwera odbiera żądanie danych nie będących danymi interfejsu CGI, temu żądaniu powinna towarzyszyć wartość CRC formy bazowej umieszczonej w module przechwytującym klienta, odpowiadającym lokalizatorowi URL żądania danych nie będących danymi interfejsu CGI. Gdy moduł przechwytujący serwera odebrał odpowiedź od serwera, może obliczyć wartość CRC odpowiedzi. Moduł przechwytujący 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 serwera aktualizuje formę bazową serwera z danymi odpowiedzi i archiwizuje wartość CRC poprzedniej formie bazowej i różnicę danych pomiędzy odpowiedzią i starą formą bazową. Moduł przechwytujący serwera porównuje następnie wartość CRC formy bazowej klienta z wartością CRC formy bazowej serwera i dowolną
180 619 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 klienta.
Jeżeli istnieje zgodność, to dane różnicowe odpowiadające zgodnym wartościom CRC i kolejne dane różnicowe, włączając w to bieżące dane różnicowe, są przesyłane do modułu przechwytującego klienta. Moduł przechwytujący klienta doprowadza 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 zbiory danych różnicowych powinny być wysłane do modułu przechwytującego klienta, a tworzenie odpowiedzi powinno być wykonane przez doprowadzenie trzech kolejnych zbiorów danych różnicowych do formy bazowej klienta. Jeżeli jednak liczba zbiorów danych różnicowych lub wymiary zbiorów danych różnicowych, wymaganych do odtworzenia 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 serwera. W każdym przypadku po odtworzeniu lub odebraniu odpowiedzi, moduł przechwytujący klienta powinien aktualizować formę bazową klienta dla żądania lokalizatora URL z danymi odpowiedzi i aktualizować wartość CRC z wartością CRC dla odpowiedzi. Ponieważ forma bazowa klienta jest aktualizowana za każdym razem, gdy jest odbierana odpowiedź dla określonego lokalizatora URL, pamięć podręczna klienta opisana powyżej może być stosowana jako pamięć podręczna dla formy bazowej klienta, eliminując przez to potrzebę zastosowania oddzielnej pamięci podręcznej 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 protokołu komunikacyjnego, takiego jak protokół 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 odmiennym 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 klienta albo przez moduł przechwytujący 40 serwera, zależnie od tego, czy operacja jest wykonywana w pierwszym komputerze 5 czy w drugim komputerze 6.
W rozwiązaniu według wynalazku przeglądarka 10 może komunikować się z modułem przechwytującym 30 klienta, wykorzystując protokół sterowania transmisją w sieci TCP/IP.
180 619
Protokół TCP może także być używany do komunikacji pomiędzy modułem przechwytującym 30 klienta a modułem przechwytującym 40 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 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 komunikacyjnego 35, tworzy się gniazda wirtualne, które są używane w połączeniu pomiędzy przeglądarką a modułem przechwytującym 30 klienta i pomiędzy modułem przechwytującym 40 serwera a serwerem 20. Działanie tego gniazda wirtualnego będzie opisane w odniesieniu do fig. 11 do 17.
Figura 11 przedstawia schemat blokowy jednego z możliwych wykonań wynalazku, wykorzystujący 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 gniazd rzeczywistych, które łączą przeglądarkę 10 z modułem przechwytującym 30 klienta. Jak pokazano na fig. 11, pierwsze gniazdo rzeczywiste 65a jest na przeglądarce 10, a gniazdo 65b jest na module przechwytującym 30 klienta. To pierwsze gniazdo rzeczywiste jest gniazdem połączenia TCP realizującego protokół TCP, przez które żądania przeglądarki 10 są dalej doprowadzone do modułu przechwytującego 30 klienta.
Gdy przeglądarka 10 żąda nowego połączenia TCP, komunikacja zachodzi przez gniazdo rzeczywiste 65a, które jest odbierane przez gniazdo rzeczywiste 65b. Moduł przechwytujący 30 klienta tworzy następnie kolejne gniazdo rzeczywiste dla komunikacji z przeglądarką 10. Jak pokazano na fig. 11, tworzonych jest wiele gniazd rzeczywistych na przeglądarce 10, które odpowiadają gniazdom rzeczywistym tworzonym na module przechwytującym 30 klienta. Gniazda rzeczywiste 60a do 64a są na przeglądarce i gniazda rzeczywiste 60b do 64b są na module przechwytującym 30 klienta. Te gniazda rzeczywiste są elementami, przez które przeglądarka komunikuje się z modułem przechwytującym 30 klienta. Po utworzeniu gniazd rzeczywistych 60a do 64a i 60b do 64b, transmisje przez te gniazda są multipleksowane na gniazdo rzeczywiste 36a, które zapewnia dostęp modułu i przechwytującego 30 klienta do zewnętrznego łącza komunikacyjnego 35 Gniazda rzeczywiste 36a i 36b są tworzone, gdy żądanie jest przesyłane przez gniazdo rzeczywiste 37a pierwszego komputera 5 do gniazda rzeczywistego 37b drugiego komputera 6. Po potwierdzeniu żądanego połączenia przez gniazdo rzeczywiste 37b, tworzone są gniazda rzeczywiste 36a i 36b. Gniazda 37a i 37b działają jak pierwsze gniazda rzeczywiste dla komunikacji między modułem przechwytującym klienta i modułem przechwytującym 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 gniazd rzeczywistych 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 gnieździe rzeczywistym 36b. Moduł przechwytujący 40 serwera demultipłeksuje następnie transmisje odebrane na gnieździe 36b i dostarcza je na 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 odbierane na gnieździe 36b, demultipleksowane przez moduł przechwytujący 40 serwera i przesyłane z gniazda 60c do gniazda 60d na serwerze 20. Podobnie transmisje pojawiające się na gnieździe 61 a są odbierane przez gniazdo 6 lb, multipleksowane przez moduł przechwytujący 30 klienta i przesyłane z gniazda 36a do gniazda 36b, gdzie moduł przechwytujący 40 serwera demultipleksuje transmisję i przesyła ją z gniazda 61c do gniazda 61d. Transmisje przez gniazda 60a i 60b, 61a i 61b, 62a i 62b, 63a i 63b oraz 64a i 64b są przesyłane przez gniazda pomiędzy modułem przechwytującym 40 serwera a serwerem 20 przez gniazda 60c i 60d, 61c i 61d, 62c i 62d, 63c i 63d oraz 64c i 64d.
W podobny sposób, odpowiedzi na żądania 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 serwera i przez zewnętrzne łącze komunikacyjne 35 do modułu przechwytującego 30 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ł przechwy
180 619 tujący 40 serwera do gniazda 36b, skąd jest przesyłana przez zewnętrzne łącze komunikacyjne 35 do gniazda 36a. Moduł przechwytujący 30 klienta następnie 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 klienta i w module przechwytującym 40 serwera. Zewnętrzne względem tych modułów gniazda rzeczywiste pomiędzy modułem przechwytującym 30 klienta i przeglądarką 10 oraz modułem przechwytującym 40 serwera i serwerem 20 działają 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 fig. 13 do 17. Figura 13 przedstawia sieć działań dla bloku zarządzającego gniazdami, oznaczonego jako blok 68 na fig. 12. Na fig. 13 blok 300 przedstawia tworzenie rzeczywistego bloku zarządzającego 68 gniazdami modułu przechwytującego 30 klienta. Po utworzeniu rzeczywistego bloku zarządzającego 68 gniazdami, tworzy on pierwsze gniazdo rzeczywiste 65b na fig. 12. Tworzenie pierwszego gniazda rzeczywistego jest pokazane jako blok 300 na fig. 13. Po utworzeniu pierwszego gniazda rzeczywistego 65b, blok zarządzający 68 gniazdami, umieszczony w module przechwytującym 30 klienta, nazywany także blokiem zarządzającym gniazdami klienta, czeka na zdarzenie na pierwszym gnieździe rzeczywistym 65b, jak pokazano w bloku 102 na fig. 13. Gdy zdarzenie jest odebrane na pierwszym gnieździe rzeczywistym 65b, rzeczywisty blok zarządzający 68 gniazdami 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 gniazdo rzeczywiste jest utworzone w odpowiedzi na żądanie komunikacyjne odebrane na pierwszym gnieździe rzeczywistym 65b, to jak pokazano na ścieżce z bloku 305 do bloku 306 z fig. 13, rzeczywisty blok zarządzający 68 gniazdami dodaje gniazdo rzeczywiste do rzeczywistej listy zdarzeń i tworzy następnie simpleksowe gniazdo wirtualne, jak pokazano w bloku 307. W przypadku modułu przechwytującego klienta, rzeczywisty blok zarządzający gniazdami inicjuje funkcję aplikacyjną która realizuje funkcję modułu przechwytującego klienta dla utworzonego gniazda rzeczywistego, 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 wiec gniazdo multipleksowe realizuje funkcje muitipleksowania lub demultipleksowania, a gniazdo simpleksowe wykonuje połączenie jeden na jeden. Tak wiec na przykład wykonując funkcję z bloków 306 do 308 z fig. 13, blok zarządzający 68 gniazdami powinien, w odpowiedzi na pierwsze żądanie odebrane przez pierwsze gniazdo rzeczywiste 65b, utworzyć gniazdo rzeczywiste 60b, wirtualne gniazdo simpleksowe 70 i zainicjować funkcję przechwytującą klienta w aplikacji 80. Podobnie dla kolejnych zdarzeń, gdzie jest tworzone gniazdo rzeczywiste, rzeczywisty blok zarządzający 68 gniazdami powinien utworzyć gniazda rzeczywiste 61b, 62b, 63b lub 64b i wirtualne gniazda simpleksowe 71, 72, 73 lub 74 oraz zainicjować funkcję CSI odpowiadającą utworzonym rzeczywistym i wirtualnym gniazdom 81, 82, 83 lub 84 na fig. 12.
Działanie funkcji przechwytującej klienta będzie opisane w odniesieniu do gniazda rzeczywistego 60b, wirtualnego gniazda simpleksowego 70 i funkcji przechwytującej 80 klienta, przedstawionych na fig. 12. Blok 325 z fig. 14 przedstawia tworzenie funkcji przechwytującej 80 klienta. Po utworzeniu funkcja przechwytująca 80 klienta oczekuje na zdarzenie na wirtualnym gnieździe simpleksowym 70, jak to pokazano w bloku 326. Ta operacja oczekiwania jest wykonywana przez realizację wirtualnej funkcji wybierania, opisanej na fig. 16-4. Po potwierdzeniu zdarzenią jest ono badane, jak pokazano w bloku 330. Jeżeli zdarzeniem jest zamknięcie gniazda wirtualnego, to funkcja przechwytująca 80 klienta usuwa gniazdo
180 619 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 przechwytująca 80 klienta 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 przechwytująca klienta wykonuje następnie opisane powyżej działania modułu przechwytującego klienta (patrz na przykład fig. 3 i 7), które są pokazane w bloku 332. Funkcja przechwytująca 80 klienta tworzy następnie wirtualne gniazdo multipleksowe 90, dołączone do gniazda rzeczywistego 36a w module przechwytującym 30 klienta. Gniazdo rzeczywiste 36a jest dołączone do gniazda rzeczywistego 36b w module przechwytującym 40 serwera. Tworzenie wirtualnego gniazda multipleksowego jest przedstawione w bloku 333 z fig. 14 i wykonane przez realizację utworzonej wirtualnie operacji opisanej tutaj w odniesieniu do fig. 16-1. Blok 334 przedstawia wysyłanie informacji otrzymanej z przeglądarki przez gniazdo rzeczywiste 60b i wirtualne gniazdo simpleksowe 70 po utworzeniu funkcji przechwytującej 80 klienta 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 80 klienta, 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 gniazda rzeczywistego 36a. Operacja oczekiwania może być wykonana przez realizację wirtualnej funkcji wybierania opisanej na fig. 16-4. W tym punkcie moduł przechwytujący klienta przejmuje transmisję pochodzącą z przeglądarki i przesyła transmisję do modułu przechwytującego serwera przez zewnętrzne łącze komunikacyjne 35.
Figura 13 przedstawia sieć działań bloku zarządzającego gniazdami albo w module przechwytującym 40 serwera albo w module przechwytującym 30 klienta. Rzeczywisty blok zarządzający gniazdami w module przechwytującym serwera lub zarządzający gniazdami serwera, pokazany jako blok 69 a fig. 12, wykonuje te same funkcje, co blok zarządzający gniazdami klienta, pokazany jako blok 68. Tworząc pierwsze gniazdo rzeczywiste, jak pokazano w bloku 301 w module przechwytującym 30 klienta, tworzy dobrze znany port 37b do odbierania żądań dla gniazd z modułu przechwytującego 30 klienta, związanych z modułem przechwytującym 40 serwera. Gdy zachodzi zdarzenie rzeczywiste na gnieździe 36b, w module przechwytującym 40 serwera jest ono badane w bloku 305. W tym przypadku zdarzeniem jest potwierdzenie danych z gniazda rzeczywistego 36a, więc przyjmowana jest ścieżka z bloku 305 do bloku 320 na fig. 13. Dane odebrane na gnieździe rzeczywistym 36b są badane i w przypadku, gdy dane są transmisją pochodzącą z przeglądarki, przesyłaną przez moduł przechwytujący 30 klienta, musi być utworzone nowe gniazdo wirtualne w module przechwytującym 40 serwera. Przyjmowana jest więc ścieżka z bloku 320 do bloku 321 z fig. 13. Blok zarządzający 69 gniazdami serwera wykonuje następnie operacje pokazane w bloku 321, w bloku 322, w bloku 323 i w bloku 324 z fig. 13. Blok zarządzający 69 gniazdami serwera 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 serwera, jak pokazano w bloku 323 z fig. 13 i bloku 85 z fig. 12. Dane odebrane na gnieździe rzeczywistym 36b są następnie kolejkowane do wirtualnego gniazda multipleksowego 95 i sygnalizowane jest zdarzenie wirtualne.
Tworzenie funkcji przechwytującej serwera, jak pokazano w bloku 323, jest pokazane jako blok 360 na fig. 15.
Po utworzeniu funkcji przechwytującej 85 serwera, funkcja otrzymuje dane z wirtualnego gniazda multipleksowego 95, które były wysłane z modułu przechwytującego 30 klienta i odpowiadają transmisji pochodzącej z przeglądarki. Ta operacja jest pokazana jako blok 361 z fig. 115. Po odebraniu danych z modułu przechwytującego 30 klienta, funkcja przechwytująca 85 serwera, przetwarza dane, jak opisano powyżej dla modułu przechwytującego 40
180 619 serwera. Wykonanie działań serwera jest pokazane w bloku 362 (patrz na przykład fig. 5 i 9). Po przetworzeniu informacji funkcja przechwytująca serwera tworzy wirtualne gniazdo simpleksowe 75, wykonując tworzenie wirtualne, co jest przedstawione w odniesieniu do fig. 16-1. Ta operacja jest pokazana jako blok 363 z fig. 15. Funkcja przechwytująca 85 serwera wysyła następnie transmisję 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 85 serwera wykonuje następnie wirtualne skasowanie usuniętych danych kolejkowanych w wirtualnym gnieździe simpleksowym 75 do gniazda rzeczywistego 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 85 serwera tworzy wirtualne gniazdo simpleksowe 75, tworzone jest także gniazdo rzeczywiste 60c. Przez wysłanie transmisji pochodzącej z przeglądarki do wirtualnego gniazda simpleksowego 75, funkcja przechwytująca 85 serwera przesyła transmisję pochodzącą z przeglądarki do serwera.
Gdy moduł przechwytujący 40 serwera odbiera odpowiedź z serwera na gnieździe rzeczywistym 60c, zachodzi zdarzenie rzeczywiste i zarządzający gniazdami 69 serwera opuszcza blok 302 z fig. 13 i bada zdarzenie, które zachodzi na gnieździe rzeczywistym 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 gnieździe rzeczywistym 60c są kolejkowane do gniazda wirtualnego 75 i zdarzenie wirtualne jest sygnalizowane. Gdy jest sygnalizowane zaarzenie wirtualne, funkcja przechwytująca 85 serwera 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 85 serwera 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 85 serwera wykonuje następnie wirtualne zamknięcie 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 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 usuwane. Funkcja przechwytująca 85 serwera wykorzystuje 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 klienta, jak pokazano w bloku 376. Funkcja przechwytująca 85 serwera wykonuje następnie wirtualną operację usuwania, dla usunięcia danych kolejkowanych w wirtualnym gnieździe 95. Te operacje są pokazane w bloku 371. Funkcja przechwytująca 85 serwera 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 85 serwera usuwa wirtualne gniazdo i kończy zadanie, jak pokazano w blokach 379 i 380.
Funkcja przechwytująca 85 serwera wykonuje wirtualne operacje wysłania i usunięcia do wirtualnego gniazda multipleksowego 95. Te zdarzenia wyzwalające dzieją się na gnieździe rzeczywistym 36a, a blok zarządzający 68 gniazdami klienta opuszcza blok 302 i bada zdarzenie, jak pokazano w bloku 305, ponieważ dane są odbierane na gnieździe rzeczywistym 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 gniazdo rzeczywiste 36a odbiera odpowiedź serwera z gniazda rzeczywistego 36b poprzez zewnętrzne łącze komunikacyjne 35, ta informacja jest demultipleksowana i podawana na odpowiednie gniazdo wirtualne. Potwierdzenie danych, podkoduje powstanie zdarzenia wirtualnego, jak pokazano w bloku 324 z fig. 13, a blok 336 z fig. 14 powinien zostać opuszczony, a funkcja przechwytująca 80 klienta powinna zbadać zdarzenie, jak pokazano w bloku 340 z fig, 14.
180 619
Jeżeli zdarzeniem jest odpowiedź gniazdo zamknięte, to obierana jest ścieżka z bloku 340 do bloku 345 z fig. 14 i funkcja przechwytująca 80 klienta 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 z fig. 14 i funkcja przechwytująca 80 klienta wykonuje wirtualną operację odebrania odpowiedzi z wirtualnego gniazda multipleksowego 90. Ta operacja odbioru jest przedstawiona w bloku 341 z fig. 14. Po odebraniu danych z wirtualnego gniazda multipleksowego 90, funkcja przechwytująca 80 klienta wykonuje wirtualną operację zamknięcia wirtualnego gniazda multipleksowego 90, jak pokazano w bloku 342. Funkcja przechwytująca 80 klienta przetwarza następnie odpowiedź, co opisano powyżej dla modułu przechwytującego 30 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 80 klienta kasuje wirtualne gniazdo multipleksowe, jak pokazano w bloku 344 i następnie wykonuje wirtualną operacje przesyłania, dla przesył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 80 klienta wykonuje wirtualną operację usuwania dla usunięcia danych kolejkowanych w wirtualnym gnieździe simpleksowym, jak pokazano w bloku 347, do gniazda rzeczywistego 60b, a następnie wykonuje wirtualną operację zamykania, dla zamknięcia wirtualnego gniazda simpleksowego, jak pokazano w bloku 348. Po zamknięciu wirtualnego gniaźda simpleksowego dla funkcji przechwytującej 80 klienta, wirtualne gniazdo simpleksowe jest kasowane, a funkcja przechwytująca klienta kończy działanie, jak pokazano w blokach 349 i 350 z fig. 14.
Chociaż wynalazek został opisany w odniesieniu do jednego szczególnego przypadku tworzenia gniazd wirtualnych simpleksowego i multipleksowego oraz funkcji przechwytujących klienta i serwera, to wiele takich funkcji może być tworzonych w jednym module przechwytującym klienta i serwera. Moduł przechwytujący klienta i moduł przechwytujący serwera utworzą połączenie TCP/IP pomiędzy modułem przechwytującym 30 klienta i modułem przechwytującym 40 serwera, a następnie multipleksująna złączu wiele transmisji pochodzących z przeglądarki lub serwera, podczas utrzymywania połączenia TCP/IP.
Działanie bloku zarządzającego gniazdami klienta i zarządzającego gniazdami serwera jest zrozumiałe na podstawie 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 klienta i moduł przechwytujący serwera, które 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 z fig. 15, operacje inicjujące wykonywane są w bloku 400 z fig. 16-1. Blok zarządzający gniazdami określa następnie, czy wymagane jest gniazdo rzeczywiste, jak pokazano w bloku 405. Jeżeli gniazdo rzeczywiste już istnieje, tak jak gdy jest tworzone, tworzy wirtualne gniazdo multipleksowe, które ma być dołączone do istniejących gniazd rzeczywistych, 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 gniazdo rzeczywiste jest wymagane, to przyjęta jest ścieżka tak z bloku 405. Jak pokazano w bloku 406, tworzone jest gniazdo rzeczywiste. Gniazdo rzeczywiste jest następnie dodawane do listy zdarzeń, jak pokazano w bloku 408, dla monitorowania, jak pokazano w bloku 302 z fig. 13. Po utworzeniu gniazda rzeczywistego 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ą
180 619 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 wybranjzn 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 kończy się, 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. Przy wezwaniu, wirtualna operację, 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 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 gniazda rzeczywistego 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 bufora rzeczywistego gniazda są przesłane do gniazda rzeczywistego, jak pokazano w bloku 466. Jeżeli bufor rzeczywisty 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 410 i dane bufora rzeczywistego 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 przesłane do gniazda rzeczywistego. Po przesłaniu wszystkich danych, dane z kolejki gniazda wirtualnego, odpowiadające funkcji, która wywołał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 480 z fig. 17-2. Przy wywołaniu, wirtualna operacja zaniknię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 zamknięcie wirtualne ma dotyczyć wirtualnego gniazda multipleksowego, czy nie, wirtualna operacja zamknięcia wywołuje 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 zamknięcie 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, i jeśli to jest ostatnie wirtualne gniazdo multipleksowe, ustawia zegar aktywności
180 619 multipleksowej, jak pokazano w bloku 496, a 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.
Figura 13 będzie teraz opisana w 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 blok zarządzający gniazdami bada zdarzenie, opierając się 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, przez blok zarządzający gniazdami są wykonywane operacje z bloków 312 i 313, polegające na zamknięciu multipleksowego gniazda rzeczywistego i skasowaniu multipleksowego gniazda rzeczywistego, odpowiadającego gniazdu łączącemu moduł przechwytujący klienta z modułem przechwytującym serwera. Blok 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 zamknięcie gniazda rzeczywistego, tak jak serwer wykonujący operacje zamykania na połączeniach gniazdowych pomiędzy serwerem a modułem przechwytującym serwera, to obierana jest ścieżka z bloku 305 do bloku 309 na fig. 13. Blok 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 odłącza gniazda od rzeczywistego gniazda lub gniazd, jak pokazano w bloku 310. Blok 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, blok 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 gniazdo rzeczywiste simpleksowe jest zamykane, 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 gniazdo rzeczywiste simpleksowe ma być zamknięte, to przyjęta jest ścieżka nie z bloku 315 i blok zarządzający gniazdami oczekuje na następne zdarzenie rzeczywiste. Tak więc gniazdo rzeczywiste multipleksowe lub gniazdo dołączone do modułu przechwytującego klienta i dc modułu przechwytującego serwera może być zamknięte tylko przez czas oczekiwania zegara aktywności gniazda multipleksowego, co pozwala na utrzymanie połączenia pomiędzy modułem przechwytującym klienta i modułem przechwytującym 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, transmisja może być wykonana bez ponownego wykonywania połączenia pomiędzy modułem przechwytującym klienta i modułem przechwytującym 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 dodawany do kolejki wirtualnej w bloku 486 z fig. 17-2, wykonywana jest wirtualna operacja zamknięcia i przyjmowana jest ścieżka z bloku 320 do bloku 310. Blok 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,
180 619 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 blok 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 619
FIG .1
STAN TECHNIKI
FIG.2 io
Przeglądarko WWW
Serwer WWW
180 619
FIG.3
100
180 619
160
180 619
120
180 619
140
Odbierz odpowiedź z serwera i zapamiętaj strumień danych HTTP i oblicz CRC HTTP
151
150
Tak
Wymaż dane HTTP z wejścia pośredniczącego serwera
Nie %
145
Tak wiedzi istnieje wejście podręczne serwera ela odpoCRC odpowiedzi = CRC wejścia podręcznego
146
Uaktualnij zapamiętane czas i datę = bieżący czas i data
Utwórz wejście podręczne serwera zapamiętując CRC odebranych danych HTTP, dane HTTP i zapamiętany czas i data = bieżący czas i data
Wymaz zapamiętane odpowiedzi z serwera
Uaktualnij wejście podręczne serwera z CRC odpowiedzi serwera, danymi HTTP odpowiedzi serwera i zapamiętaj czas i datę = bieżący czas i data
Tak
156
Czy
RC eleme tu pośredniczącego^ Νι·θ SSI-CRC elementu pośredniczące;
‘ oCSI
Wyślij „koherentna odpowiedźj wiek =0
Wyślij „strumieńodpowiedzi zawierający dane HTTP otrzymane z serwera,CRC danych HTTP; data i wiek = 0
180 619
200
Odbierz żądanie HTTP z przeglądarki
206
Wyślij żądanie
HTTP do SSI
Nie
212
Ustaw CRC dla wysiania do SSI do CRC bazowego wejścia pośredniczącego klienta dla żądania CGI
Ustaw CRC dla wysiania do SSI jako zero
213
Wyślij żądanie CGI do SSI zawierające żądanie HTTP i CRC bazowego wejścia pośredniczącego klienta
180 619
260
180 619
FIG. 9
220
Odbierz żądanie CGI z CSI zawierające CRC bazowego wejścia pośredniczącego klienta i dane HTTP zadania | 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 619
245
241 >/lRC odp. = \ /CRC bazowego wej*^ ścia pośredniczącego^ serwera / \ ? /
Nie
246
Oblicz różnice pomiędzy bazowym wejściem pośredniczącym serwera dla żądania CGI i odp. serwera WWW
Utwórz bazowe wejście pośredniczące serwera przez zapamiętanieURL żądania CGI; danych HTTP odpowiedzi z serwem i CRC danych HTTP
248
Tok
247
Nie wera ?
jest wymagań rze bazowanie serUaktualnij bazowe wejśeie pośredniczące serwera z danymi HTTP odpowiedzi, CRC danych HTTP i wartością zerową danych różnicowych CGI
251
250 ak
RC SSI =
CRC
CSI '
253
FIG.10B
Wyzeruj dane HTTP
Zestaw danych HTTP do odebranych danych HTTP
252
Wyślij odpowiedź do CSI CRC bazowego wejścia pośredniczącego SSI.danych HTTPi danych różnicowych CGI
180 619
G.11
180 619
FIG.12
180 619
180 619
Fig. 13B
180 619
180 619
180 619
FIG. 16-1
FIG. 16-2
406 /
Utwórz gniazdo rzeczywiste
427 i r
Dodaj dane do kolejki gniazda wirtualnego
408
Dodaj gniazdo rzeczywiste do listy zdarzeń
428
409
DoTacz gniazdo wirtualne do rzeczywistego _JL_
Powrót
180 619
FIG.16-4
FIG.16-3
430
445
-Wybieraj k·.,.. ______
180 619
NIE
450
TAK
V sa dane w kolejce
460
461 (jest gniazdo multipleksów
NIEI .
TAK Przesui<l nagłówek >Ω.». gniazda do rzeczywistego bufora
462
NIE
Przesuń dane gniazda wirtualnego do rzeczy- << wistego bufora
TAK
TAK
466
Wyślij dane rzeczy- NIE wistego bufora <---rzeczywisty bufor jest pełń dane w innych koleikach
467
Fig.17-1
180 619
480
J^485 ”jestyiiazdoX^ NIE mu Itipleksow^/* ~ 7
TAK
486
Dodaj wskaźnik „Zamknięty do kolejki gniazda
487
Wywołaj wirtualne usuwanie
488
Odłącz od rzeczywistego gniazda
NIE
495
NIE me wi
496,
TAK jest gniazdo simpleksowe
490
TAK
491
Odłącz rzeczywiste gniazdo z listwy zdarzeń rzeczywistych
492
Uruchom zegar aktywności multipleksowej
Zamknij i skasuj gniazdo rzeczywiste
497
Oznacz zamknięte gniazdo
Departament Wydawnictw UP RP. Nakład 70 egz.
Cena 6,00 zł.
Claims (11)
- Zastrzeżenia patentowe1. Sposób komunikacji TCP o zredukowanych operacjach pomocniczych dla danych transmitowanych przez łącze komunikacyjne z pierwszej aplikacji w pierwszym komputerze i do drugiej aplikacji w drugim komputerze, gdzie dane transmituje się przez zewnętrzne łącze komunikacyjne z pierwszego komputera do drugiego komputera, znamienny tym, że zapamiętuje się strumień danych z pierwszej aplikacji dostarczanej do drugiej aplikacji w odpowiedzi na żądanie z drugiej aplikacji w pamięci podręcznej w pierwszym komputerze dla wytwarzania zapisu podstawowej pamięci podręcznej serwera, zapamiętuje się strumień danych dostarczany do drugiej aplikacji w odpowiedzi na żądanie z drugiej aplikacji w pamięci podręcznej znajdującej się w drugim komputerze dla wytwarzania zapisu podstawowej pamięci podręcznej klienta, ocenia się żądania z drugiej aplikacji dla określenia, czy zapis podstawowej pamięci podręcznej klienta, odpowiadający wywoływanemu żądaniu, występuje dla dostarczenia podstawowej formy klienta, wywołuje się żądania z drugiej aplikacji dla określenia, czy zapis podstawowej pamięci podręcznej komputera serwera, odpowiadający wywoływanemu żądaniu, występuje dla dostarczania podstawowej formy serwera, przechwytuje się strumień danych, odpowiadający odpowiedzi początkowanej przez pierwszą aplikację w odpowiedzi na wywoływane żądanie z drugiej aplikacji przed transmisją odpowiedzi przez zewnętrzne łącze komunikacyjne, porównuje się przechwyconą odpowiedź z podstawową formą serwera dla dostarczania danych różnicowych, odpowiadających różnicy pomiędzy przechwyconą odpowiedzią i podstawową formą serwera, przesyła się dane różnicowe do drugiego komputera przez zewnętrzne łącze komunikacyjne, odbiera się dane różnicowe transmitowane przez zewnętrzne łącze komunikacyjne, przesyłane przez pierwszy komputer, odtwarza się strumień danych odpowiedzi, odpowiednio do transmisji z pierwszej aplikacji ze specyficznego strumienia danych klienta/serwera, odbieranego przez zewnętrzne łącze komunikacyjne, poprzez łączenie podstawowej formy klienta z danymi różnicowymi odbieranymi przez zewnętrzne łącze komunikacyjne dla wytwarzania strumienia danych odpowiedzi, odpowiadającego przechwyconej odpowiedzi i dostarcza się odtworzony strumień danych, odpowiadający przechwyconej odpowiedzi, do drugiej aplikacji.
- 2. Sposób według zastrz. 1, znamienny tym, że określa się, czy podstawowa forma serwera jest identyczna z podstawową formą klienta, a podczas przesyłania transmituje się podstawową formę serwera i transmituje się dane różnicowe do drugiego komputera przez zewnętrzne łącze komunikacyjne, jeżeli podczas określania określa się, że podstawowa forma serwera nie jest identyczna z podstawową formą klienta, a podczas odtwarzania odtwarza się przechwycony strumień danych odpowiedzi, odpowiedni do odpowiedzi z pierwszej aplikacji, przez łączenie podstawowej formy serwera, odbieranej przez zewnętrzne łącze komunikacyjne, z danymi różnicowymi odbieranymi przez zewnętrzne łącze komunikacyjne dla wytworzenia strumienia danych odpowiadającego przechwyconej odpowiedzi i aktualizuje się podstawową formę klienta, odpowiadającą wywoływanemu żądaniu, przez pamiętanie odbieranej podstawowej formy serwera, gdy zapis podstawowej pamięci podręcznej klienta odpowiada wywoływanemu żądaniu.
- 3. Sposób według zastrz. 1, znamienny tym, że określa się, czy różnica pomiędzy podstawową formą serwera i przechwyconą odpowiedzią jest większa niż określony poziom progowy różnicowy, aktualizuje się podstawową formę serwera, odpowiadającą wywoływanemu żądaniu, przez zapamiętanie przechwyconego strumienia danych odpowiedzi, odbieranego z pierwszej aplikacji, gdy zapis podstawowej pamięci podręcznej serwera odpowiada przechwyconemu żądaniu, jeżeli różnica pomiędzy podstawową formą serwera i przechwyconą odpowiedzią jest większa niż określony poziom progowy, a podczas porównywania i przesyłania wykorzystuje aktualizowaną formę podstawową serwera.180 619
- 4. Sposób według zastrz. 1,_ znamienny tym, że utrzymuje się wiele zapisów podstawowej pamięci podręcznej serwera, które odpowiadają żądaniu z drugiej aplikacji, a podczas wywoływania określa się, czy wiele zapisów podstawowej pamięci podręcznej serwera występuje odpowiednio do żądania z drugiej aplikacji dla dostarczenia wielu podstawowych form serwera, określa się, czy jedna z wielu podstawowych form serwera jest identyczna z podstawową formą klienta i podczas porównywania wykorzystuje się jedną z wielu podstawowych form serwera, która jest identyczna z podstawową formą klienta, jeżeli podczas określania określa się, że jedna z wielu podstawowych form serwera jest identyczna z podstawową formą klienta.
- 5. Sposób według zastrz. 1, znamienny tym, że aktualizuje się zapis pamięci podręcznej serwera przez strumień danych z pierwszej aplikacji w odpowiedzi na żądanie z drugiej aplikacji, utrzymuje się wiele zbiorów danych różnicowych, które odpowiadają żądaniu z drugiej aplikacji i które reprezentują różnicę pomiędzy kolejnymi zapisami pamięci podręcznej serwera dla dostarczania archiwalnych danych różnicowych, utrzymuje się wiele zapisów cyklicznej kontroli nadmiarowej, a każdy z wielu zapisów cyklicznej kontroli nadmiarowej jest związany z jednym z wielu zbiorów danych różnicowych i unikalnie identyfikuje podstawową formę serwera, z której uzyskuje się zbiór danych różnicowych, a podczas wywoływania określa się, czy występuje wiele zbiorów danych różnicowych i zapisów cyklicznej kontroli nadmiarowej CRC odpowiednio do żądania z drugiej aplikacji, określa się, czy jeden z wielu zapisów cyklicznej kontroli nadmiarowej CRC odpowiada podstawowej formie serwera, która jest identyczna z podstawową formą klienta, a podczas przesyłania przesyła się archiwalne dane różnicowe, odpowiadające zapisowi cyklicznej kontroli nadmiarowej, które odpowiadają podstawowej formie klienta, kolejne zbiory archiwalnych danych różnicowych i dane różnicowe obliczane przez porównywanie, do drugiego komputera przez zewnętrzne łącze komunikacyjne, a podczas odtwarzania odtwarza się strumień danych odpowiedzi, odpowiadający transmisji z pierwszej aplikacji ze strumienia danych odbieranego przez zewnętrzne łącze komunikacyjne, przez kolejne łączenie podstawowej formy klienta z danymi różnicowymi odbieranymi przez zewnętrzne łącze komunikacyjne dla wytworzenia strumienia danych odpowiedzi odpowiednio do przechwyconej odpowiedzi i aktualizuje się zapis pamięci podręcznej klienta, odpowiadający żądaniu z drugiej aplikacji, przez odtwarzany strumień danych.
- 6. Urządzenie do komunikacji TCP o zredukowanych operacjach pomocniczych, w którym pierwsza aplikacja w pierwszym komputerze jest połączona poprzez łącze komunikacyjne z drugą aplikacją w drugim komputerze, znamienne tym, że zawiera pierwszy moduł przechwytujący (40) włączony pomiędzy pierwszą aplikację i zewnętrzne łącze komunikacyjne (35) w pierwszym komputerze (6), do pamiętania strumienia danych z pierwszej aplikacji do drugiej aplikacji w pamięci podręcznej dołączonej do pierwszego modułu przechwytującego (40) w pierwszym komputerze (6) i do wywoływania żądań z drugiej aplikacji dla określania, czy istnieje podstawowy zapis pamięci podręcznej serwera i do przechwytywania strumienia danych odpowiadającego odpowiedzi początkowanej przez pierwszą aplikację oraz do porównywania przechwyconej odpowiedzi z podstawową formą serwera dla dostarczania danych różnicowych, a także do przesyłania danych różnicowych do drugiego komputera (5) przez zewnętrzne łącze komunikacyjne (35), urządzenie zawiera ponadto drugi moduł przechwytujący (30) włączony pomiędzy drugą aplikację i zewnętrzne łącze komunikacyjne (35) w drugim komputerze (5), do pamiętania strumienia danych dostarczanego do drugiej aplikacji w odpowiedzi na żądanie z drugiej aplikacji w pamięci podręcznej dołączonej do drugiego modułu przechwytującego (30) w drugim komputerze (5) dla wytwarzania podstawowego zapisu pamięci podręcznej klienta, do oceny żądań z drugiej aplikacji dla określania, czy istnieje podstawowy zapis pamięci podręcznej klienta, i do odbioru danych różnicowych, transmitowanych przez zewnętrzne łącze komunikacyjne (35), przesyłanych przez pierwszy komputer (6) oraz do odtwarzania strumienia danych odpowiedzi, odbieranej przez zewnętrzne łącze komunikacyjne (35) przez połączenie podstawowej formy klienta z danymi różnicowymi, odbieranymi przez zewnętrzne łącze komunikacyjne (35), a także do dostarczania odtwarzanego strumienia danych.180 619
- 7. Urządzenie według zastrz. 6, znamienne tym, że pierwsza aplikacja zawiera serwer WWW (20) i druga aplikacja zawiera przeglądarkę WWW (10).
- 8. Urządzenie według zastrz. 6, znamienne tym, że zewnętrzne łącze komunikacyjne zawiera bezprzewodowe łącze komunikacyjne (35).
- 9. Urządzenie według zastrz. 7, znamienne tym, że żądanie z przeglądarki WWW zawiera wspólny interfejs bramy.
- 10. Urządzenie według zastrz. 7, znamienne tym, że żądanie z przeglądarki WWW zawiera żądanie wspólnego interfejsu bramy.
- 11. Produkt programu komputerowego do komunikacji TCP o zredukowanych operacjach pomocniczych, 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 zapamiętywania przez pierwszy komputer (6) strumienia danych z pierwszej aplikacji do drugiej aplikacji w pamięci podręcznej dołączonej do pierwszego modułu przechwytującego (40) w pierwszym komputerze (6) i odczytywalne komputerowo elementy kodu programowego wywoływania przez pierwszy komputer (6) żądań z drugiej aplikacji i odczytywalne komputerowo elementy kodu programowego przechwytywania przez pierwszy komputer (6) strumienia danych, odpowiadającego odpowiedzi początkowanej przez pierwszą aplikację i odczytywalne.komputerowo elementy kodu programowego porównywania przez komputer (6) przechwyconej odpowiedzi z podstawową formą serwera dla dostarczania danych różnicowych i odczytywalne komputerowo elementy kodu programowego przesyłania przez pierwszy komputer (6) danych różnicowych do drugiego komputera (5) przez zewnętrzne łącze komunikacyjne (35) i odczytywalne komputerowo elementy kodu programowego zapamiętywania przez drugi komputer (5) strumienia danych dostarczanego do drugiej aplikacji w pamięci podręcznej dołączonej do drugiego modułu przechwytującego (30) w drugim komputerze (5) i odczytywalne komputerowo elementy kodu programowego oceny przez drugi komputer (5) żądań z drugiej aplikacji dla określania, czy istnieje podstawowy zapis pamięci podręcznej klienta i odczytywalne komputerowo elementy kodu programowego odbioru przez drugi komputer (5) danych różnicowych transmitowanych przez zewnętrzne łącze komunikacyjne (35) przesyłane przez pierwszy komputer (6) i odczytywalne komputerowo elementy kodu programowego odtwarzania przez drugi komputer (5) strumienia danych odpowiedzi, odpowiadającego komunikacji z pierwszej aplikacji ze specyficznego strumienia danych klienta/serwera, odbieranego przez zewnętrzne łącze komunikacyjne (35) przez połączenie formy bazy klienta z danymi różnicowymi odbieranymi przez zewnętrzne łącze komunikacyjne (35) oraz odczytywalne komputerowo elementy kodu programowego dostarczania przez drugi komputer (5) odtwarzanego strumienia danych, odpowiadającego przechwyconej odpowiedzi, do drugiej aplikacji.* * *
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/601,903 US5859971A (en) | 1996-02-15 | 1996-02-15 | Differencing client/server communication system for use with CGI forms |
PCT/US1996/011555 WO1997030539A1 (en) | 1996-02-15 | 1996-07-11 | Differencing communication system |
Publications (2)
Publication Number | Publication Date |
---|---|
PL322830A1 PL322830A1 (en) | 1998-02-16 |
PL180619B1 true PL180619B1 (pl) | 2001-03-30 |
Family
ID=24409216
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PL96322830A PL180619B1 (pl) | 1996-02-15 | 1996-07-11 | o zredukowanych operacjach pomocniczych PL PL PL PL PL PL PL PL PL PL PL |
Country Status (15)
Country | Link |
---|---|
US (1) | US5859971A (pl) |
EP (1) | EP0823171B1 (pl) |
JP (1) | JP3491011B2 (pl) |
KR (1) | KR100295730B1 (pl) |
CN (1) | CN1167237C (pl) |
AT (1) | ATE201946T1 (pl) |
CA (1) | CA2218187C (pl) |
CZ (1) | CZ289259B6 (pl) |
DE (1) | DE69613225T2 (pl) |
ES (1) | ES2159037T3 (pl) |
HU (1) | HU227369B1 (pl) |
MY (1) | MY120208A (pl) |
PL (1) | PL180619B1 (pl) |
TW (1) | TW299544B (pl) |
WO (1) | WO1997030539A1 (pl) |
Families Citing this family (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5754774A (en) * | 1996-02-15 | 1998-05-19 | International Business Machine Corp. | Client/server communication system |
US6194992B1 (en) * | 1997-04-24 | 2001-02-27 | Nomadix, Llc | Mobile web |
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 |
US7266526B1 (en) * | 1996-11-27 | 2007-09-04 | Diebold, Incorporated | Automated banking machine system with multiple browsers |
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 |
US6845505B1 (en) | 1997-02-03 | 2005-01-18 | Oracle International Corporation | Web request broker controlling multiple processes |
US6710786B1 (en) | 1997-02-03 | 2004-03-23 | Oracle International Corporation | Method and apparatus for incorporating state information into a URL |
US6247056B1 (en) | 1997-02-03 | 2001-06-12 | Oracle Corporation | Method and apparatus for handling client request with a distributed web application server |
US6026404A (en) * | 1997-02-03 | 2000-02-15 | Oracle Corporation | Method and system for executing and operation in a distributed environment |
US6225995B1 (en) | 1997-10-31 | 2001-05-01 | Oracle Corporaton | Method and apparatus for incorporating state information into a URL |
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 |
US7103794B2 (en) | 1998-06-08 | 2006-09-05 | Cacheflow, Inc. | Network object cache engine |
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 |
US6085193A (en) * | 1997-09-29 | 2000-07-04 | International Business Machines Corporation | Method and system for dynamically prefetching information via a server hierarchy |
US6393526B1 (en) | 1997-10-28 | 2002-05-21 | Cache Plan, Inc. | Shared cache parsing and pre-fetch |
US6334114B1 (en) | 1997-10-31 | 2001-12-25 | Oracle Corporation | Method and apparatus for performing transactions in a stateless web environment which supports a declarative paradigm |
FR2774241B1 (fr) * | 1998-01-23 | 2000-02-25 | Sagem | Systeme de teleinformation pour un site d'exploitation de donnees et terminal de restitution de donnees d'un tel systeme |
US6272534B1 (en) * | 1998-03-04 | 2001-08-07 | Storage Technology Corporation | Method and system for efficiently storing web pages for quick downloading at a remote device |
US7007072B1 (en) * | 1999-07-27 | 2006-02-28 | Storage Technology Corporation | Method and system for efficiently storing web pages for quick downloading at a remote device |
AUPP252798A0 (en) * | 1998-03-24 | 1998-04-23 | Griffits, John Philip | Enhanced trusted systems processing |
US6170013B1 (en) * | 1998-03-27 | 2001-01-02 | Nortel Networks Limited | Method and apparatus for controlling access to network information sources |
US6148340A (en) * | 1998-04-30 | 2000-11-14 | International Business Machines Corporation | Method and system for differencing container files |
US6427187B2 (en) | 1998-07-31 | 2002-07-30 | Cache Flow, Inc. | Multiple cache communication |
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 |
US6574239B1 (en) * | 1998-10-07 | 2003-06-03 | Eric Morgan Dowling | Virtual connection of a remote unit to a server |
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 |
US7194554B1 (en) | 1998-12-08 | 2007-03-20 | Nomadix, Inc. | Systems and methods for providing dynamic network authorization authentication and accounting |
US8266266B2 (en) | 1998-12-08 | 2012-09-11 | Nomadix, Inc. | Systems and methods for providing dynamic network authorization, authentication and accounting |
GB2339516B (en) * | 1999-04-06 | 2000-07-05 | Iesearch Limited | An inter-computer communications apparatus |
US6253198B1 (en) * | 1999-05-11 | 2001-06-26 | Search Mechanics, Inc. | Process for maintaining ongoing registration for pages on a given search engine |
US7908602B2 (en) | 1999-06-30 | 2011-03-15 | Blackboard Inc. | Internet-based education support system, method and medium providing security attributes in modular, extensible components |
US6988138B1 (en) | 1999-06-30 | 2006-01-17 | Blackboard Inc. | Internet-based education support system and methods |
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 |
US6356933B2 (en) * | 1999-09-07 | 2002-03-12 | Citrix Systems, Inc. | Methods and apparatus for efficiently transmitting interactive application data between a client and a server using markup language |
US6721780B1 (en) * | 1999-11-09 | 2004-04-13 | Fireclick, Inc. | Predictive pre-download of network objects |
US6324568B1 (en) * | 1999-11-30 | 2001-11-27 | Siebel Systems, Inc. | Method and system for distributing objects over a network |
US6374248B1 (en) * | 1999-12-02 | 2002-04-16 | Sun Microsystems, Inc. | Method and apparatus for providing local path I/O in a distributed file system |
US6983315B1 (en) | 2000-01-18 | 2006-01-03 | Wrq, Inc. | Applet embedded cross-platform caching |
CA2398838A1 (en) * | 2000-03-01 | 2001-09-07 | Computer Associates Think, Inc. | Method and system for updating an archive of a computer file |
US7028251B2 (en) * | 2000-03-02 | 2006-04-11 | Iora, Ltd. | System and method for reducing the size of data difference representations |
US6990526B1 (en) * | 2000-05-22 | 2006-01-24 | Pointred Technologies, Inc. | Method and apparatus for web caching |
JP4282207B2 (ja) * | 2000-05-31 | 2009-06-17 | 日本電気株式会社 | サーバ装置、クライアント装置、クライアントサーバ通信システム及びそれらに用いるサーバ特定方式 |
US6941351B2 (en) * | 2000-07-11 | 2005-09-06 | Microsoft Corporation | Application program caching |
US6839737B1 (en) | 2000-07-19 | 2005-01-04 | Neoplanet, Inc. | Messaging system for indicating status of a sender of electronic mail and method and computer program product therefor |
US7529750B2 (en) * | 2000-08-11 | 2009-05-05 | International Business Machines Corporation | Accessing information on a network |
US7571217B1 (en) | 2000-08-16 | 2009-08-04 | Parallel Networks, Llc | Method and system for uniform resource locator transformation |
US7346842B1 (en) * | 2000-11-02 | 2008-03-18 | Citrix Systems, Inc. | Methods and apparatus for incorporating a partial page on a client |
WO2002063504A2 (en) * | 2000-11-02 | 2002-08-15 | Citrix Systems, Inc. | Methods and apparatus for augmenting page generation code to effect partial page regeneration |
US7051084B1 (en) | 2000-11-02 | 2006-05-23 | Citrix Systems, Inc. | Methods and apparatus for regenerating and transmitting a partial page |
US7194743B2 (en) * | 2000-12-12 | 2007-03-20 | Citrix Systems, Inc. | Methods and apparatus for communicating changes between a user interface and an executing application using property paths |
US7269784B1 (en) | 2001-01-22 | 2007-09-11 | Kasriel Stephane | Server-originated differential caching |
US6912591B2 (en) * | 2001-05-02 | 2005-06-28 | Science Application International Corporation | System and method for patch enabled data transmissions |
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 |
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 |
US7305381B1 (en) | 2001-09-14 | 2007-12-04 | Ricoh Co., Ltd | Asynchronous unconscious retrieval in a network of information appliances |
US7375835B1 (en) | 2001-10-29 | 2008-05-20 | Ricoh Co., Ltd. | E-mail transmission of print-ready documents |
JP2003177992A (ja) * | 2001-12-10 | 2003-06-27 | Seiko Epson Corp | 差分通信システム、差分通信装置及び差分通信プログラム、並びに差分通信方法 |
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 |
US7111038B2 (en) * | 2002-04-03 | 2006-09-19 | International Business Machines Corporation | Enhancing application server performance by relocating performance-degrading processing |
US7428578B1 (en) * | 2002-07-02 | 2008-09-23 | Ricoh Co., Ltd | Remotely initiated document transmission |
EP1664992A4 (en) * | 2003-08-15 | 2010-05-19 | Blackboard Inc | CONTENT SYSTEM AND ASSOCIATED METHODS |
US7472254B2 (en) * | 2003-10-10 | 2008-12-30 | Iora, Ltd. | Systems and methods for modifying a set of data objects |
US7203708B2 (en) * | 2003-11-06 | 2007-04-10 | Microsoft Corporation | Optimizing file replication using binary comparisons |
US8010670B2 (en) * | 2003-12-23 | 2011-08-30 | Slipstream Data Inc. | Meta-data based method for local cache utilization |
JP4745839B2 (ja) | 2005-01-28 | 2011-08-10 | 富士通株式会社 | データ転送システム、送信プログラム、受信プログラム及びデータ送信方法 |
US8326659B2 (en) * | 2005-04-12 | 2012-12-04 | Blackboard Inc. | Method and system for assessment within a multi-level organization |
JP2007128371A (ja) * | 2005-11-04 | 2007-05-24 | Fujitsu Ltd | コンテンツ検索システム |
US7924884B2 (en) * | 2005-12-20 | 2011-04-12 | Citrix Systems, Inc. | Performance logging using relative differentials and skip recording |
US8493858B2 (en) | 2006-08-22 | 2013-07-23 | Citrix Systems, Inc | Systems and methods for providing dynamic connection spillover among virtual servers |
US8312120B2 (en) * | 2006-08-22 | 2012-11-13 | Citrix Systems, Inc. | Systems and methods for providing dynamic spillover of virtual servers based on bandwidth |
WO2008138008A1 (en) * | 2007-05-08 | 2008-11-13 | Riverbed Technology, Inc | A hybrid segment-oriented file server and wan accelerator |
TW201009698A (en) * | 2008-08-19 | 2010-03-01 | Arcadyan Technology Corp | Method for improving the accessing efficiency of embedded web page |
US20100131617A1 (en) * | 2008-11-25 | 2010-05-27 | John Osborne | Method and system for differential transmission of web page structures |
EP2502402A1 (en) * | 2009-11-20 | 2012-09-26 | Alcatel Lucent | Expediting the distribution of data files between a server and a set of clients |
US10142157B2 (en) | 2010-06-10 | 2018-11-27 | Blackberry Limited | Method and system for reducing transmission of redundant data |
US8495019B2 (en) | 2011-03-08 | 2013-07-23 | Ca, Inc. | System and method for providing assured recovery and replication |
US9832095B2 (en) * | 2011-12-14 | 2017-11-28 | Seven Networks, Llc | Operation modes for mobile traffic optimization and concurrent management of optimized and non-optimized traffic |
US8606973B1 (en) * | 2012-07-05 | 2013-12-10 | International Business Machines Corporation | Managing monitored conditions in adaptors in a multi-adaptor system |
JP6212944B2 (ja) * | 2013-05-14 | 2017-10-18 | 日本電気株式会社 | 通信システム、プロキシサーバ、通信方法およびプログラム |
CN112333787B (zh) * | 2020-11-13 | 2023-09-12 | Oppo广东移动通信有限公司 | 数据传输方法、装置、存储介质、终端及网络接入点设备 |
US11968417B2 (en) * | 2021-12-30 | 2024-04-23 | Comcast Cable Communications, Llc | Systems, methods, and apparatuses for buffer management |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US5241625A (en) * | 1990-11-27 | 1993-08-31 | Farallon Computing, Inc. | Screen image sharing among heterogeneous computers |
US5611038A (en) * | 1991-04-17 | 1997-03-11 | Shaw; Venson M. | Audio/video transceiver provided with a device for reconfiguration of incompatibly received or transmitted video and audio information |
JPH06324928A (ja) * | 1993-05-14 | 1994-11-25 | Mitsubishi Electric Corp | ログ生成装置とファイルの異なるバージョンの調停のための装置及び異なる場所にあるコンピュータファイルの異なるバージョンを調停するための装置 |
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 |
-
1996
- 1996-02-15 US US08/601,903 patent/US5859971A/en not_active Expired - Lifetime
- 1996-05-01 TW TW085105223A patent/TW299544B/zh not_active IP Right Cessation
- 1996-07-11 CN CNB961939486A patent/CN1167237C/zh not_active Expired - Lifetime
- 1996-07-11 ES ES96923752T patent/ES2159037T3/es not_active Expired - Lifetime
- 1996-07-11 WO PCT/US1996/011555 patent/WO1997030539A1/en active IP Right Grant
- 1996-07-11 CA CA002218187A patent/CA2218187C/en not_active Expired - Lifetime
- 1996-07-11 KR KR1019970707264A patent/KR100295730B1/ko not_active IP Right Cessation
- 1996-07-11 EP EP96923752A patent/EP0823171B1/en not_active Expired - Lifetime
- 1996-07-11 AT AT96923752T patent/ATE201946T1/de not_active IP Right Cessation
- 1996-07-11 DE DE69613225T patent/DE69613225T2/de not_active Expired - Lifetime
- 1996-07-11 JP JP52931497A patent/JP3491011B2/ja not_active Expired - Fee Related
- 1996-07-11 CZ CZ19973540A patent/CZ289259B6/cs not_active IP Right Cessation
- 1996-07-11 PL PL96322830A patent/PL180619B1/pl not_active IP Right Cessation
- 1996-07-11 HU HU9801874A patent/HU227369B1/hu not_active IP Right Cessation
-
1997
- 1997-02-03 MY MYPI97000410A patent/MY120208A/en unknown
Also Published As
Publication number | Publication date |
---|---|
EP0823171A1 (en) | 1998-02-11 |
CA2218187C (en) | 2004-11-02 |
JP3491011B2 (ja) | 2004-01-26 |
HUP9801874A3 (en) | 1999-05-28 |
ES2159037T3 (es) | 2001-09-16 |
CZ354097A3 (cs) | 1998-03-18 |
CA2218187A1 (en) | 1997-08-21 |
DE69613225T2 (de) | 2001-11-08 |
CN1167237C (zh) | 2004-09-15 |
CN1184575A (zh) | 1998-06-10 |
KR100295730B1 (ko) | 2001-09-07 |
PL322830A1 (en) | 1998-02-16 |
WO1997030539A1 (en) | 1997-08-21 |
HU227369B1 (en) | 2011-04-28 |
EP0823171B1 (en) | 2001-06-06 |
TW299544B (en) | 1997-03-01 |
ATE201946T1 (de) | 2001-06-15 |
JPH11500250A (ja) | 1999-01-06 |
HUP9801874A2 (hu) | 1998-11-30 |
CZ289259B6 (cs) | 2001-12-12 |
US5859971A (en) | 1999-01-12 |
DE69613225D1 (de) | 2001-07-12 |
MY120208A (en) | 2005-09-30 |
KR19980703864A (ko) | 1998-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
PL180619B1 (pl) | o zredukowanych operacjach pomocniczych 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 | |
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 | |
US6578054B1 (en) | Method and system for supporting off-line mode of operation and synchronization using resource state information | |
US5864837A (en) | Methods and apparatus for efficient caching in a distributed environment | |
US8442943B2 (en) | Data transfer and synchronization between mobile systems using change log | |
US6757696B2 (en) | Management server for synchronization system | |
US6742025B2 (en) | System and method for server managed modification of operating system data stored within a network device | |
US20080195754A1 (en) | Method and Apparatus for Affinity of Users to Application Servers | |
JPH10116236A (ja) | 遅延コード化データ伝送 | |
WO2001033381A9 (en) | Shared internet storage resource, user interface system, and method | |
CN105138691B (zh) | 分析用户业务量的方法和系统 | |
US20060031262A1 (en) | Synchronizing client data and server data | |
JP2002149464A (ja) | データ転送および同期システム用のベースローリングエンジン | |
JP2003122741A (ja) | ネットワーク化されたコンピュータを活用してリナックス・プラットフォーム上でWindows(R)ベースのファイルを見るシステム及び方法 | |
US6185617B1 (en) | Construction and usage of a pre-warmed cache for client-server emulator | |
JP3845497B2 (ja) | コンピュータ・システム | |
CN113592652B (zh) | 延时交易方法、计算机设备和存储介质 | |
Frécon et al. | The DIVE Client Interface | |
JP2000148620A (ja) | サーバ・クライアントシステム | |
CN115102972A (zh) | 一种存储nfs文件的方法、装置、设备及介质 | |
CZ354197A3 (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í |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Decisions on the lapse of the protection rights |
Effective date: 20110711 |