2 uni-directional TCP connection good
Robert Watson
rwatson at FreeBSD.org
Mon Mar 23 01:20:21 PDT 2009
On Sun, 22 Mar 2009, Yoshihiro Ota wrote:
>> On Fri, 20 Mar 2009, Yoshihiro Ota wrote:
>>
>>> 1. With TCP connections, only sender side can detect some communication
>>> issues passively if happened. By using two connections, you lost that
>>> ability by your self. I agree on this one.
>>
>> Could you expand a bit on this point? While the connection creation
>> process (usually) asymmetric, once the connection is built it's essentially
>> the same state machine on both sides of the connection, and socket
>> semantics with respect to the state machine are effectively identical.
>> Application on both sides should be able to detect disconnect, monitor
>> connection state using TCP_INFO, etc.
>
> What I meant was that there were cases when a receiver could not tell
> weather no data was coming or communication was interrupted. Once
> connection is established, a route is available between a server and a
> client. Let's say this route is broken for some reasons, i.e. someone
> unplugged a cable or a firewall started dropping or rejecting between these
> server and client, a sender may not notice as soon as it happens but at
> least, a sender knows a massages was not delivered right. On the other
> hand, receiver side does not have any idea that a message delivery failure
> has happened at all or for a while unless using heartbeat messages in upper
> layer. KEEP_ALIVE option seems to be implementation dependent such that you
> cannot assure TCP connection availability for every minute.
This is generally considered a robustness property rather than a fragility
issue, but yes: if you need a liveliness property for idle connections with
TCP, it's something you have to implement at the application layer, and many
protocols indeed do this. I don't see that this is an argument for using two
TCP connections as opposed to one, however. If you're interested in
alternative protocols, however, SCTP allows a number of these protocol
behaviors to be modified, and includes support for a heartbeat.
Robert N M Watson
Computer Laboratory
University of Cambridge
More information about the freebsd-hackers
mailing list