Abstract

A multiple source proxy management system is disclosed. Most Internet browsers communicate only with the global Internet. However, new data services may be created that can provide information to an Internet browser in a compatible form. Since Internet browsers only know how to communicate with the Internet, a new system was developed to handle communication with other data services. The system includes a personal proxy server that handles requests from the Internet browser. The personal proxy server directs requests to a proper data server handler. The personal proxy server respects all existing Internet settings such as direct connections, proxy servers, and autoconfig proxy servers.

The present invention relates to the field of proxy management. In particular the present invention discloses a proxy system that allows multiple sources of data to be accessed.

BACKGROUND OF THE INVENTION

The Internet has become a major source of news and information for very large numbers of people. In particular, millions of Internet users browse the World Wide Web (WWW) to obtain HyperText Markup Language (HTML) documents using the HyperText Transport Protocol (HTTP). Many people now receive more news and information from the Internet WWW sites than from traditional information sources such as television. The WWW portion of the Internet is an excellent medium for news and information since the WWW Internet sites can provide information to users on-demand. Specifically, Internet users can immediately request the exact information they are interested in when ever they wish from WWW Internet sites.

However, the use of the Internet WWW as a news distribution does suffer from a number of deficiencies. One serious problem is that the limited bandwidth of most Internet connections severely limits the amount of information delivered. Most Internet users access the Internet through a telephone-based dial-up modem at speeds of 56 kps per second or less. With such limited bandwidth available, most Internet based WWW sites only deliver text and static images. When video information delivered through 56K Internet connections, the video information is compressed so heavily such that only small low-resolution video images are delivered at a low frame rate. For users that are more familiar to broadcast quality television video, highly compressed Internet distributed video is not worth viewing unless the content is extremely desirable.

To improve upon the performance of the Internet, many telecommunication providers are now offering high-bandwidth connections for the “last mile” to an Internet user's residence. Cable television providers are now offering cable modem Internet service that use cable television wiring to deliver broadband Internet service. Similarly, telephone companies are rolling out Digital Subscriber Line (DSL) services that provide broadband Internet service. Although these broadband data connections provide additional bandwidth, such broadband connections only address the “last mile” bandwidth problem associated with sending rich multi-media information across the Internet. Many other problems will continue to exist. For example, the point-to-point nature of Internet communication limits large-scale video deliver. Most Internet communication occurs in a unicast manner wherein a unique communication connection is established between each information server and each Internet client. Since each Internet client requires its own connection, the bandwidth requirement for serving information grows linearly with the number of Internet clients being served. Furthermore, each Internet client that requests service adds additional load to the server systems that service information. To serve rich multimedia information to a large number of client systems, a large powerful server farm is required. It is therefore quite expensive from the server end in both communication costs and computer costs to serve large amounts of rich multi-media information.

Due to the above-described problems associated with Internet delivery of multimedia information, additional data deliver systems are being developed. An example of another data delivery system can be found in the patent application entitled “A Broadband Data Broadcasting Service”, filed on Apr. 16, 1999, having Ser. No. 09/293,594. Although such systems provide highly desirable features, the Internet will still remain an interesting medium. It would therefore be desirable to provide a multi-media rich information system that is similar to the Internet in terms of on-demand access of interesting information but without the bandwidth problems associated with the Internet network system.

SUMMARY OF THE INVENTION

The present invention discloses a proxy management system that allows a browser program to access multiple different data services using a personal proxy server. The personal proxy server accesses the browser program's Internet settings to determine the current environment. The personal proxy server stores those settings so that they may be restored at a later time. The personal proxy server then changes the browser program's Internet settings such that the browser program directs future requests to the personal proxy program. The personal proxy program then accepts requests from the browser program. When the personal proxy program receives a request, the personal proxy program examines the request and selects an appropriate handler. The personal proxy program then directs the request to the appropriate handler. The appropriate handlers may include the originally specified Internet settings, a local cache program, a data appliance peripheral, or any other data service.

Other objects, features, and advantages of present invention will be apparent from the company drawings and from the following detailed description.

BRIEF DESCRIPTION OF THE DRAWINGS

The objects, features, and advantages of the present invention will be apparent to one skilled in the art, in view of the following detailed description in which:

