Browsers' Multiple Connection Settings
In this article I will provide an overview of multiple connection availability in some Mac browsers, and also provide some tips for Internet Explorer for Windows, in the context of the HTTP RFC.
Browsers on Mac OS X
First I took a look into the browsers that I have installed at my home machine; I do some web design in my spare time, that’s why I keep a high number of them, to test the standard-compliance of my designs, which is like using several compilers for testing your C++ source code:
In this case, only Opera directly provided the capacity to tweak the number of connections:
As shown above, Opera 9 (at least for the Mac, but I’m sure that in other platforms too) allows users to change the number of connections, from 1 to 128. On the other side, Netscape version 7.2 (now obsolete after the recent release of version 9) allows you to change some other settings about the HTTP connection, namely “pipelining” and “keep-alive” connections:
No other browsers (from the list above) provide this capacity. It is not a real surprise that Mac browsers “hide” from the user the capability of changing such a setting, since the general guidelines for application development on this platform favor user-friendliness and accessibility, at the cost of expert settings.
Finally, it is worth noting that external tools such as Yazsoft’s Speed Download allows Mac users to open simultaneous connections to a web server, in order to speed up huge downloads.
Mozilla Firefox users (on any operating system) can install the “Fasterfox” plugin which allows to “tweak many network and rendering settings such as simultaneous connections, pipelining, cache, DNS cache, and initial paint delay.”
Internet Explorer for Windows
A quick search on the net brought interesting results. First of all, it seems that Internet Explorer does not provide a customization setting to change the number of connections, at least not directly; the maximum limit of connections is a property of WinInet, a Windows networking library used by all applications that wish to connect to the Internet. As such, power users not afraid of playing with the registry can change the values regarding the maximum number of connections to a server:
`HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings` MaxConnectionsPerServer REG_DWORD (Default 2) Sets the number of simultaneous requests to a single HTTP 1.1 Server MaxConnectionsPer1_0Server REG_DWORD (Default 4) Sets the number of simultaneous requests to a single HTTP 1.0 Server
In the same document, it is stated that “WinInet limits connections to a single HTTP 1.0 server to four simultaneous connections. Connections to a single HTTP 1.1 server are limited to two simultaneous connections. The HTTP 1.1 specification (RFC2616) mandates the two-connection limit.”. However, I found out that in the official HTTP/1.1 documentation, namely the RFC 2616, the following paragraph states the upper limit of 2 connections as a recommendation, rather than a “mandatory” setting:
8.1.4 Practical Considerations: (...) Clients that use persistent connections SHOULD limit the number of simultaneous connections that they maintain to a given server. A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy. A proxy SHOULD use up to 2*N connections to another server or proxy, where N is the number of simultaneously active users. These guidelines are intended to improve HTTP response times and avoid congestion.
The RFC document is extremely easy to read, and provides good reasons and explanations about why not to use a higher number of connections simultaneously:
- Not all web servers can cope with the workload produced by several open connections;
- It reduces the use of resources (bandwidth, memory, CPU time) in both clients, routers and servers;
- It helps improve the responsiveness and the evolution of the overall network.
Please refer to section 8.1.1 of the RFC, where some advantages of persistent connections are described with great detail. Furthermore, this interesting blog entry on the IEBlog provides more information about the reasons for the default setting.
The suggested reduction of the maximum number of connections seems to have been followed closely by browser developers; it is either impossible or very difficult to change this setting, with the exception of Opera, which makes is really simple. There are a number of long-term advantages to the limitation of the number of connections, and this has surely had a strong impact, helping the Internet to grow (and not to stall) during the past thirty years.