[mod.protocols.tcp-ip] NETBIOS ISSUE---TCP Handoffs

cel@MITRE-BEDFORD.ARPA (09/09/86)

	At the NETBIOS-TCP/IP Interface Specification Forum held Aug 28 in
Monterey, CA two proposals were discussed.  A major issue revolved around the
capability of some operating systems to support handoff of TCP connections
from one process to another.

	Are there problems in handing a TCP connection from one process to
another for some operating systems?  Which operating systems have difficulty?

	Please mail comments to netbios@mitre-bedford.arpa.


	The problem in the context of the NETBIOS issue is described below.

	Assume two hosts, one contains a client application program and the
other contains a server application program.  the problem is to establish a
session between the programs (message oriented, no loss or duplication).  The
hosts contain NETBIOS agents for their respective application programs to
interpret the various NETBIOS commands.    Also assume that the
server host contains a NETBIOS validation program that verifies if two NETBIOS
named application programs may communicate.  Exchanges may occur between the
client and validation programs via UDP messages as in proposal one or over a
TCP connection as another proposal.  Data passed over a session between
application programs occurs over a TCP connection.

	One proposal (figure A below) calls for passing all session control
information via UDP messages between the NETBIOS client program located in the
source host and the NETBIOS validation program in the destination host.
The NETBIOS Name service has provided the IP address of the server host.
The validation pgm is accessed through a TCP well known port (wkp). If the
session is valid (a server application has posted a NETBIOS listen for c-name)
then the server program does a fully specified TCP passive open using s-port,
c-port and the IP addresses.  The client program then establishes a TCP
connection to the server program using s-port, c-port, and the IP addresses.
No handoff of a TCP connection between the validation program and the server
program is required.

		Figure A: NETBIOS Names Passed via UDP

     CLIENT                                                     SERVER

							Validation pgm does
		UDP(c-name, s-name, c-port)------->     UDP wkp listen to any
	(timeout)
							agent pgm does TCP
		<--------------UDP(s-port)---------     fully spec passive
							open on s-port,c-port
						   (timeout)
		TCP(s-port) SYN ------------------>     TCP conn established
							to NETBIOS agent
		<---------------------SYN---------
		<-------------data---------------->

			     etc.

	Another proposal (figure B below) calls for the client to determine
the server's TCP port (s-port) via the NETBIOS Name service.  Meanwhile the
NETBIOS validation program posted a TCP partially specified passive open (ppo)
open on s-port due to a NETBIOS LISTEN issued by an application program.  The
client program then establishes a TCP connection to the client validation
program and passes session control information (c-name,s-name) over the
connection. If the session is valid between the two NETBIOS named
applications, then the TCP connection is handed off to the  server agent
program.  If the session is rejected then the TCP connection is broken.


		Figure B: NETBIOS Names Passed via TCP Connection

	CLIENT                                          SERVER

							Validation pgm does
							TCP ppo on s-port
		TCP(s-port) SYN----------------->
		<---------------------------SYN--
		------data(c-name, s-name)------>       Validate and handoff
							TCP conn to server
							agent pgm
	    (timeout)
		<----------data(ack, nack)-------
		<----------data----------------->

			    etc.


 Thanks,  ---- Lee LaBarre