Path: utzoo!utgpu!watserv1!watmath!att!ucbvax!EUROPA.CLEARPOINT.COM!kasten From: kasten@EUROPA.CLEARPOINT.COM (Frank Kastenholz) Newsgroups: comp.protocols.tcp-ip Subject: Re: ? : TCP Data Integrity Message-ID: <9102281354.AA15153@europa.clearpoint.com> Date: 28 Feb 91 13:54:27 GMT Sender: daemon@ucbvax.BERKELEY.EDU Distribution: world Organization: The Internet Lines: 72 > From tcp-ip-RELAY@NIC.DDN.MIL Thu Feb 28 00:23:15 1991 > From: sun-barr!newstop!jethro!mock@apple.com (Joseph Mocker) > Organization: Sun Microsystems Inc. > Subject: ? : TCP Data Integrity > Sender: tcp-ip-relay@nic.ddn.mil > To: tcp-ip@nic.ddn.mil > > o.k. you TCP Guru's, Heres one for ya! > > I've been reading up on the TCP/IP protocol suite and I got a question about > TCP. I can't seem to find out how TCP insures data integrity? in the > TCP Segment header, there is a checksum field, but that seems to be only > for the Header information. So by that, we know that the data got to the > right place, but there is nothing that checksums the data sent. Is this up > to the user program? How is data integrity kept in a TCP transaction? > > thanks...joe > -- > ------------------------------------------------------------------------------ > Joe Mocker//USAC//PC-NFS Support :: mock@Corp.Sun.COM :: Sun Microsystems Inc. > > :: there's still lofty dreams :: meager desires :: still sillyness :: Joe, From the TCP RFC (RFC793) Checksum: 16 bits The checksum field is the 16 bit one's complement of the one's complement sum of all 16 bit words in the header and text. If a segment contains an odd number of header and text octets to be ^^^^^^^^ aka the data checksummed, the last octet is padded on the right with zeros to form a 16 bit word for checksum purposes. The pad is not transmitted as part of the segment. While computing the checksum, the checksum field itself is replaced with zeros. The checksum also covers a 96 bit pseudo header conceptually [Page 16] ^L September 1981 Transmission Control Protocol Functional Specification prefixed to the TCP header. This pseudo header contains the Source Address, the Destination Address, the Protocol, and TCP length. This gives the TCP protection against misrouted segments. This information is carried in the Internet Protocol and is transferred across the TCP/Network interface in the arguments or results of calls by the TCP on the IP. +--------+--------+--------+--------+ | Source Address | +--------+--------+--------+--------+ | Destination Address | +--------+--------+--------+--------+ | zero | PTCL | TCP Length | +--------+--------+--------+--------+ The TCP Length is the TCP header length plus the data length in octets (this is not an explicitly transmitted quantity, but is computed), and it does not count the 12 octets of the pseudo header.