- From: Jeffrey Mogul <mogul@pa.dec.com>
- Date: Thu, 11 May 2000 10:21:49 -0700
- To: Kaming Young <kmyoung7@ie.cuhk.edu.hk>
- Cc: http-wg@cuckoo.hpl.hp.com
Kaming Young writes: HOL blocking means Head Of Line blocking What i mean is consider Alice send out a request for a large latest hit MP3 file and then a request for a small text file which both resides on the same server. so the response for MP3 file will block the second response and the response that follow in the persistent connection case. The HTTP/1.1 Draft Standard (RFC2616) address the head-of-line blocking issue with respect to proxies, in section 8.1.4, where it says: A proxy SHOULD use up to 2*N connections to another server or proxy, where N is the number of simultaneously active users. I can't remember why we didn't say "to avoid head-of-line blocking" in this sentence, since this is precisely the reason for saying that proxies aren't expected to multiplex lots of clients on one connection. The same paragraph says: A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy. The reasoning behind that requirement is related to a kind of head-of-line blocking. Consider a client loading a long HTML page with lots of images. The client should probably start the process of loading the images (on connection #2) while continuing to load the HTML (on connection #1); we don't want the images blocked until the entire HTML file is loaded. I'm not sure it makes sense for a single browser window to be simultaneously loading a text file and an MP3 file, but I guess it would make sense for a single user to be loading both in separate windows of a single browser application. Even so, the spec still allows these two simultaneous connections. Anyway, we never specifically defined "single-user", so I think a client implementor should use good judgement in deciding whether a browser with multiple active windows counts as one "user" or several. The point of these requirements was not to force people to suffer from head-of-line blocking. It was to allow the implementation of clients and proxies that do not suffer from head-of-line blocking, while discouraging them from using more TCP connections than necessary. -Jeff
Received on Thursday, 11 May 2000 10:23:41 UTC