FIG. 1A illustrates a computer system coupled directly to the Internet.

FIG. 1B illustrates a computer system coupled to the Internet through a packet filtering firewall.

FIG. 1C illustrates a computer system indirectly coupled to the Internet through a proxying firewall.

FIG. 2A illustrates a computer system coupled to a broadcast data service and the global Internet.

FIG. 2B illustrates a set-top box system coupled to a broadcast data service and the global Internet.

FIG. 3 illustrates a conceptual document of one possible embodiment of a data broadcast receiver system.

FIG. 4 illustrates a block diagram of a personal computer system that uses a single browser system to communicate with several data sources using a personal proxy server.

FIG. 5 illustrates a block diagram of a personal computer system that uses a personal proxy server to communicate with the Internet through a proxying firewall.

FIG. 6 illustrates a flow diagram that describes the operation of a personal proxy server.

FIG. 7 illustrates a block diagram of a personal computer system that uses a personal proxy server to communicate with the Internet through a proxying firewall that uses an autoconfig file.

FIG. 8 illustrates a flow diagram that describes the operation of a personal proxy server that communicates with a proxying firewall that uses an autoconfig file.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

A proxy management system is disclosed. In the following description, for purposes of explanation, specific nomenclature is set forth to provide a thorough understanding of the present invention. However, it will be apparent to one skilled in the art that these specific details are not required in order to practice the present invention. For example, the present invention has been described with reference to a wireless datacasting service that is cached on a local device. However, the same proxying techniques can easily be applied to other types of data communication systems.

Overview Internet Proxy Systems

There are a number of different ways of connecting a personal computer system to the global Internet. Each different method has its own advantages and disadvantages.

Direct Internet Connections

FIG. 1A illustrates a conceptual diagram of a personal computer system 110 that has a “direct” connection to the global Internet 101. The connection is made using some type of Internet connection system 120. Most residential personal computers currently use a dial-up modem that connects to a remote access device at an Internet Service Provider (ISP) as an Internet connection system 120. In a quest for a faster Internet connection, many residential customer are now beginning to use “broadband” Internet connection systems that provide faster data throughout with lower latency. Examples of broadband Internet connection systems 120 include Digital Subscriber Line (DSL) and cable modem connections to an ISP. In a direct Internet connection, the end personal computer system in 110 uses a “legal” external Internet Protocol (IP) address that is routable. While the personal computer system is coupled to the Internet, the personal computer system 110 “owns” that unique IP address.

Indirect Internet Connections

To protect computers from Internet attacks and conserve address space, many personal computer systems are coupled to the Internet using some type of indirect Internet connection. FIGS. 1B and 1C illustrate two different examples of indirect Internet connections.

In the indirect Internet connection embodiment of FIG. 1B, a packet filtering firewall 130 shields a personal computer 113 from the Internet. In such an embodiment, it is the packet filtering firewall 130 that is coupled to the Internet 101 through some type of Internet connection system 123 such as a dial-up modem, a DSL modem, a leased line, or other Internet connection. The packet filtering firewall 130 filters all the packets passing between the personal computer 113 and the Internet 101. If the packet filtering firewall 130 deems that a particular packet may be malicious, then the packet filtering firewall 130 will drop that packet. Thus, the personal computer system does communicate with entities on the global Internet, but only under the strict supervision of the packet filtering firewall 130. A packet filtering firewall 130 may also perform network address translation. Network transaction allows a firewall device to share one (or more) legal IP addresses among a number of systems on an internal network that uses non-routable IP addresses such as Net 10 addresses. (Net 10 addresses are IP addresses in the form of 10.0.0.1 to 10.255.255.255 since that address range has been designated as non-routable.)

In the indirect Internet connection embodiment of FIG. 1C, a proxying firewall 140 shields a personal computer 117 from the Internet 101. In such a proxying embodiment, only the proxying server 140 is coupled to the Internet 101 through some type of Internet connection system 127. In a proxying type of indirect Internet connection, the personal computer system 117 does not communicate directly with any entity on the Internet 101. Instead, the personal computer system 117 only communicates with the proxying firewall 140. The proxying firewall 140 examines requests for Internet content and may decide to drop requests, fulfill requests using locally cached information, relay the requests to the addressed entity on the Internet, or handle the request in another manner.

