Re: [colorforth] TCP State Engine
- Subject: Re: [colorforth] TCP State Engine
- From: "Samuel A. Falvo II" <kc5tja@xxxxxxxx>
- Date: Wed, 14 Apr 2004 10:31:26 -0700
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