home .. forth .. colorforth mail list archive ..

Re: [colorforth] TCP State Engine


On Wednesday 14 April 2004 09:57 am, howerd.oakford@xxxxxxxxxxxx wrote:
> For this you only need to implement TCP packet transfer, without
> retries, sliding windows, packet re-ordering etc.
> The simple packet transfer would be similar to UDP, and would probably
> not require the usual state machine.

Not true.

TCP attempts to provide a reliable data stream (a pipe for bytes) over 
the unreliable IP protocol.  This includes retransmissions of *ALL* 
packets as they are required, not just those thought to be "in a file."  
Following your advice above, even for a packetized form of telnet, WILL 
cause data loss or loss of the connection.  It's not a matter of whether 
it'll happen; it is just a matter of when it will happen.

While I agree that a TCP implementation can be reduced compared to its 
more generalized implementation in Linux, for example, you *cannot* get 
rid of sliding windows (even if it is just a window of one packet), 
retries, and packet re-ordering.  These things are there because of the 
very nature of IP itself.  To simplify TCP any further, you need either 
a reliable datagram service, such as AX.25 (or, for that matter, any 
other variant of X.25), or you need to very tightly control the 
electrical parameters under which your network is operating to ensure 
pristine data delivery.  I won't get into the schizophrenia behind the 
horror that is X.25, or the veritable Cthulu that is AX.25.  And I 
certainly won't get into the routing messes that happen all-too-often 
once the average IP packet leaves your local network and enters the 
global switching fabric.

--
Samuel A. Falvo II


---------------------------------------------------------------------
To unsubscribe, e-mail: colorforth-unsubscribe@xxxxxxxxxxxxxxxxxx
For additional commands, e-mail: colorforth-help@xxxxxxxxxxxxxxxxxx
Main web page - http://www.colorforth.com