Overview of a Data Broadcast System

The present invention integrates the various direct and indirect Internet communication. systems of FIGS. 1A, 1B, and 1C with another data service. In one disclosed embodiment, a wireless data broadcast system is integrated with the Internet. However, the teachings of the present invention may be used with other types of data services.

FIG. 2A illustrates a first example usage of a wireless data service used by a personal computer system 210. In FIG. 2A, a wireless multimedia receiver/server device 230 receives data broadcasts received through some data broadcast channel. The data broadcast channel may comprise terrestrial radio broadcasts, satellite broadcasts, cable broadcasts (such as cable TV), or any other broadcast media. In the embodiment of FIG. 2A, a personal computer system 210 is coupled directly to the wireless multimedia receiver/server device 230 to receive data from that device. A number of different interface systems such as an Ethernet interface, a FireWire™ Bus (IEEE.1394), or a Universal Serial Bus (USB) interface may couple computer system 210 to wireless multimedia receiver/server device 230. The personal computer system 210 may also be connected to the global Internet 201 through some type of Internet connection 220 to receive Internet based information.

The wireless multimedia receiver/server device is not limited to usage by personal computer systems. FIG. 2B illustrates an example usage wherein a television set-top box 270 is coupled to a wireless multimedia receiver/server device 250. The television set-top box 270 may also be connected to the global Internet 201 through some type of Internet connection 260 to receive Internet based information.

A Data Broadcast Receiver System

FIG. 3 illustrates a conceptual diagram of one possible embodiment of a data broadcast receiver system 300. Referring to the conceptual diagram of FIG. 3, a packet extraction and processing system 310 examines a multiplexed digital information stream received using the receiver system 301. The packet extraction and processing system 310 extracts network packets that may be of interest to the data broadcast receiver/server system 300. Specifically, the packet processing system 310 identifies and extracts packets that are specifically addressed to the data broadcast receiver/server system 300 and packets that have specific defined characteristics.

The extracted packets are passed to a packet routing system 330. The packet routing system 330 routes the received packets appropriate destinations. The packet routing system 330 may route other data packets to client system 399 coupled to the multimedia receiver/server system 300 through computer interface 390. In such operations, the multimedia receiver/server system 300 acts as a packet router to deliver packets broadcast over a broadcast medium.

The data broadcast receiver/server system 300 may also be used to provide useful data services by locally caching information. Specifically, one or more caching applications 345 receive data packets from the packet routing system 330 and caches information from those packets into a file system 350. In one embodiment, the caching application 345 may request to receive packets addressed to one or more designated addresses that carry multimedia information and accompanying descriptors. The caching application 345 selectively captures multimedia information and stores that multimedia content information 353 in a file system 350. The caching application 345 may create multimedia information directory 355 such that the cached multimedia information may be quickly searched and accessed. The multimedia information may consist of anything that can be expressed in digital form including audio, video, text, web pages, and computer programs.

The data broadcast receiver/server system 300 may present the cached multimedia information in a number of different ways. However, one of the most popular current methods of presenting information is in the form of World Wide Web (WWW) pages formatted in HyperText Markup Language (HTML) or eXtensible Markup Language (XML). One embodiment of the data broadcast receiver/server system 300 uses a web page constructing application 360 to create WWW pages 359 that may be presented to the client system 399. A web server application 381 serves the created web pages 359 to client systems that request the web pages 359. Due to the caching of rich multimedia information, the web server 3781 may be aided by one or more file streaming applications 382 and 383. The file streaming applications 382 and 383 may stream rich multimedia information such as videos and audio.

The data broadcast receiver/server system 300 of FIG. 3 is only meant to provide one possible embodiment of a data broadcast system. Additional information on a data broadcast system can be found in the U.S. patent application entitled “A Broadband Data Broadcasting Service”, filed on Apr. 16, 1999, having Ser. No. 09/293,594. Furthermore, other types of data services may be provided.

Personal Proxy Server

