Re: Summary of responses so far and proposal moving forward [Was Re: [tcpm] Is this a problem?]

Joe Touch <touch@ISI.EDU> Thu, 22 November 2007 05:10 UTC

Return-path: <>
Received: from [] ( by with esmtp (Exim 4.43) id 1Iv4Kp-0001ZW-5v; Thu, 22 Nov 2007 00:10:43 -0500
Received: from tcpm by with local (Exim 4.43) id 1Iv4Km-0001N2-Vv for; Thu, 22 Nov 2007 00:10:40 -0500
Received: from [] ( by with esmtp (Exim 4.43) id 1Iv4Km-0001Jg-6o for; Thu, 22 Nov 2007 00:10:40 -0500
Received: from ([]) by with esmtp (Exim 4.43) id 1Iv4Kl-0005Au-KL for; Thu, 22 Nov 2007 00:10:40 -0500
Received: from [] ( []) by (8.13.8/8.13.8) with ESMTP id lAM5AS0X024390; Wed, 21 Nov 2007 21:10:29 -0800 (PST)
Message-ID: <>
Date: Wed, 21 Nov 2007 21:10:20 -0800
From: Joe Touch <touch@ISI.EDU>
User-Agent: Thunderbird (Windows/20071031)
MIME-Version: 1.0
To: "Anantha Ramaiah (ananth)" <>
Subject: Re: Summary of responses so far and proposal moving forward [Was Re: [tcpm] Is this a problem?]
References: <>
In-Reply-To: <>
X-Enigmail-Version: 0.95.5
X-ISI-4-43-8-MailScanner: Found to be clean
X-Spam-Score: 0.0 (/)
X-Scan-Signature: 14582b0692e7f70ce7111d04db3781c8
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <>
List-Unsubscribe: <>, <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
Content-Type: multipart/mixed; boundary="===============0240889932=="

Anantha Ramaiah (ananth) wrote:
>>> So I gather that there is no need to have a standards change, since 
>>> you seem to say that RFC allows you to abort a connection which 
>>> everyone is aware of. But it is the same RFC that says you MUST 
>>> persist a connection indefinetly as long as you receive 
>> ACKS, so you 
>>> are now providing an external override for this MUST behaviour.
>> I think the relevant text is:
>>  Probing Zero Windows: RFC-793 Section 3.7, page 42
>>             Probing of zero (offered) windows MUST be supported.
>>             A TCP MAY keep its offered receive window closed
>>             indefinitely.  As long as the receiving TCP continues to
>>             send acknowledgments in response to the probe 
>> segments, the
>>             sending TCP MUST allow the connection to stay open.
>> TCP. Not the user. Users get to abort connections.
>>  Closing a Connection: RFC-793 Section 3.5
>>             A TCP connection may terminate in two ways: (1) the normal
>>             TCP close sequence using a FIN handshake, and (2) 
>> an "abort"
>>             in which one or more RST segments are sent and the
>>             connection state is immediately discarded.
>> FWIW.
> I know I have read the above text many times, but there is an
> inconsitency here. While it says that TCP MUST keep the persist
> connection open, in the other hand it also says users can abort the
> connection no matter what state it is in. 

There is no inconsistency.

TCP keeps things open until told to do otherwise by the application. The
point of the text is that it is not TCP's decision to close the
connection - that's precisely because the application can do so if needed.

TCP always does as instructed by the user - i.e., when an ABORT or CLOSE
is issued. The point of the text is that TCP doesn't make a decision to
close the connection itself, not that the user can't make that command.

> So implementations can chose
> to have some optimal schemes built inside TCP module on behalf of the
> applications ( it is just a matter of programming/implementation) and
> have an implicit timer inside TCP which kills the TCP connection when
> timer expires and can inform the application about the connection death.

That timer would need to have a default of "infinite" - i.e., it would
default to never going off - to be compliant with RFC1122. Only if the
application instructed it otherwise could it activate.

Putting the timer inside TCP does nothing useful at that point except
complicate TCP. The timer can be in the OS or in the application with
exactly the same effect.

> [All the above actions are compliant to the RFC since RFC doesn't talk
> about how to implement TCP and it just gives a guidance, the term
> user/application and TCP are just used to illustrate the concept.]

If the timer defaults to "infinite", then yes, it would be compliant
with RFC1122. That doesn't change current behavior, though.


tcpm mailing list