Before the "Persistent Connection" feature has been introduced in HTTP 1.1, a separate TCP connection was established to fetch each object or resource, increasing the load on HTTP servers and causing congestion on the Internet. The use of in-line images and other associated data often require a client to make multiple requests of the same server in a short amount of time. [22]
One can read in [22]:
"Persistent HTTP connections have a number of advantages:
By opening and closing fewer TCP connections, CPU time is saved in routers and hosts (clients, servers, proxies, gateways, tunnels, or caches), and memory used for TCP protocol control blocks can be saved in hosts.
HTTP requests and responses can be pipelined on a connection. Pipelining allows a client to make multiple requests without waiting for each response, allowing a single TCP connection to be used much more efficiently, with much lower elapsed time.
Network congestion is reduced by reducing the number of packets caused by TCP opens, and by allowing TCP sufficient time to determine the congestion state of the network.
Latency on subsequent requests is reduced since there is no time spent in TCP's connection opening handshake.
HTTP can evolve more gracefully, since errors can be reported without the penalty of closing the TCP connection. Clients using future versions of HTTP might optimistically try a new feature, but if communicating with an older server, retry with old semantics after an error is reported.
[...] A significant difference between HTTP/1.1 and earlier versions of HTTP is that persistent connections are the default behaviour of any HTTP connection. That is, unless otherwise indicated, the client SHOULD assume that the server will maintain a persistent connection, even after error responses from the server." Copyright (C) The Internet Society (1999).
From a mobile Internet user's point of view, the reduction of the latency on subsequent requests is the most important advantage. If a cellular network with a round trip time of two to ten seconds transmits the data, the TCP's three-way handshake to establish the underlying TCP connection takes a long while. If we assume the same amount of time in both communication directions, the establishment of the TCP connection lasts about three to fifteen seconds. After this, the user agent is able to send the first request, that also takes at least two to ten seconds. If we assume, that the first request asks for an HTML page with some in-line images, the user agent must have successfully received the HTML page, before it is able to request the in-line images. If the establishment of new TCP connections for each object can be avoided, then the whole retrieval time can be reduced to a minimum.
What does it mean for you as a web programmer or web author? Well, you should at least operate or use an HTTP/1.1 compliant server. Nevertheless, your web pages should contain as less in-line images and other media objects as possible. The maximum number of objects should be one or zero, but this won't be accepted by your conservative marketing department. So it's up to you now, to find a compromise to satisfy the needs of your web site's "mobile" visitors and your marketing department.
Copyright © 2001-2003 by Rainer Hillebrand and Thomas Wierlemann