From owner-freebsd-net Wed Mar 7 6:58:35 2001 Delivered-To: freebsd-net@freebsd.org Received: from whizzo.transsys.com (whizzo.TransSys.COM [144.202.42.10]) by hub.freebsd.org (Postfix) with ESMTP id 6190937B71C; Wed, 7 Mar 2001 06:58:32 -0800 (PST) (envelope-from louie@whizzo.transsys.com) Received: from whizzo.transsys.com (localhost.transsys.com [127.0.0.1]) by whizzo.transsys.com (8.11.2/8.11.0) with ESMTP id f27EwWa99960; Wed, 7 Mar 2001 09:58:32 -0500 (EST) (envelope-from louie@whizzo.transsys.com) Message-Id: <200103071458.f27EwWa99960@whizzo.transsys.com> X-Mailer: exmh version 2.3.1 01/18/2001 with nmh-1.0.4 To: Ruslan Ermilov Cc: Jonathan Lemon , Jonathan Lemon , net@FreeBSD.ORG X-Image-URL: http://www.transsys.com/louie/images/louie-mail.jpg From: "Louis A. Mamakos" Subject: Re: Delayed checksums commit broke UDP checksum calculation References: <20001116120936.A45755@sunbay.com> <20001116091954.A19895@prism.flugsvamp.com> <20010307123156.A19829@sunbay.com> <200103071440.f27EeYa99809@whizzo.transsys.com> <20010307164822.E97252@sunbay.com> In-reply-to: Your message of "Wed, 07 Mar 2001 16:48:22 +0200." <20010307164822.E97252@sunbay.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Wed, 07 Mar 2001 09:58:32 -0500 Sender: owner-freebsd-net@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org > On Wed, Mar 07, 2001 at 09:40:34AM -0500, Louis A. Mamakos wrote: > > > > > > So that the same logic applies to TCP packets as well. Currently, we > > > > can send a TCP packet with a checksum of 0, which is legal. Of possible > > > > interest is that Linux doesn't do this; they alwyas send a non-zero > > > > checksum in the TCP case, if a checksum was computed. > > > > > > > Hmm, but why would we do this for TCP? This violates RFC 793. > > > AFAIK, only UDP checksums are special. > > > > 0x0000 and 0xFFFF are both 16-bit 1's complement representations of > > zero, so you could send either and still have the remote TCP validate > > the checksum. > > > Louis, I recall our long discussion on the topic. It depends on how > remote end verifies the checksum. It it uses the value in checksum > field, then it is irrelevant. If it recomputes the checksum from > scratch, it does matter, and they won't match if you replace 0x0000 > computed checksum by 0xffff. > > And after I read Stevens, I still think they are the different values, > and you can't receive zero for a two's complement sum if at least one > item is non-zero. Therefore, checksum computed on any valid IP packet > is guaranteed to be non-0xffff. That's why UDP uses zero to indicate > no-checksum, and requires to replace 0xffff by 0. Whatever. Both +0 and -0 in 1's complement arithemetic are equivelent, just as a normalized and non-normalized floating point representation of the same value are "equal" even though the bit patterns are different. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message