RE: Connection Establishment

"Naidu, Venkata" <Venkata.Naidu@Marconi.com> Wed, 06 February 2002 15:23 UTC

Message-ID: <39469E08BD83D411A3D900204840EC55762FAC@vie-msgusr-01.dc.fore.com>
From: "Naidu, Venkata" <Venkata.Naidu@Marconi.com>
To: "'Sebastian Zimmermann'" <S.Zimmermann@tu-harburg.de>, tcp-impl@grc.nasa.gov
Subject: RE: Connection Establishment
Date: Wed, 6 Feb 2002 10:23:16 -0500
MIME-Version: 1.0
X-Mailer: Internet Mail Service (5.5.2650.21)
Content-Type: text/plain; charset="ISO-8859-1"
Sender: owner-tcp-impl@grc.nasa.gov
Precedence: bulk
Status: RO
Content-Length: 1939
Lines: 50

Sebastian:

->     May the server send the data already with the final ACK of the 
-> connection establishment (piggyback), or must it send two 
-> packets (ACK 
-> and data), or must it wait for the clients ACK of the ACK 
-> (and then send 
-> data)?

  As per TCP standard (not w.r.t. any API implementations, 
  like sockets)

  Machine A initiates a connection to machine B.
  A sends a segment with ISN x, chosen according
  A's clock, and with SYN bit set to 1, this is the
  connection request message.
	- the ACK flag is set to 0
	- this segment is still a regular TCP segment; it
	  can carry data too (piggyback 1)
      - however, if it does contain data, machine B
        cannot deliver the data to application until the
        connection is successfully established

  B returns a segment whose Ack=x+1, Seq=y,theISN
  of B chosen according to B's clock, and SYN=1.
	- this is the connection acceptance message.
	- if the first segment from A contains b bytes of
	  data, then Ack=x+b+1.
	- this segment itself can contain data too. (piggyback 2)
	  After receiving the acceptance, A considers the
	  connection established.

  A then sends B a segment with Ack=y+1 and SYN=0.
	- this is the connection confirmation message
      - This ack is mostly sent by TCP with out user
        interaction. But TCP can still piggyback data
        in this segment. (piggyback 3)
	- all segments from this point on will have SYN=0
	  After receiving the confirmation, B considers the
	  connection established.

  But most of the APIs don't have any provision for this.

Venkata Naidu


This e-mail and any attachments are confidential. If you are not the
intended recipient, please notify us immediately by reply e-mail and then
delete this message from your system. Do not copy this e-mail or any
attachment, use the contents for any purposes, or disclose the contents to
any other person: to do so could be a breach of confidence.