As illustrated in FIGS. 2A and 2B, two different data services (the Internet 201 and a data broadcast service) may be provided to a single client computer system. In other embodiments (not shown) more than two different data services may be coupled to a single client computer system. Each different data service may provide different types of information and different sources of information. One method of allowing a user of the client computer system to access the different data services would be to have a different client program on the client computer system for each different data service. In such an embodiment, each client program could have special features that address specific characteristics of each data service. However, such an embodiment would require the user to learn a different user interface for each type of data service. Furthermore, the user would have to maintain all the different client programs for each data service. Thus, it would be desirable to have a unified system of accessing different data services.

The present invention introduces a method of allowing a common Internet browser program be used to access multiple different data services. Specifically, the present invention introduces a “personal proxy server.” The personal proxy server responds to requests from an Internet browser and then handles those requests using an appropriated data service. FIG. 4 illustrates a first embodiment of a personal proxy server 420.

Referring to FIG. 4, an Internet browser 410 runs on a computer system 400. The Internet browser 410 may be Netscape's Navigator, Microsoft's Internet Explorer, or any other suitable Internet browser program. The Internet browser 410 is configured to access the Internet using a proxy server wherein the proxy server is specified as the personal proxy server 420. The personal proxy server 420 is actually a program that runs on the computer system 400. In such a configuration, the Internet browser 410 will communicate with the personal proxy server 420 whenever the Internet browser 410 has a data request. The personal proxy server 420 is thus responsible for properly handling all communication from the Internet browser 410.

In the embodiment of FIG. 4, the personal proxy server 420 has access to two different data services. Specifically, the personal proxy server 420 may access the Internet 401 using network drivers 427 through an Internet connection 450 or the personal proxy server 420 may access a data broadcast service through data appliance drivers 425 that communicate with a data broadcast receiver system 430. When the personal proxy server 420 receives a request from the Internet browser 410 the personal proxy server 420 must first decide which data service will respond to the request. The personal proxy server 420 then consults with the selected data service to handle the request. One method of determine which data service to use is to examine the Uniform Resource Locator (URL) of the request for specific patterns. For example, the personal proxy server 420 may direct all URLs containing the Internet domain name “AcmeDataBroadcast.com” toward the data broadcast receiver system 430.

Once the personal proxy server 420 has determined which data service to handle a particular request, the personal proxy server 420 may simply relay the request on to the proper data service. For example, if the personal proxy server 420 receives an HTTP “GET” request for an Internet site, the personal proxy server 420 may simply pass the HTTP “Get” request to the Internet service using the Internet connection.

It should be emphasized that the personal proxy server 420 can handle many different data services. Furthermore, other types of data systems may be provided. For example, FIG. 4 further includes a local cache driver 429 that may be used to handle certain requests.

Integration with Existing Proxy Servers

As previously set forth with references to FIGS. 1A, 1B, and 1C, there are many different ways to connect a computer system to the global Internet. As illustrated in FIG. 1A, many computers are coupled directly to the Internet. However, computers are increasingly coupled to the Internet using an indirect connection as shown FIGS. 1B and 1C. To adequately hand consumer expectations, the personal proxy server must be able to handle many different types of Internet connections.

FIG. 5 illustrates a computer system 500 that uses a personal proxy server 520 to service an Internet browser 510. The personal proxy server 520 must direct requests from the Internet browser 510 to a local cache 529, a data broadcast service on data broadcast receiver 530, or the global Internet 501 via a proxy server 550. Since the Internet 501 is only accessible via the proxy server 550, the personal proxy server 520 must use the proxy server 550 appropriately.

FIG. 6 illustrates a flow diagram that describes how the personal proxy server 520 may operate in an environment with a direct Internet connection, a packet filtering firewall, or the simple proxying firewall as illustrated in FIG. 5. Referring to step 610, the personal proxy server 520 first reads the original Internet settings of the Internet browser 510. Next, the personal proxy server 520 stores the original Internet settings at step 620. The personal proxy server 520 stores the setting so that (1) the personal proxy server 520 will know how to access the Internet; and (2) the personal proxy server 520 will be able to replace the original Internet settings if the personal proxy server 520 is uninstalled.

