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