Re: Connection:Keep-Alive and Proxies

My replies inline below

Alex Rousskov wrote:

> On Tue, 26 Nov 2002, Diwakar Shetty wrote:
>
> > Following is a para which i read in one book. I could not understand
> > it. Could somebody please elaborate
> >
> > ---------------------------------------------------
> > An HTTP/1.0 client could send a "Keep-Alive" header to a HTTP/1.1
> > proxy that did not understand "Connection" but might mistakenly
> > forward it. If the downstream connection also maintained a
> > "Keep-Alive" connection, the proxy in the middle would never receive
> > the closing of the response
> > ---------------------------------------------------
>
> You may be slightly misquoting the book or the book may be slightly
> misquoting the protocol -- ``HTTP/1.1 proxy that did not understand
> Connection'' is an oxymoron. An exact quote from RFC 2616 (section
> 19.6.2) reads:
>
>    The problem was that some existing 1.0 clients may be
>    sending Keep-Alive to a proxy server that doesn't understand
>    Connection, which would then erroneously forward it to the next
>    inbound server, which would establish the Keep-Alive connection and
>    result in a hung HTTP/1.0 proxy waiting for the close on the
>    response.

The book is referring to HTTP/1.1 proxy and not HTTP/1.0 proxy
If interested, one can refer the book "Web Protocols and Practice" by Balachander Krishnamurthy and Jennifer Rexford, Addison Wesley, May 2001
ISBN 0-201-71088-9
Page no. 289 in the para for "Semantic requirements on an HTTP/1.1 proxy

It concludes at the end...."HTTP/1.1 proxies are not permitted to establish a persistent connection with HTTP/1.0 clients


>
>
> > My question, is why does it matter. The proxy will just relay
> > whatever comes from actual server to client.
>
> The problem is not with relaying bytes. That works just fine. The
> problem is with relaying the "end of message" information.  Pure
> HTTP/1.0 applications rely on the [TCP] connection close to detect the
> end of a message. If the connection happens to be persistent, a pure
> HTTP/1.0 client will not detect the end of message for quite a while
> (until the connection is closed, which may happen minutes or even days
>

But it was the HTTP/1.0 client which sent the "Keep-alive" in the first place
Hence it is not pure.
It intentionally wants to keep the Connection alive
Hence, the client can detect the end of message using "Content-length" sent by the origin server, as mentioned by Scott

Perhaps another issue to ponder over would be the different use of "Connection" in HTTP/1.0 and HTTP/1.1

Thanks
Diwakar

Received on Tuesday, 26 November 2002 23:17:38 UTC