Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!dali.cs.montana.edu!milton!tad From: tad@wrq.com (Tad Marshall) Newsgroups: comp.protocols.tcp-ip Subject: Re: TCP checksums Keywords: TCP, checksums, HP Message-ID: <1991Jun3.000158.14817@milton.u.washington.edu> Date: 3 Jun 91 00:01:58 GMT References: <3270025@hpctdlb.HP.COM> <1991May28.221045.27724@Think.COM> Sender: news@milton.u.washington.edu (News) Organization: Walker Richer & Quinn, Inc., Seattle, WA Lines: 28 In article <1991May28.221045.27724@Think.COM> barmar@think.com writes: >>I'm interested in how common it is for TCP implementations to use all zeros >>for the TCP header checksum. I know that some HP machines do this but >>how common is this in the real world? > >You must be talking about the *UDP* checksum, which is optional. The TCP >checksum isn't optional. Actually, on HP 3000s (at least) the TCP checksum *IS* optional. Not that this makes it "legal", but in the "real world" we do want to work with existing implementations. Such HP implementations definitely exist. My understanding of the optional UDP checksum is that a bug in BSD 4.2 would prevent UDP packets with checksums from being understood (I forget if the bug was on the sending or the receiving side). In any case, most implementors would turn off UDP checksumming (i.e. send 0000) in order to not hit this bug. In answer to the original question, I think that HP is unique in permitting TCP checksumming to be turned off. On *incoming* TCP sessions, a 3000 will decide to use real checksumming if the incoming SYN packet has a real checksum and will use a checksum of zero if the incoming SYN packet has a zero checksum (if checksumming has been turned off on the 3000). On *outgoing* sessions, the 3000 will use a zero checksum when checksumming is off. As expected, this can cause interoperability problems with non-HP systems. Tad Marshall -- software developer -- Walker Richer & Quinn, Inc. Seattle, WA