- From: Luigi Rizzo <luigi@labinfo.iet.unipi.it>
- Date: Wed, 22 Nov 1995 19:54:53 +0100 (MET)
- To: http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com
Probably we have found a solution to the keepalive problem in presence of cascaded proxies and tunnels. From his messages, it is very likely that Roy already had this solution in mind (or has possibly posted it); we cannot check because are currently disconnected from both his mind and the mailing list archive. ** in the Request-Line header a node specifies the protocol it is speaking. The receiving node (unless it is a tunnel) is always able to understand it and must change the "HTTP-Version" according to what it can understand. [we haven't checked if pre-1.0 proxies actually behave this way] Thus, any node knows the protocol spoken by the previous one in the request chain. ** a "Connection: keepalive" (possibly with other flags, but *without* the node ID) can only be generated by nodes speaking 1.1 and greater versions of the protocol. Nodes speaking 1.0 or earlier versions of http *should not* generate such an header, as it is not in the spec. Unfortunately some do... following node must not honor the request). ** A 1.0 node receiving the "Connection: ..." header should just ignore it and pass it down the link. ** A 1.1 node receiving the "Connection: ..." header should parse it, determine if it comes from a 1.1-capable node, and possibly honor it (it should not be mandatory, though). If the header comes from a 1.0 node, the request *must not* be honored. ** A 1.1 node can autonomously decide to pass, insert or delete a "Connection: ..." header according to its own policies. ** A tunnel receiving the "Connection:... " header, just passes it down the link unchanged. Note the difference between this approach and the "Connection: keepalive my-id" one. The former only works because of a difference in the protocol version, the latter can be used to negotiate options even without changing the protocol version, but is not applicable in presence of tunnels. Note also that the two approaches can coexist, i.e. 1.0 nodes could send a "Connection: keepalive my-id", and 1.1 nodes could try to honor the request if the peer matches the id specified in the request. In the spirit of the "robustness principle" (RFC793, sec.2.10): be conservative in what you do, be liberal in what you accept from others it wouldn't be a bad idea to include an optional id field in the "Connection: header". Lorenzo and Luigi ==================================================================== Luigi Rizzo Dip. di Ingegneria dell'Informazione email: luigi@iet.unipi.it Universita' di Pisa tel: +39-50-568533 via Diotisalvi 2, 56126 PISA (Italy) fax: +39-50-568522 http://www.iet.unipi.it/~luigi/ ====================================================================
Received on Wednesday, 22 November 1995 10:57:22 UTC