On 8/18/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > I have several options - what's the issue w/ using TCP?
TCP over TCP has some problems, the least/biggest of which is the timeout factor. If there is a communication problem, TCP has a "back off and resend" rule. This starts with "I didn't get an acknowledgment. I might be sending data too fast, or data might have gotten lost. I'll pause for two seconds, and then send the data again". The problem? If the low level TCP stream does this, then any higher level stream with data in transit will also see a delay, and a need to re-transmit. I may be doing a horrible job of explaining the problem. A simple terminal session may have no problem -- a single packet of data will eventually get an acknowledgment back. But if there is a stream with more and more data behind it, then you wind up with an ever increasing resending that never gets caught up. Eventually all the TCP channels break. TCP was designed with certain assumptions in mind. It does not work as a general purpose transport -- that was never it's goal. IP over IP works. UDP over UDP works if your UDP protocol supports it. TCP over TCP fails. The timeout rules cannot stack properly.