Path: utzoo!utgpu!water!watmath!clyde!cbosgd!ucbvax!A.ISI.EDU!CERF From: CERF@A.ISI.EDU Newsgroups: comp.protocols.tcp-ip Subject: Re: Pseudo-Headers & Checksumming Message-ID: <[A.ISI.EDU]17-Jan-88.19:53:04.CERF> Date: 18 Jan 88 00:53:00 GMT References: <12365632245.20.STEVENS@A.ISI.EDU> Sender: daemon@ucbvax.BERKELEY.EDU Organization: The ARPA Internet Lines: 30 Jim, I am going through a bunch of messages serially so I haven't yet seen any responses to your checksum query (if any). The pseudo-header was an attempt to fashion a true end/end checksum at the TCP level which included everything necessary at the TCP level to be sure you were getting a valid packet from the putative origin. We considered replicating information from the IP header in the TCP header as a way of making the TCP header easier to checksum, but the header was already so big, we decided to try the pseudo-header approach instead. It's possible that we just went too far on the "end/end" road and could have left some of the information covered in the TCP checksum out (that is, left it to IP level), but at the time, there was great concern that the IP level would only be checked host-gateway, gateway-gateway and gateway-host, not really end/end. So many times we found problems with lower level subsystems by doing end/end checking that we allowed ourselves the "awkward" luxury of the TCP pseudo-header. I seem to recall a recent exchange on TCP-IP in which the TCP level checksum proved very helpful in protecting against some LAN problems arising at the IP level, but that only underscores the value of end/end, not necessarily making an argument for the pseudo-header we chose for TCP. Really, my recollection of the pseudo header was to avoid making the TCP and IP headers redundant. Vint Cerf