|
The original releases of NCSA Mosaic and Netscape Navigator, as
well as all other browsers, used the HTTP 1.0 protocol. As the World
Wide Web exploded in terms of popularity and volume of data and
traffic, a number of bottlenecks and other limitations in the HTTP
protocol became apparent.
As a result, the The World Wide Web Consortium, the organization
responsible for the development and publication of the HTTP protocol
standard, began work on an enhanced version of the HTTP protocol.
One of the most interesting new features of the HTTP 1.1 protocol
is the addition of the 'host' header. This allows a web server to
determine the home page for a domain name by the domain name itself.
In the previous protocol standard (HTTP 1.0), the browser did not
tell
the server what the domain name portion of the URL was, but only
the path to the file. For example, when you typed in http://www.domain.com/page.html,
the browser first looked up the underlying network address associated
with www.domain.com, then the browser would connect to the server
at that network address, and request "page.html". If that
server had multiple domain names,
all associated with the same network address (of that server), the
server could not distinguish between requests for www.domain1.com/page.html
and www.domain2.com/page.html. In each case the browser would request
page.html. In HTTP 1.1, the browser is now required to tell the
server not only the path portion of the URL, but the domain name
as well, allowing the server to distinguish between requests for
files of the same name with different domains, and, similarly, to
distinguish between requests for the default home page on different
domains (http://www.domain1.com/ and http://www.domain2.com/).
Web hosting service providers call the ability of a single web
server to host multiple domain names as though each domain name
were a separate server 'Virtual Hosting'. Prior to the implementation
of HTTP 1.1, the only way to accomplish virtual hosting was to assign
a separate network address to each domain name hosted by the server,
but have the server answer on all of those addresses (whereas otherwise
a server would normally have only one network address). In this
strategy, the server is able to deduce the domain name requested
by the browser by examining the network address on which the request
arrived (remember that a separate address is assigned to each domain
name hosted by the server, and the server is configured to have
multiple addresses - one for each domain name it hosts). With the
requested network address, the server performs a "reverse DNS
lookup" by resolving the network address to a domain name (the
opposite of the typical DNS function - resolving a domain name to
a network address).
The practice of assigning multiple network addresses to the same
server in order to accomplish virtual hosting has problems with
scalability (there are a limited number of IP addresses). The HTTP
1.1 protocol standard resolves this problem by explicitly passing
the domain name in the protocol itself.
Some ancient clients (pre 1996) are not compatible with name-based
virtual hosting. For name-based virtual hosting to work, the client
must send the HTTP Host header. This is required by HTTP/1.1, and
is implemented by all modern HTTP/1.0 browsers as an extension.
Name-based virtual hosting cannot be used with SSL secure servers
because of the nature of the SSL protocol.
The following browsers (including subsequent versions) are currently
known to support the http 1.1 'host' header:
Netscape Navigator 2.0
Netscape Navigator Gold 2.01
Microsoft Internet Explorer
NCSA Mosaic 2.7 (for X Windows)
Lynx 2.5
These include by far the most popular browsers, and are in use
by all of the major online services.
|