At step 630, the personal proxy server 520 changes the Internet settings of the Internet browser 510 such that the Internet browser 510 will access the personal proxy server 520 for future requests. Specifically, the personal proxy server 520 instructs the Internet browser 510 to access the personal proxy server 520 as proxy server for all future requests of designated types. In one embodiment, the personal proxy server 520 only handles HyperText Transport Protocol (HTTP) requests.

After setting the Internet browser's settings, the personal proxy server 520 is ready to accept requests at step 640. When the personal proxy server 520 receives a request, the personal proxy server 520 determines the appropriated handler to handle the request at step 650. As previously set forth, the personal proxy server 520 may determine the proper handler by examining the URL in the request. After determining the proper handler, the personal proxy server 520 directs the request to the proper handler at step 660.

If the appropriate handler is the local cache or data broadcast service, then the personal proxy server 520 proceeds to steps 690 or 680, respectively, to handle the request. If the Internet should handle the received request, then the personal proxy server 520 proceeds to step 670 where it uses the stored Internet settings. If the stored Internet settings indicate a direct connection, then the request is relayed onto the Internet. If the stored Internet settings indicate a proxy server connection, then the personal proxy server 520 communicates with the Internet through the specified proxy connection. In such an environment, there is a double layer proxy.

AutoConfig Proxy Firewall Connections

Certain firewalls implement a sophisticated proxying system known as an autoconfig proxy. An autoconfig proxy system uses a file that automatically configures the client system. In an environment that uses an autoconfig proxy, each client system is formed where the autoconfig file may be found. Each client fetches that autoconfig file and uses that autoconfig file to determine how browser requests should be handled. In many embodiments, the autoconfig file contains a short JavaScript program that contains function FindProxyForURL( ) that returns an access method for a particular protocol.

FIG. 7 illustrates an example of a network environment with an autoconfig proxy server system. Referring to FIG. 7, a proxy server 750 connects a network 741 to the Internet 701. The proxy server 750 has an autoconfig file 753 that specifies how to use the proxy server 750. (Note that the autoconfig filed 753 does not need to be stored on the proxy server 750 but it must be accessible by all the clients on the network 741.) Each client system on the network 741, such as computer system 700, must fetch the autoconfig file 753 in order to learn how to access the Internet 701 via the proxy server 750.

FIG. 8 illustrates how a personal proxy server 720 implemented according to the teachings of the present invention operates in an autoconfig proxy environment. Referring to step 810, the personal proxy server 720 first reads the original Internet settings of the Internet browser 710. Next, the personal proxy server 720 stores the original Internet settings at step 820. At step 830, the personal proxy server 720 determines if the Internet settings specify an autoconfig proxy. If the settings specify an autoconfig proxy, then personal proxy server 720 proceeds to step 834 where it obtains the autoconfig file and stores a copy of that original autoconfig file. Next, at step 836, the personal proxy server 720 modifies the autoconfig file. Specifically, the personal proxy server alters the autoconfig file such that the personal proxy server 720 will be accessed if an HTTP request is made.

To fully describe how the personal proxy server 720 modifies an autoconfig rile, an example will be provided. A sample autoconfig file may contain the following JavaScript code:

/*

* HTTP traffic uses proxy1, FFP traffic uses proxy2

* All other protocols directly connect.

*/

function FindProxyForURL(url, hostname)

{

if (shExpMatch(url, “http:*”)) {

return “PROXY proxy1:1234”;

} else if (shExpMatch(ur1, “ftp:*”)) {

return “PROXY proxy2:1235”;

}

return “DIRECT”;

}

The personal proxy server 720 modifies an autoconfig file by renaming an original “FindProxyForURL” procedure and replacing it with a revised FindProxyForURL that directs http requests to the personal proxy server 720 that monitors TCP port 1166. The modified autoconfig file is shown below:

/*

* HTTP traffic uses proxy1, FTP traffic uses proxy2

* All other protocols directly connect.

*/

function FindProxyForGeo(url, hostname)

{

if (shExpMatch(url, “http:*”))

return “PROXY proxy1:1234”;

} else if (shExpMatch(url, “ftp:*”)) {

return “PROXY proxy2:1235”;

}

return “DIRECT”;

}

/* Geocast added body */

function FindProxyForURL(url, host)

