- From: Beth Frank <efrank@ncsa.uiuc.edu>
- Date: Mon, 23 Oct 1995 11:18:05 -0500 (CDT)
- To: Jeffrey Mogul <mogul@pa.dec.com>
- Cc: http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com
> > To get around some Mac TCP/IP peculiarities, we did work > out that each additional request from the client had to include > the "Connection: Keep-Alive" header or the server will assume > it is the last request and close connection after serving the > request. > > That's an interesting point. Are these peculiarities are problem > on the server or on the client? That is, is this necessary because > the client is a Mac, or because the server is a Mac? It was because the client is a Mac. I've talked with our Mac guru, and the problem is that there isn't a non-block close connection call on the Mac. If something has happened to the connection while the Mac is trying to close the connection the Mac can hang up to 30 seconds. So instead of doing a close, the Mac does an abort, which doesn't close the connection. Whenever possible the Mac client needs the server to close the connection. So, we set things up so that every request must include the "Connection: Keep-Alive" header or the server will close the connection. This works most of the time. However, because the client is processing in one thread and requesting files in another, the client doesn't always know when it has the last URL. In this case, a final request of either a HEAD or GET without a URL is sent minus the Keep-Alive header, to close the connection. If the client doesn't send this request, the server will wait until the idle timeout occurs, wasting resources waiting on a request that isn't going to come. The down side of this scenario, is that there is wasted network traffic when the server sends back information that the client has no interest in. What we would like to see is a message with a header "Connection:done" or something similar which would cause the server to immediately close the connection without any further messages to the client. -Beth > > If the former, then the spec doesn't have to require this header > on every request, only "peculiar" client implementations need to > send it. If the latter, then since the client does not know if the > server is a Mac or no, the spec should probably require the header > on every request. (On the principle that the bandwidth wasted > by sending this header is less than the bandwidth saved by not > closing the connection.) > > -Jeff > -- Elizabeth(Beth) Frank NCSA Server Development Team efrank@ncsa.uiuc.edu
Received on Monday, 23 October 1995 09:25:30 UTC