🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fa.tcp-ip
Article #352

Re: A Noop Strategy for TCP - second level comments.

#352
From: tcp-ip
Date: Sat, 27 Jul 1985 03:33
46 lines
2818 bytes
From: imagen!geof@su-shasta.ARPA


TCP gives higher level protocols the responsibility of probing the
foreign system.  I believe that the higher level protocols divide up
into the following three categories (this is in contrast to one comment
recently made on the list):
	1. Applications where the TCP connection is never idle.  
	   No problem.
	2. Applications where the TCP connection is idle but monitored
	   by a human user.  Give the user a method to probe the connection
	   (like telnet remote echo, or null probes), and you've solved
	   the problem.  Ultimately, every user has his or her own internal
	   timer that says how long he/she is willing to wait. 
	   E.g., User FTP, User Telnet
	3. Applicationes where the TCP connection is idle and are not
	   monitored by a human user.  Then the higher level protocol
	   needs to send probes so that it doesn't hand forever.  
	   E.g.: SMTP, Server Telnet, Server FTP

There is one point of commonality between 2 & 3:

	If a TCP connection is idle, it must always be possible for either
	side to send the other a probe.

I have believed this point for some time.  It is interesting that the
rule is broken by the most obvious example of [3] -- SMTP.  Between the
time a User SMTP finishes sending a message (it sends the ".") and the
time the server sends the response, the user is unable to send any data
down the TCP connection, but must wait for the server.  The TCP
connection is idle, and TCP (as we all know by now) doesn't probe the
connection.  If the server crashes, the user is left hanging forever.

The usual solution is a timeout.  But there is wide variance in both
the time that a system can tolerate a hung SMTP server and the time
that it legitimately takes a slow server to process a message.  So
timeouts will always be causing certain messages/server combinations
to reliably fail.  Not quite what you wanted for a supposedly
autonomous service.  The real fix is an SMTP-level probe.

The same problem is exhibited by XNS Courier, which requires that all
XNS sequenced packet protocol implementations implement keep-alive
probes (probes are permitted but not required by the spec).  Beware if
you implement Courier on top of TCP!

- Geof
Technical Details
Message-ID: <9382@ucbvax.ARPA>
Path: arc1-ca.pugleaf.net!utzoo!watmath!clyde!cbosgd!ucbvax!tcp-ip

Show Full Headers
Complete Article Headers
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: arc1-ca.pugleaf.net!utzoo!watmath!clyde!cbosgd!ucbvax!tcp-ip
From: tcp-ip@ucbvax.ARPA
Newsgroups: fa.tcp-ip
Subject: Re: A Noop Strategy for TCP - second level comments.
Message-ID: <9382@ucbvax.ARPA>
Date: Fri, 26-Jul-85 23:33:45 EDT
Article-I.D.: ucbvax.9382
Posted: Fri Jul 26 23:33:45 1985
Date-Received: Mon, 29-Jul-85 05:28:33 EDT
Sender: daemon@ucbvax.ARPA
Organization: University of California at Berkeley
Lines: 46