A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by any one of the patent disclosures, as it appears in the U.S. Patent & Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever.
The present invention relates generally to the processing of electronic content requests, and more specifically, to a reverse proxy mechanism for retrieving electronic content that is associated with a local network.
Society has become extremely dependent upon computers and the electronic content that they contain. As used herein, the term electronic content is broadly defined to include any form or type information that may be electronically read by a computer. For example, the term electronic content includes, but is not limited to, emails, calendar information, word processing documents, pictures, news articles, television programming information, or any other type of information that may be electronically read by a computer. The electronic content may exist in a variety of different content formats, that includes but is not limited to HTML, XML, WML, Microsoft Word®, WordPerfect®, JPEG, GIF, or any other format that can be electronically read by a computer.
Recently, a movement has been made to allow users to remotely access this electronic content information through the use of “highly constrained” devices (e.g., cellular phones, Palm Pilots, PDAs, etc.). For example, Sinia Corporation has developed a product that provides users with the flexibility to remotely connect to a local network (for example, a company's private network) via a Highly Constrained device and to retrieve the user's email and calendar information from potentially anywhere in the world.
Currently, in addition to retrieving electronic content information, there is need to allow users to access the information that is associated with a link within electronic content. For example, in the Web environment, electronic content often includes links (often generally referred to a hypertext links) that are associated with other electronic content. By selecting a particular link within an electronic content, the user's browser automatically communicates with an Internet Domain Name Service (DNS server) to resolve the address of the electronic content and to request the content from a server that is associated with the resolved address.
However, if a link is associated with an electronic content whose address cannot be resolved by an Internet DNS server, for example electronic content that is stored on a local network, the user's browser will not be provided with the correct address of the electronic content and thus will have no way of retrieving the content.
For example, many companies maintain their own local networks, often referred to as local intranets. These local networks provide a means for managing and controlling access to the company's electronic content information from the outside world. For in many local networks, a local DNS server is used to dynamically allocate IP addresses for accessing the local servers that manage a company's electronic content information. Because the IP addresses are only known within the local network, a DNS server outside the local network cannot resolve the address of a link that is associated with an electronic content that is stored within one of the local network servers. Thus, if after remotely retrieving electronic content the user selects a link within the content that is associated with electronic content stored on a local network, the Internet DNS server will not be able to correctly resolve the address of that content, thus causing the user's browser to indicate that the electronic content could not be found or alternatively to provide other, incorrect content based on a “best” guess by the Internet DNS server.
Moreover, local network servers are often assigned local host names that are not known outside the local network. If a user using a highly constrained device selects a link that is associated with a local host name that is not known outside the local network, the Internet DNS server will again not be able to resolve the address of the link and therefore will not be able to retrieve the correct content.
Based on the foregoing, there is a clear need for a mechanism that allows users to remotely access electronic content and to select links within the content to retrieve locally stored content that is associated with a company's local network.
A method and apparatus are provided for processing requests for delivery of electronic content. According to one aspect of the invention, a request for delivery of first electronic content is received, where (1) the request is for delivery of the first electronic content to a destination client that is not on a local network, and (2) the first electronic content includes one or more links that are only resolvable within the local network. In response to the request, the first electronic content is retrieved, and first updated content is generated by modifying the one or more links associated with the first electronic content to include information identifying a server that can be addressed outside the local network. The first updated content is then delivered to the destination client.
According to one aspect of the invention, when a user of the destination client selects one of the modified links, the server information in the modified link causes a message to be sent to the server. If the server is within the local network, then the server may respond to the message by retrieving and delivering second electronic content that was associated with the link before the link was modified. If the server is outside the local network, then the server may send a message to another server within the local network to retrieve and deliver the second electronic content that was associated with the link before the link was modified. Links within the second electronic content may be modified in the same manner as were the links in the first electronic content.
The invention also encompasses a computer-readable medium, a computer data signal embodied in a carrier wave, and an apparatus configured to carry out the foregoing steps. Other features and aspects will become apparent from the following description and the appended claims.
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
A reverse proxy mechanism is provided for retrieving electronic content that is associated with a local network. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.
Operational Context
A reverse proxy mechanism is provided for retrieving, from outside a local network, electronic content that is associated with a local network. In one embodiment, a reverse proxy server is connected to a company's local network and configured to receive and resolve requests from clients outside the local network for locally stored electronic content. In response to receiving a request for electronic content that is associated with the local network, the reverse proxy server retrieves the content and generates a set of updated content by modifying the links associated with the electronic content to include information that identifies the reverse proxy server. The updated content is then delivered to the requesting client. By modifying the links to include information that identifies the reverse proxy server, when the user subsequently selects a link within the modified content, the reverse proxy server is guaranteed to receive the request. Thereafter, the reverse proxy server resolves the address of the content associated with the link, retrieves the content at that address, and again generates updated content by again modifying the links associated with that electronic content to include information that identifies the reverse proxy server. This process may be performed repeatedly to provide remote access to the locally stored electronic content.
Local network 116 is a network system comprising any number of network devices (e.g., servers, personal computers, workstations, printers, etc.). Local Network 116 may form part of a private LAN or WAN that is configured for communicating with the outside world through reverse proxy server 106. In one embodiment, network 228 is configured as a packet-switched network that can support such protocols as the HyperText Transport Protocol (HTTP). In certain embodiments, a firewall 118 may be configured to provide protection against unauthorized clients from connecting to network 116 and other devices that are logically behind the firewall.
Local Servers 108-114 represent computers, or groups of hardware or software components that execute as one or more computer systems. Local servers 108-114 are configured to manage and store electronic content, some of which may include links to other electronic content within local network 116. For example, local servers 108-114 may be configured as internal Web servers. In certain embodiments, a local DNS server is configured to dynamically assign IP addresses to local servers 108-114. For example, one of the local servers 108-114 may act as local DNS to dynamically assign local IP addresses to the different devices that are connected to local network 116.
Reverse proxy server 106 is a computer, or a group of hardware or software components or processes that cooperate or execute in one or more computer systems. The reverse proxy server 106 is coupled to the local network 116 and is configured as a portal device that controls remote access to the local network 116 and local servers 108-114. Reverse proxy server 106 may be logically located within firewall 118 or may be configured outside firewall 118 and thus potentially require authentication to access the resources of local network 116. In one embodiment, reverse proxy server 106 includes a servlet that is configured to respond to requests from clients that are located outside of local network 116. In certain embodiments, reverse proxy server 106 is configured to authentication and authorization, verifies identities, grants or denies authorizations, and logs accounting records.
As will be described in further detail below, reverse proxy server 106 is configured to retrieve electronic content from local servers 108-114 and to update (“wrap”) the links within the content to include the address of reverse proxy server 106.
In certain embodiments, a WAP gateway device 104 is used to perform protocol conversions between protocols used within local network 116 and those used by clients outside local network 116. For example, WAP gateway 104 may be configured to translate messages from WAP to HTTP and from HTTP to WAP.
In one embodiment, client 102 is a cellular phone, Palm Pilot, or other highly constrained device, that is capable of communicating with reverse proxy server 106 via WAP gateway 104. Client 102 is used by or associated with a user 122. Although one client 102 is shown in
As depicted, client 102 is connected to a non-local network (i.e., a network other than local network 116) that does not have the ability to resolve address information that is associated with electronic content that is maintained with local network 116. For example, non-local network 120 may represent a private or public network, such as the Internet, which does not have the means for resolving links that are associated with electronic content that is maintained with local network 116. In addition, non-local network 120 may be formed using a variety of different mediums, including but not limited to electrical wire or cable, optical, or wireless connections.
Processing Electronic Content Requests
At block 302, reverse proxy server 106 receives a request from a client 102 for delivery of electronic content. For example, the received request may be for the delivery of electronic document 200 shown in
At block 304, reverse proxy 106 determines the location of the electronic content within local network 116. For example, using a local DNS, reverse proxy server 106 may determine that the requested electronic document 200 is located on local server 108.
At block 306, reverse proxy server 106 retrieves the electronic content from within the local network 116.
At block 308, reverse proxy server 106 identifies any links that are contained with the electronic content. For example, in retrieving electronic document 200, reverse proxy server 106 identifies that the electronic document 200 includes links 202, 204 and 206. In this example, link 202 includes an address portion 208 that corresponds to an address that is resolvable outside local network 116 (i.e., resolvable by the Internet DNS). Link 204 contains an address portion 210 that includes a numerical IP address (“10.3.4.5”) that was assigned by the local DNS and thus is not resolvable outside local network 116. Link 206 contains an address portion 212 that includes an unqualified symbolic name (“www/stocks”) that is an internal name within local network 116 and thus also not resolvable outside local network 116.
At block 310, reverse proxy server 106 determines whether the retrieved electronic content contains any links that need to be wrapped. For example, reverse proxy server 106 determines that links 202 and 204 are not resolvable outside local network 116 and thus addresses 210 and 212 need to be wrapped with information identifying reverse proxy server 106. In certain embodiments, although a link is resolvable outside local network 116, for example link 202, reverse proxy automatically wraps the link's address (i.e., address 208) to require any request based on selection of the link to travel via reverse proxy server 106. If the reverse proxy server 106 determines that no links need to be wrapped, at block 318, the electronic content is delivered back to the requesting client unmodified.
Alternatively, if the reverse proxy server 106 determines that one or more links need to be wrapped, at block 312, reverse proxy server 106 generates a modified electronic content based on the contents of the electronic content that was retrieved.
At block 314, the reverse proxy server 106 updates any links that need to be wrapped and stores them within the modified electronic content. For example, as illustrated in
At block 316, reverse proxy server 106 delivers the modified electronic content back to the requesting client. Thereafter, when user 122 selects a wrapped link within the modified electronic content, the request for the electronic content is automatically forwarded first to reverse proxy server 106.
As shown by broken return arrow 318, the process of the electronic content requests can be recursively or repeatedly performed.
Initiating Electric Content Requests
According to one embodiment, to access electronic content within the local network, the clients initially connect to the reverse proxy server. In one embodiment, a set of one or more links are stored as “favorites” within the browser application executing on the client. By selecting one of these links, a request is automatically sent to the reverse proxy server to initiate the process of providing access to locally stored electronic content via links that are only resolvable within the local network. For example, a user may store a URL that is linked to a Web page or “Deck” (a set of related pages transmitted as a group in response to a single request) that is contained on reverse proxy server 106 and which provides an index into electronic content (for example, emails, financial reports, corporate directories, etc.) that are located within local network 116. The user may then select one of these links to begin accessing content that is stored within the local network 116.
In one embodiment, when a client initially connects to the reverse proxy server the reverse proxy server verifies that the address (URL) associated with the link is fully qualified. As used herein, the term “fully qualified” means that the URL contains a “scheme,” typically “http:” or “https:,” a host delimiter (V″), and a hostname, plus the full path (list of directories) to the named resource. In one embodiment, to verify that the URL of the link is fully qualified the reverse proxy server examines the internal address portion of the URL to verify that it is resolvable by the reverse proxy server. The following presents one example of the steps that a user may be perform to initially connect to the reverse proxy server. First, the user creates a “bookmark” containing the fully qualified URL of a document or service of interest. In this example, the document resides on a server (internal1) that is on their local intranet, and is invisible to external clients and Internet DNS servers outside their local intranet. For explanation purposes, the bookmark URL created by the user is as follows:
http://internal1.company.com/directory.wml.
For further explanation purposes, the bookmark URL http://internal1.company.com/directory.wml. is assumed to be associated with a document on the local intranet that contains relative (non-fully qualified) links to weather.wml, stocks.wml, and time.wml:
<wml><card>
<a href=“weather.wml”>Weather</a><br/>
<a href=“stocks.wml”>Stocks</a><br/>
<a href=“time.wml”>Time</a><br/>
</card></wml>
It is further assumed that the reverse proxy server is accessible from the Internet, and that it resides at https://www.company.com/RevProxy. (“reverse proxy server URL”). To cause the user's client to initially connect to the reverse proxy server, the bookmark URL must be wrapped with the reverse proxy server URL. A variety of methods may be used to wrap bookmark URLs with the reverse proxy server URL. For example, in one embodiment, software executing on the user's client is configured to automatically wrap the reverse proxy server URL around the bookmark URL in the user's bookmark list. For example, a plug-in or other software module may be configured on the client machine to allow the user to select specific bookmarks that are to be wrapped with information identifying the reverse proxy server. By selecting a desired set of links the user can create a list of “wrapped” links that are automatically sent to the reverse proxy server when selected.
For example, by selecting the bookmark URL above the user may cause the bookmark URL to be wrapped to generate the “wrapped” URL:
https://www.company.com/RevProxy/http://internal1.company.com/directory.wml.
Thereafter, when the user accesses (selects) the wrapped URL, the Reverse Proxy loads the document from the local intranet that is located at the fully qualified URL http://internal1.company.com/directory.wml and rewrites all of the links that are contained within the document. For example, the non-fully qualified link weather.wml is merge with the current fully qualified URL (http://internal1.company.com/directory.wml) to generate fully qualified link http://internal1.company.com/weather.wml.
Next, the fully qualified link is wrapped with the reverse proxy server URL by concatenating the URL of the Reverse Proxy (https://www.company.com/RevProxy), and a forward slash (“/”), to the fully qualified link to create the modified URL: https://www.company.com/RevProxy/http://internal1.company.com/weather.wml
This process may then be performed on each of other relative non-fully qualified links (weather.wml, stocks.wml, and time.wml) to generate the following fully resolvable document:
<wml><card>
<a
href=“https://www.company.com/RevProxy/http://internal1.company.com/weather.wml”>Weather</a><br/>
<a
href=“https://www.company.com/RevProxy/http://internal1.company.com/stocks.wml”>Stocks</a><br/>
<a
href=“https://www.company.com/RevProxy/http://internal1.company.com/time.wml”>Time</a><br/>
</card></wml>
Thereafter, when the user clicks on (selects) any of these links, the wrapping process is repeated for the next set of links that are contained within the retrieved document.
As previously indicated, several methods may be used to rewrite the URLs that are associated with a particular link. For example, the following Java code provides one example of how the reverse proxy server can ensure that the reverse proxy server is presented with fully qualified internal URLs in response to a user activating (e.g., selecting) a link in a page that was previously returned by the reverse proxy server. In this example, it is assumed that the variable refURL is an object of class java.net.URL that contains the URL of the document currently being accessed. (http://internal1.company.com/directory.wml). It is also assumed that the String variable path contains the URL currently being examined (“weather.wml”) and that the String variable revProxyURL contains the address of the Reverse Proxy itself (“https://www.company.com/RevProxy”).
Then, for each URL encountered, the following steps are performed to create and return the fully qualified and rewritten URL:
URL temp=new URL(refURL, path);
StringBuffer sb=new StringBuffer(revProxyURL);
sb.append(“/”)
sb.append(temp.toString( ); return sb.toString( )
Decorated Modified Electronic Documents
In certain embodiments, in generating the updated content the reverse proxy mechanism further modifies (“Decorates”) the updated content by including one or more additional links that did not exist in the content at the time it was retrieved. In one embodiment, the one or more additional links provide a user with the ability to jump to a particular page that was not previously accessible via the originally retrieved content.
In other embodiments, the additional links are to content that is maintained outside the local network. For example, additional link 272 may be a link to content that is located on a server that provides global weather reports and which is outside the local network. In one embodiment, the additional links associated with content that is located outside the local network are wrapped to include information that identifies the reverse proxy server whereby selecting the link guarantees that the reverse proxy server will receive the corresponding request.
Different Clients and Multiple Servers
In the embodiments described above, the client that sends the request for the content is the same client to which the modified content is delivered. However, in alternative embodiments, the client that sends the request for the content may request the content to be sent to a different client. In such an embodiment, the client sending the request may be part of the local network, while the client to which the modified content is delivered is outside the local network.
In addition, the embodiments described above refer to a reverse proxy server that is able to both (1) be addressed from outside the local network, and (2) address content within the local network. However, in alternative embodiments, these functions may be performed by two or more servers. For example, a first server outside the local network may receive a request and forward it to a second server within the local network. The second server may retrieve the content, modify the links to refer to the first server, and deliver the modified content to the client. Selection of the modified links would cause a message to be sent to the first server again, and the process would be repeated.
Alternatively, the second server can send the unmodified content to the first server, and the first server can modify the links with address information from the first server. Selection of the modified links would cause a message to be sent to the first server again, and the process would be repeated.
Computer system 400 may be coupled via bus 402 to a display 412, such as a cathode ray tube (CRT), for displaying information to a computer user. An input device 414, including alphanumeric and other keys, is coupled to bus 402 for communicating information and command selections to processor 404. Another type of user input device is cursor control 416, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 404 and for controlling cursor movement on display 412. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane.
The invention is related to the use of computer system 400 for implementing the techniques described herein. According to one embodiment of the invention, those techniques are performed by computer system 400 in response to processor 404 executing one or more sequences of one or more instructions contained in main memory 406. Such instructions may be read into main memory 406 from another computer-readable medium, such as storage device 410. Execution of the sequences of instructions contained in main memory 406 causes processor 404 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware circuitry and software.
The term “computer-readable medium” as used herein refers to any medium that participates in providing instructions to processor 404 for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device 410. Volatile media includes dynamic memory, such as main memory 406. Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 402. Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications.
Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punchcards, papertape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read.
Various forms of computer readable media may be involved in carrying one or more sequences of one or more instructions to processor 404 for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system 400 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal. An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus 402. Bus 402 carries the data to main memory 406, from which processor 404 retrieves and executes the instructions. The instructions received by main memory 406 may optionally be stored on storage device 410 either before or after execution by processor 404.
Computer system 400 also includes a communication interface 418 coupled to bus 402. Communication interface 418 provides a two-way data communication coupling to a network link 420 that is connected to a local network 422. For example, communication interface 418 may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface 418 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, communication interface 418 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.
Network link 420 typically provides data communication through one or more networks to other data devices. For example, network link 420 may provide a connection through local network 422 to a host computer 424 or to data equipment operated by an Internet Service Provider (ISP) 426. ISP 426 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 428. Local network 422 and Internet 428 both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on network link 420 and through communication interface 418, which carry the digital data to and from computer system 400, are exemplary forms of carrier waves transporting the information.
Computer system 400 can send messages and receive data, including program code, through the network(s), network link 420 and communication interface 418. In the Internet example, a server 430 might transmit a requested code for an application program through Internet 428, ISP 426, local network 422 and communication interface 418.
The received code may be executed by processor 404 as it is received, and/or stored in storage device 410, or other non-volatile storage for later execution. In this manner, computer system 400 may obtain application code in the form of a carrier wave.
Alternatives, Extensions
In describing certain embodiments of the invention, several drawing figures have been used for explanation purposes. However, the invention is not limited to any particular. The invention includes other contexts and applications in which the mechanisms and processes described herein is available to other mechanisms, methods, programs, and processes. Thus, the specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
For example, although client 102 was described as a highly constrained device that connected to reverse proxy server 106 via a wireless connection, in certain embodiments, client may be configured as personal computer, Lap top, workstation or other form of computer system that can connect to reverse proxy server other than through a wireless connection. For example, client 102 may instead be configured as a lap-top computer that is connected directly or indirectly (i.e., through an Internet Service Provider) to the Internet thus providing a communication path between client 102 and reverse proxy server 106 that does not include a gateway mechanism such as WAP gateway 104.
In addition, in this disclosure, certain process steps are set forth in a particular order, and alphabetic and alphanumeric labels are used to identify certain steps. Unless specifically stated in the disclosure, embodiments of the invention are not limited to any particular order of carrying out such steps. In particular, the labels are used merely for convenient identification of steps, and are not intended to imply, specify or require a particular order of carrying out such steps.
Number | Name | Date | Kind |
---|---|---|---|
4887212 | Zamora et al. | Dec 1989 | A |
5111398 | Nunberg et al. | May 1992 | A |
5115466 | Presttun | May 1992 | A |
5130993 | Gutman et al. | Jul 1992 | A |
5146221 | Whiting et al. | Sep 1992 | A |
5329619 | Page et al. | Jul 1994 | A |
5392390 | Crozier | Feb 1995 | A |
5418854 | Kaufman et al. | May 1995 | A |
5418908 | Keller et al. | May 1995 | A |
5425079 | Noda et al. | Jun 1995 | A |
5483352 | Fukuyama | Jan 1996 | A |
5485161 | Vaughn | Jan 1996 | A |
5519433 | Lappington et al. | May 1996 | A |
5519606 | Frid-Nielsen et al. | May 1996 | A |
5543789 | Behr et al. | Aug 1996 | A |
5544061 | Morimoto et al. | Aug 1996 | A |
5561446 | Montlick | Oct 1996 | A |
5574906 | Morris | Nov 1996 | A |
5579489 | Dornier et al. | Nov 1996 | A |
5588009 | Will | Dec 1996 | A |
5592470 | Rudrapatna et al. | Jan 1997 | A |
5623406 | Ichibah | Apr 1997 | A |
5623661 | Hon | Apr 1997 | A |
5628005 | Hurvig | May 1997 | A |
5630081 | Rybicki et al. | May 1997 | A |
5638508 | Kanai et al. | Jun 1997 | A |
5640577 | Scharmer | Jun 1997 | A |
5644709 | Austin | Jul 1997 | A |
5647002 | Brunson | Jul 1997 | A |
5649195 | Scott et al. | Jul 1997 | A |
5650800 | Benson | Jul 1997 | A |
5666397 | Lamons et al. | Sep 1997 | A |
5666553 | Crozier | Sep 1997 | A |
5682524 | Freund et al. | Oct 1997 | A |
5684990 | Boothby | Nov 1997 | A |
5694596 | Campbell | Dec 1997 | A |
5699255 | Ellis et al. | Dec 1997 | A |
5701423 | Crozier | Dec 1997 | A |
5706509 | Man-Hak Tso | Jan 1998 | A |
5710922 | Alley et al. | Jan 1998 | A |
5727202 | Kucala | Mar 1998 | A |
5727950 | Cook et al. | Mar 1998 | A |
5729735 | Meyering | Mar 1998 | A |
5729739 | Cantin et al. | Mar 1998 | A |
5729743 | Squibb | Mar 1998 | A |
5742792 | Yanai et al. | Apr 1998 | A |
5745750 | Porcaro | Apr 1998 | A |
5745906 | Squibb | Apr 1998 | A |
5757920 | Misra et al. | May 1998 | A |
5758150 | Bell et al. | May 1998 | A |
5758355 | Buchanan | May 1998 | A |
5764899 | Eggleston et al. | Jun 1998 | A |
5768480 | Crawford, Jr. et al. | Jun 1998 | A |
5768597 | Simm | Jun 1998 | A |
5771354 | Crawford | Jun 1998 | A |
5778346 | Frid-Nielsen et al. | Jul 1998 | A |
5778361 | Nanjo et al. | Jul 1998 | A |
5778367 | Wesinger et al. | Jul 1998 | A |
5778388 | Kawamura et al. | Jul 1998 | A |
5781901 | Kuzma | Jul 1998 | A |
5787247 | Norin et al. | Jul 1998 | A |
5787262 | Shakib et al. | Jul 1998 | A |
5794228 | French et al. | Aug 1998 | A |
5804803 | Cragun et al. | Sep 1998 | A |
5809497 | Freund et al. | Sep 1998 | A |
5812773 | Norin | Sep 1998 | A |
5812793 | Shakib et al. | Sep 1998 | A |
5818437 | Grover et al. | Oct 1998 | A |
5826245 | Sandberg-Diment | Oct 1998 | A |
5832489 | Kucala | Nov 1998 | A |
5832518 | Mastors | Nov 1998 | A |
5832519 | Bowen et al. | Nov 1998 | A |
5845283 | Williams et al. | Dec 1998 | A |
5859973 | Carpenter | Jan 1999 | A |
5864864 | Lerner | Jan 1999 | A |
5875296 | Shi et al. | Feb 1999 | A |
5884323 | Hawkins et al. | Mar 1999 | A |
5884325 | Bauer et al. | Mar 1999 | A |
5893119 | Squibb | Apr 1999 | A |
5896321 | Miller et al. | Apr 1999 | A |
5897640 | Veghte et al. | Apr 1999 | A |
5897642 | Capossela et al. | Apr 1999 | A |
5903723 | Beck et al. | May 1999 | A |
5907793 | Reams | May 1999 | A |
5923756 | Shambroom | Jul 1999 | A |
5923848 | Goodhand et al. | Jul 1999 | A |
5926816 | Bauer et al. | Jul 1999 | A |
5933653 | Ofek | Aug 1999 | A |
5933778 | Buhrmann et al. | Aug 1999 | A |
5933816 | Zeanah et al. | Aug 1999 | A |
5935262 | Barrett et al. | Aug 1999 | A |
5937405 | Campbell | Aug 1999 | A |
5941944 | Messerly | Aug 1999 | A |
5943676 | Boothby | Aug 1999 | A |
5944787 | Zoken | Aug 1999 | A |
5946615 | Holmes et al. | Aug 1999 | A |
5948066 | Whalen et al. | Sep 1999 | A |
5951636 | Zerber | Sep 1999 | A |
5961572 | Craport et al. | Oct 1999 | A |
5961590 | Mendez et al. | Oct 1999 | A |
5968131 | Mendez et al. | Oct 1999 | A |
5970149 | Johnson | Oct 1999 | A |
5970490 | Morgenstern | Oct 1999 | A |
5971277 | Cragun et al. | Oct 1999 | A |
5974238 | Chase, Jr. | Oct 1999 | A |
5974563 | Beeler, Jr. | Oct 1999 | A |
5987381 | Oshizawa | Nov 1999 | A |
5987609 | Hasebe | Nov 1999 | A |
5995118 | Masuda | Nov 1999 | A |
6000000 | Hawkins et al. | Dec 1999 | A |
6006215 | Retallick | Dec 1999 | A |
6006274 | Hawkins et al. | Dec 1999 | A |
6009462 | Birrell et al. | Dec 1999 | A |
6012063 | Bodnar | Jan 2000 | A |
6012088 | Li et al. | Jan 2000 | A |
6014695 | Yamashita et al. | Jan 2000 | A |
6016394 | Walker | Jan 2000 | A |
6016478 | Zhang et al. | Jan 2000 | A |
6023708 | Mendez et al. | Feb 2000 | A |
6023723 | McCormick et al. | Feb 2000 | A |
6026414 | Anglin | Feb 2000 | A |
6034621 | Kaufman | Mar 2000 | A |
6038665 | Bolt et al. | Mar 2000 | A |
6044381 | Boothby et al. | Mar 2000 | A |
6049776 | Donnelly et al. | Apr 2000 | A |
6052735 | Ulrich et al. | Apr 2000 | A |
6058399 | Morag et al. | May 2000 | A |
6061790 | Bodnar | May 2000 | A |
6061796 | Chen et al. | May 2000 | A |
6063134 | Peters et al. | May 2000 | A |
6064880 | Alanara | May 2000 | A |
6065018 | Beier et al. | May 2000 | A |
6073133 | Chrabaszcz | Jun 2000 | A |
6076109 | Kikinis | Jun 2000 | A |
6078960 | Ballard | Jun 2000 | A |
6081900 | Subramaniam et al. | Jun 2000 | A |
6094618 | Harada | Jul 2000 | A |
6101480 | Conmy et al. | Aug 2000 | A |
6108330 | Bhatia et al. | Aug 2000 | A |
6108703 | Leighton et al. | Aug 2000 | A |
6112024 | Almond et al. | Aug 2000 | A |
6115797 | Kanda et al. | Sep 2000 | A |
6131096 | Ng et al. | Oct 2000 | A |
6131116 | Riggins et al. | Oct 2000 | A |
6141011 | Bodnar et al. | Oct 2000 | A |
6141621 | Piwowarski et al. | Oct 2000 | A |
6141659 | Barker et al. | Oct 2000 | A |
6141664 | Boothby | Oct 2000 | A |
6145088 | Stevens | Nov 2000 | A |
6148260 | Musk et al. | Nov 2000 | A |
6151606 | Mendez | Nov 2000 | A |
6157630 | Adler et al. | Dec 2000 | A |
6163773 | Kishi | Dec 2000 | A |
6163779 | Mantha et al. | Dec 2000 | A |
6163844 | Duncan et al. | Dec 2000 | A |
6167120 | Kikinis | Dec 2000 | A |
6173310 | Yost et al. | Jan 2001 | B1 |
6173311 | Hassett et al. | Jan 2001 | B1 |
6182117 | Christie et al. | Jan 2001 | B1 |
6182141 | Blum et al. | Jan 2001 | B1 |
6185598 | Farber et al. | Feb 2001 | B1 |
6189030 | Kirsch et al. | Feb 2001 | B1 |
6189096 | Haverty | Feb 2001 | B1 |
6195695 | Cheston et al. | Feb 2001 | B1 |
6195794 | Buxton | Feb 2001 | B1 |
6202085 | Benson et al. | Mar 2001 | B1 |
6205448 | Kruglikov et al. | Mar 2001 | B1 |
6209034 | Gladwin et al. | Mar 2001 | B1 |
6212529 | Boothby et al. | Apr 2001 | B1 |
6212556 | Arunachalam | Apr 2001 | B1 |
6216131 | Liu et al. | Apr 2001 | B1 |
6219680 | Bernardo et al. | Apr 2001 | B1 |
6219694 | Lazaridis et al. | Apr 2001 | B1 |
6223187 | Boothby et al. | Apr 2001 | B1 |
6226650 | Mahajan et al. | May 2001 | B1 |
6233565 | Lewis et al. | May 2001 | B1 |
6233589 | Balcha et al. | May 2001 | B1 |
6243760 | Armbruster et al. | Jun 2001 | B1 |
6247048 | Greer et al. | Jun 2001 | B1 |
6247135 | Feague | Jun 2001 | B1 |
6249690 | Mashiko | Jun 2001 | B1 |
6252547 | Perry et al. | Jun 2001 | B1 |
6255989 | Munson et al. | Jul 2001 | B1 |
6256750 | Takeda | Jul 2001 | B1 |
6260124 | Crockett et al. | Jul 2001 | B1 |
6272545 | Flanagin et al. | Aug 2001 | B1 |
6275831 | Bodnar et al. | Aug 2001 | B1 |
6278941 | Yokoyama | Aug 2001 | B1 |
6282435 | Wagner et al. | Aug 2001 | B1 |
6282698 | Baker et al. | Aug 2001 | B1 |
6285889 | Nykanen et al. | Sep 2001 | B1 |
6286029 | Delph | Sep 2001 | B1 |
6286053 | Van Peursem et al. | Sep 2001 | B1 |
6286085 | Jouenne et al. | Sep 2001 | B1 |
6292743 | Pu et al. | Sep 2001 | B1 |
6292905 | Wallach et al. | Sep 2001 | B1 |
6295502 | Hancock et al. | Sep 2001 | B1 |
6295541 | Bodnar et al. | Sep 2001 | B1 |
6304881 | Halim et al. | Oct 2001 | B1 |
6317755 | Rakers et al. | Nov 2001 | B1 |
6321236 | Zollinger et al. | Nov 2001 | B1 |
6324467 | Machii et al. | Nov 2001 | B1 |
6324526 | D'Agostino | Nov 2001 | B1 |
6324544 | Alam et al. | Nov 2001 | B1 |
6327533 | Chou | Dec 2001 | B1 |
6329680 | Yoshida et al. | Dec 2001 | B1 |
6330568 | Boothby et al. | Dec 2001 | B1 |
6332158 | Risley et al. | Dec 2001 | B1 |
6333973 | Smith et al. | Dec 2001 | B1 |
6338096 | Ukelson | Jan 2002 | B1 |
6339710 | Suzuki | Jan 2002 | B1 |
6341316 | Kloba et al. | Jan 2002 | B1 |
6345308 | Abe | Feb 2002 | B1 |
6349336 | Sit et al. | Feb 2002 | B1 |
6353448 | Scarborough et al. | Mar 2002 | B1 |
6356910 | Zellweger | Mar 2002 | B1 |
6356961 | Oprescu-Surcobe | Mar 2002 | B1 |
6360252 | Rudy et al. | Mar 2002 | B1 |
6360330 | Mutalik et al. | Mar 2002 | B1 |
6363249 | Nordeman et al. | Mar 2002 | B1 |
6363412 | Niwa et al. | Mar 2002 | B1 |
6374250 | Ajtai et al. | Apr 2002 | B2 |
6381700 | Yoshida | Apr 2002 | B1 |
6389462 | Cohen et al. | May 2002 | B1 |
6396482 | Griffin et al. | May 2002 | B1 |
6397307 | Ohran | May 2002 | B2 |
6397351 | Miller et al. | May 2002 | B1 |
6401104 | LaRue et al. | Jun 2002 | B1 |
6405218 | Boothby | Jun 2002 | B1 |
6418309 | Moon et al. | Jul 2002 | B1 |
6434627 | Millet et al. | Aug 2002 | B1 |
6437818 | Ludwig et al. | Aug 2002 | B1 |
6449622 | LaRue et al. | Sep 2002 | B1 |
6453392 | Flynn, Jr. | Sep 2002 | B1 |
6457062 | Pivowar et al. | Sep 2002 | B1 |
6460036 | Herz | Oct 2002 | B1 |
6462644 | Howell et al. | Oct 2002 | B1 |
6463464 | Lazaridis et al. | Oct 2002 | B1 |
6466967 | Landsman et al. | Oct 2002 | B2 |
6473621 | Heie | Oct 2002 | B1 |
6480896 | Brown et al. | Nov 2002 | B1 |
6484143 | Swildens et al. | Nov 2002 | B1 |
6487560 | LaRue et al. | Nov 2002 | B1 |
6490655 | Kershaw | Dec 2002 | B1 |
6496944 | Hsiao et al. | Dec 2002 | B1 |
6499108 | Johnson | Dec 2002 | B1 |
6507891 | Challenger et al. | Jan 2003 | B1 |
6516327 | Zondervan et al. | Feb 2003 | B1 |
6519452 | Agostino et al. | Feb 2003 | B1 |
6523063 | Miller et al. | Feb 2003 | B1 |
6523079 | Kikinis et al. | Feb 2003 | B2 |
6532588 | Porter | Mar 2003 | B1 |
6535743 | Kennedy et al. | Mar 2003 | B1 |
6539494 | Abramson et al. | Mar 2003 | B1 |
6542933 | Durst, Jr. et al. | Apr 2003 | B1 |
6546425 | Hanson et al. | Apr 2003 | B1 |
6549933 | Barrett et al. | Apr 2003 | B1 |
6553375 | Huang et al. | Apr 2003 | B1 |
6553410 | Kikinis | Apr 2003 | B2 |
6553413 | Lewin et al. | Apr 2003 | B1 |
6567850 | Freishtat et al. | May 2003 | B1 |
6567857 | Gupta et al. | May 2003 | B1 |
6581065 | Rodkin et al. | Jun 2003 | B1 |
6584454 | Hummel et al. | Jun 2003 | B1 |
6589290 | Maxwell et al. | Jul 2003 | B1 |
6591266 | Li et al. | Jul 2003 | B1 |
6591306 | Redlich | Jul 2003 | B1 |
6591362 | Li | Jul 2003 | B1 |
6597700 | Golikeri et al. | Jul 2003 | B2 |
6601143 | Lamparter | Jul 2003 | B1 |
6609005 | Chern | Aug 2003 | B1 |
6636894 | Short et al. | Oct 2003 | B1 |
6640302 | Subramaniam et al. | Oct 2003 | B1 |
6643707 | Booth | Nov 2003 | B1 |
6647399 | Zaremba | Nov 2003 | B2 |
6654746 | Wong et al. | Nov 2003 | B1 |
6665721 | Hind et al. | Dec 2003 | B1 |
6671724 | Pandya et al. | Dec 2003 | B1 |
6671757 | Multer et al. | Dec 2003 | B1 |
6684206 | Chen et al. | Jan 2004 | B2 |
6684302 | Kershaw | Jan 2004 | B2 |
6694335 | Hopmann et al. | Feb 2004 | B1 |
6694336 | Multer et al. | Feb 2004 | B1 |
6701316 | Li et al. | Mar 2004 | B1 |
6704849 | Steegmans | Mar 2004 | B2 |
6714987 | Amin et al. | Mar 2004 | B1 |
6718348 | Novak et al. | Apr 2004 | B1 |
6718390 | Still et al. | Apr 2004 | B1 |
6725239 | Sherman et al. | Apr 2004 | B2 |
6728530 | Heinonen et al. | Apr 2004 | B1 |
6732101 | Cook | May 2004 | B1 |
6732264 | Sun et al. | May 2004 | B1 |
6738789 | Multer et al. | May 2004 | B2 |
6741851 | Lee et al. | May 2004 | B1 |
6745040 | Zimmerman | Jun 2004 | B2 |
6757696 | Multer et al. | Jun 2004 | B2 |
6757698 | McBride et al. | Jun 2004 | B2 |
6757712 | Bastian et al. | Jun 2004 | B1 |
6781575 | Hawkins et al. | Aug 2004 | B1 |
6795848 | Border et al. | Sep 2004 | B1 |
6799214 | Li | Sep 2004 | B1 |
6804690 | Dysert et al. | Oct 2004 | B1 |
6804783 | Wesinger et al. | Oct 2004 | B1 |
6810411 | Coughlin et al. | Oct 2004 | B1 |
6812961 | Parulski et al. | Nov 2004 | B1 |
6813487 | Trommelen | Nov 2004 | B1 |
6816481 | Adams et al. | Nov 2004 | B1 |
6829654 | Jungck | Dec 2004 | B1 |
6836657 | Ji et al. | Dec 2004 | B2 |
6836765 | Sussman | Dec 2004 | B1 |
6839568 | Suzuki | Jan 2005 | B2 |
6842695 | Tu et al. | Jan 2005 | B1 |
6850944 | MacCall et al. | Feb 2005 | B1 |
6868451 | Peacock | Mar 2005 | B1 |
6870921 | Elsey et al. | Mar 2005 | B1 |
6886013 | Beranek | Apr 2005 | B1 |
6892225 | Tu et al. | May 2005 | B1 |
6892245 | Crump et al. | May 2005 | B1 |
6904449 | Quinones | Jun 2005 | B1 |
6904460 | Raciborski et al. | Jun 2005 | B1 |
6920488 | Le Pennec et al. | Jul 2005 | B1 |
6925476 | Multer | Aug 2005 | B1 |
6925477 | Champagne et al. | Aug 2005 | B1 |
6934767 | Jellinek | Aug 2005 | B1 |
6944651 | Onyon et al. | Sep 2005 | B2 |
6944676 | Armbruster et al. | Sep 2005 | B1 |
6954660 | Aoyama | Oct 2005 | B2 |
6954783 | Bodwell et al. | Oct 2005 | B1 |
6963914 | Breitbart et al. | Nov 2005 | B1 |
6973299 | Apfel | Dec 2005 | B2 |
6996617 | Aiken et al. | Feb 2006 | B1 |
6996631 | Aiken et al. | Feb 2006 | B1 |
7003555 | Jungck | Feb 2006 | B1 |
7003668 | Berson et al. | Feb 2006 | B2 |
7007041 | Multer et al. | Feb 2006 | B2 |
7010578 | Lewin et al. | Mar 2006 | B1 |
7016964 | Still et al. | Mar 2006 | B1 |
7023868 | Rabenko et al. | Apr 2006 | B2 |
7035878 | Multer et al. | Apr 2006 | B1 |
7039656 | Tsai et al. | May 2006 | B1 |
7051275 | Gupta et al. | May 2006 | B2 |
7054594 | Bloch et al. | May 2006 | B2 |
7054952 | Schwerdtfeger et al. | May 2006 | B1 |
7082476 | Cohen et al. | Jul 2006 | B1 |
7085817 | Tock et al. | Aug 2006 | B1 |
7096418 | Singhal et al. | Aug 2006 | B1 |
7099915 | Tenereillo et al. | Aug 2006 | B1 |
7103794 | Malcolm et al. | Sep 2006 | B2 |
7107043 | Aoyama | Sep 2006 | B2 |
7110954 | Yung et al. | Sep 2006 | B2 |
7116681 | Hovell et al. | Oct 2006 | B1 |
7146161 | Chou | Dec 2006 | B2 |
7162494 | Arellano | Jan 2007 | B2 |
7167728 | Wagner et al. | Jan 2007 | B1 |
7181628 | Sato et al. | Feb 2007 | B2 |
7197574 | Ishiyama | Mar 2007 | B1 |
7233791 | Gilbert et al. | Jun 2007 | B2 |
7249175 | Donaldson | Jul 2007 | B1 |
7269433 | Vargas et al. | Sep 2007 | B2 |
7284051 | Okano et al. | Oct 2007 | B1 |
7289964 | Bowman-Amuah | Oct 2007 | B1 |
7293074 | Jellinek et al. | Nov 2007 | B1 |
7315826 | Guheen et al. | Jan 2008 | B1 |
7317907 | Linkert et al. | Jan 2008 | B2 |
7343568 | Jiang et al. | Mar 2008 | B2 |
7349719 | Buniatyan | Mar 2008 | B2 |
7356559 | Jacobs et al. | Apr 2008 | B1 |
7363233 | Levine | Apr 2008 | B1 |
7383061 | Hawkins | Jun 2008 | B1 |
7392034 | Westman et al. | Jun 2008 | B2 |
7415486 | Multer et al. | Aug 2008 | B2 |
7440746 | Swan | Oct 2008 | B1 |
7447743 | Jordan, Jr. | Nov 2008 | B1 |
7454500 | Hsu et al. | Nov 2008 | B1 |
7499888 | Tu et al. | Mar 2009 | B1 |
7505762 | Onyon et al. | Mar 2009 | B2 |
7519702 | Allan | Apr 2009 | B1 |
7596609 | Refuah et al. | Sep 2009 | B1 |
20010014893 | Boothby | Aug 2001 | A1 |
20010028363 | Nomoto et al. | Oct 2001 | A1 |
20010044805 | Multer et al. | Nov 2001 | A1 |
20010047471 | Johnson | Nov 2001 | A1 |
20010051920 | Joao et al. | Dec 2001 | A1 |
20020007303 | Brokler et al. | Jan 2002 | A1 |
20020010868 | Nakashima et al. | Jan 2002 | A1 |
20020016818 | Kirani et al. | Feb 2002 | A1 |
20020016912 | Johnson | Feb 2002 | A1 |
20020032751 | Bharadwaj | Mar 2002 | A1 |
20020040369 | Multer et al. | Apr 2002 | A1 |
20020049852 | Lee et al. | Apr 2002 | A1 |
20020055909 | Fung et al. | May 2002 | A1 |
20020056011 | Nardone et al. | May 2002 | A1 |
20020059116 | Bulatovic et al. | May 2002 | A1 |
20020067816 | Bushnell | Jun 2002 | A1 |
20020078075 | Colson et al. | Jun 2002 | A1 |
20020082995 | Christie | Jun 2002 | A1 |
20020116444 | Chaudhri et al. | Aug 2002 | A1 |
20020162011 | Tanaka et al. | Oct 2002 | A1 |
20020168964 | Kraft | Nov 2002 | A1 |
20030028451 | Ananian | Feb 2003 | A1 |
20030037020 | Novak et al. | Feb 2003 | A1 |
20030069874 | Hertzog et al. | Apr 2003 | A1 |
20030204568 | Bhargava et al. | Oct 2003 | A1 |
20030229898 | Babu et al. | Dec 2003 | A1 |
20040054746 | Shibata | Mar 2004 | A1 |
20040093385 | Yamagata | May 2004 | A1 |
20040111465 | Chuang et al. | Jun 2004 | A1 |
20040204120 | Jiles | Oct 2004 | A1 |
20040224665 | Kokubo | Nov 2004 | A1 |
20050086296 | Chi et al. | Apr 2005 | A1 |
20050090253 | Kim et al. | Apr 2005 | A1 |
20060190626 | Bhogal et al. | Aug 2006 | A1 |
20060212482 | Celik | Sep 2006 | A1 |
20070050734 | Busey | Mar 2007 | A1 |
20080009268 | Ramer et al. | Jan 2008 | A1 |
20080022220 | Cheah | Jan 2008 | A1 |
20080039020 | Eskin | Feb 2008 | A1 |
Number | Date | Country |
---|---|---|
1202662 | Dec 1998 | CN |
1313697 | Feb 2005 | CN |
0801487 | Oct 1997 | EP |
0801487 | Oct 1997 | EP |
0836131 | Apr 1998 | EP |
0836301 | Apr 1998 | EP |
0924917 | Jun 1999 | EP |
0930593 | Jul 1999 | EP |
1024441 | Feb 2000 | EP |
0986225 | Mar 2000 | EP |
10191453 | Jul 1998 | JP |
1998-106683 | Dec 1998 | JP |
11242620 | Sep 1999 | JP |
11242677 | Sep 1999 | JP |
WO 9739564 | Oct 1997 | WO |
WO 9741520 | Nov 1997 | WO |
WO 9803005 | Jan 1998 | WO |
WO 9821648 | May 1998 | WO |
WO 9829994 | Jul 1998 | WO |
WO 9936870 | Jul 1999 | WO |
WO 9940514 | Aug 1999 | WO |
WO 9945451 | Sep 1999 | WO |
WO 9945484 | Sep 1999 | WO |
WO 9946701 | Sep 1999 | WO |
WO 9950761 | Oct 1999 | WO |
WO 9965256 | Dec 1999 | WO |
WO 0011832 | Mar 2000 | WO |
WO 0016222 | Mar 2000 | WO |
WO 0029998 | May 2000 | WO |
0133874 | May 2001 | WO |
0217140 | Feb 2002 | WO |
03-083716 | Oct 2003 | WO |