- From: Jeffrey Mogul <mogul@pa.dec.com>
- Date: Thu, 13 Aug 98 12:08:58 MDT
- To: HTTP Working Group <http-wg@hplb.hpl.hp.com>
On the topic of what to do with Content-MD5, you pointed out (around last December I think) that one use is to detect packet-splicing errors on ATM links (where the TCP ones-complement checksum is not sufficient). This is a slight misinterpretation of what I wrote, if you're referring to: http://www.ics.uci.edu/pub/ietf/http/hypermail/1998q1/0117.html The main point of this message was that transport-level checksums do not necessarily provide an "error-free transport layer", and so higher-level checksums are useful. But in the same message, I also wrote: Unfortunately, the [Content-]MD5 checksum covers just the message body, and so if one is reassembling a document from several messages (e.g., using Range retrievals) one can still have undetected errors. This is why I speculated that Content-MD5 is "not even particularly useful" ... it's end-to-end as far as the HTTP messages go, but it's not end-to-end as far as the actual documents (or whatever) are concerned. I.e., I still believe that Content-MD5 is not actually the right solution for the problem. This, combined with the transformation issue, leads me to think that there could (or ought to) be a distinction between hop-by-hop and end-to-end message integrity checks (MICs). I would think that if Cache-control: no-transform is present, one would use an end-to-end MIC, otherwise a hop-by-hop MIC could be used. The so-called "End-to-End Argument" (see "End-To-End Arguments in System Design", J.H. Saltzer, D.P.Reed, D.D.Clark, ACM TOCS, Vol 2, Number 4, November 1984, pp 277-288. - probably not available online, alas!) implies that if you care about end-to-end integrity, then you need an end-to-end MIC. All you can get from hop-by-hop MICs is some added efficiency if (1) you have the ability to do automatic hop-by-hop retransmissions if the MIC detects and error, and (2) such errors are relatively frequent, or (3) the hop-by-hop MIC is specifically suited to the kinds of errors seen on that hop. But none of these conditions seems to be true for HTTP. (The Ethernet CRC is useful because Ethernet-level errors are common, due to CSMA/CD, and the CRC is designed for the kinds of errors that do occur.) In any case, it's hard to think of a way to specify "no-transform" in such a way that it depends on the presence of specific kinds of headers carrying MICs, especially if we want to be able to extend the set of MICs in the future. I think this is a rathole, and we're best off just saying "no-transform means no transforms of the entity-body, period." -Jeff
Received on Thursday, 13 August 1998 13:12:28 UTC