Browsers' Multiple Connection Settings

I’m not such a “power user” when it comes to web browsing, and having good connectivity both at home and at work helps forgetting about tweaking the maximum number of TCP connections in my web browser. However, I can think of a two cases where the establishment of multiple connections might bring great value to the power user: first, multiple file downloads. Being able to download several files at once might be really helpful in some situations. Secondly, in the case of complex web pages. When web pages contain different elements, the required download time goes up (which is often the case: images, sound, video, Java applets, Flash animations, JavaScript files, stylesheets, etc., are ubiquitous nowadays).

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

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

(Source)

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.

(Source)

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:

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.

Conclusion

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.