{

res = FindProxyForGeo(url, host);

if (shExpMatch(url, “http:*”)) {

return “PROXY localhost:1166;” + res;

/* Person Proxy Program responds to requests at port 1166 */

}

return res;

}

After modifying the autoconfig file (if there was one), the personal proxy server 720 sets the Internet browsers settings to access the personal proxy server 720. If the original settings specified an autoconfig file, then the personal proxy server 720 specifies that the Internet browser 710 should access the personal proxy server 720 to obtain an autoconfig file. When the Internet browser subsequently requests the autoconfig file, the personal proxy server 720 supplies the modified autoconfig file. The Internet browser 710 will use the supplied autoconfig file to determine how requests should be handled. Certain requests will be directed to the personal proxy server 720.

After setting the Internet browser's settings, the personal proxy server 720 is ready to accept requests at step 850. When the personal proxy server 720 receives a request, the personal proxy server 720 determines the appropriated handler to handle the request at step 860. As previously set forth, the personal proxy server 720 may determine the proper handler by examining the URL in the request. After determining the proper handler, the personal proxy server 720 directs the request to the proper handler at step 870. If the appropriate handler is the local cache or data broadcast service, then the personal proxy server 720 proceeds to steps 887 or 883, respectively, to handle the request.

If the Internet should handle the received request, then the personal proxy server 720 proceeds to step 890 where the personal proxy server 720 runs the original autoconfig file. The personal proxy server 720 then uses the results from that original autoconfig file to handle the requests as specified in step 895.

The foregoing has described a multiple source proxy management system. It is contemplated that changes and modifications may be made by one of ordinary skill in the art, to the materials and arrangements of elements of the present invention without departing from the scope of the invention.

Claims (14)

1. A method for handling browser requests for more than one data service with a personal proxy program, said method comprising:

accessing a browser's original Internet connection settings;

storing said browser's original Internet connection settings;

updating the Internet connection settings of said browser to access said personal proxy program;

interfacing said personal proxy program with at least two different types of handlers including a broadcast media handler and an Internet handler;

accepting in said personal proxy program a request from said browser;

selecting one of the handlers to handle said request;

directing said request to said handler; and

receiving multimedia content from said handler for display in said browser.

2. The method of claim 1 wherein directing said request to said handler comprises directing said request to the Internet using said stored Internet connection settings if said Internet should handle said request.

3. The method of claim 1 wherein directing said request to said handler comprises directing said request to a second program running on a computer system that is running said personal proxy program.

4. The method of claim 3 wherein said second program comprises a local cache server if said local cache server should handle said request.

5. The method of claim 1 wherein directing said request to said handler comprises directing said request to a broadcast media receiver.

6. The method of claim 1 wherein said multimedia content is one of a terrestrial radio broadcast, a satellite television broadcast, and a cable television broadcast.

7. An apparatus for browsing data from more than one data service, comprising:

a browser program for browsing accessible data resources using data resource requests;

a first request handler for handling data resource requests;

a second request handler for handling broadcast media requests;

a personal proxy program, said personal proxy program accessing a browser's original Internet connection settings, storing said browser's original Internet connection settings, updating the Internet connection settings of said browser to access said personal proxy program, accepting a request from said Internet browser, selecting one of said request handlers to handle said request, and directing said request to a selected request handler.

8. The apparatus of claim 7 wherein said first request handler comprises the Internet.

9. The apparatus of claim 7 wherein said first request handler comprises directing said request to a second program running on a computer system that is running said personal proxy program.

10. The apparatus of claim 7 wherein said first request handler comprises a local cache server.

11. The apparatus of claim 7 wherein said second request handler comprises a broadcast media receiver.

12. The apparatus of claim 11 wherein said broadcast media receiver is to receive one of a terrestrial radio broadcast, a satellite television broadcast, and a cable television broadcast.

13. A method for handling browser requests from a browser program for more than one data service with a personal proxy program, said method comprising:

accessing an original browser autoconfig file used by said browser program;

creating a modified autoconfig file from said original browser autoconfig file;

instructing said browser program to access said modified autoconfig file;

interfacing said personal proxy program with at least two different handlers including a broadcast media handler and an Internet handler;

accepting in said personal proxy program a request from said browser program;