Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site ucbvax.ARPA Path: utzoo!watmath!clyde!burl!ulysses!ucbvax!tcp-ip From: tcp-ip@ucbvax.ARPA Newsgroups: fa.tcp-ip Subject: Re: A Noop Strategy for TCP Message-ID: <9339@ucbvax.ARPA> Date: Thu, 25-Jul-85 22:48:45 EDT Article-I.D.: ucbvax.9339 Posted: Thu Jul 25 22:48:45 1985 Date-Received: Sat, 27-Jul-85 03:01:09 EDT Sender: daemon@ucbvax.ARPA Organization: University of California at Berkeley Lines: 26 From: Bob Walsh TCP is designed to provide a reliable transport layer. It is NOT designed to ensure application <-> application reliability. Robustness of application communication is the responsibility of the application. Mechanisms have been tried to solve this problem. For example, the Berkeley 4.2BSD TCP periodically sends a byte just beyond the window in an attempt to force an ack when the connection is otherwise idle. But not every system is a 4.2BSD host, and what happens when it communicates with a generous implementation that recognizes the high per packet overhead (interrupt processing, header checking, and network resources) and buffers the incoming packet? A garbage byte may make its way in to the stream. And yet, the receiving TCP has made no mistake. Don't try to change the protocol, or you may run into problems. Interoperability is one of the benefits of standards. The RDP protocol specifiers recognized this problem and addressed it through the use of NULL messages to which all implementations must respond. They also recognized that the application layer must be responsible for end to end reliability and forced the developer to keep this in mind through RDP's abrupt closing method. bob walsh