File Objects Represent Transport Addresses
TDI supports both unreliable connectionless and reliable connection-oriented data transfers.
Unreliable connectionless data can be sent to one or a group of processes that have opened a particular transport address on a remote node. When sending unreliable connectionless data, as datagrams, the sender need only identify the target remote-node address for the process or group of processes for them to receive each such datagram.
Reliable connection-oriented data transfers can be sent between two processes if an endpoint-to-endpoint connection (also called a virtual circuit) has been established between them. An endpoint-to-endpoint connection is a one-to-one association between two, and only two, processes. To establish such a connection, one process must identify the process with which it wants to establish the connection. Each such process must have opened a transport address and a connection endpoint on its respective network node and associated its connection endpoint with the open transport address. For more information about connection endpoints, see File Objects Represent Connection Endpoints.
The TDI entity used to identify a specific process, or a specific group of processes is one or more open process-specific file objects that represent a particular transport address. Such a file object contains transport-supplied pointers to driver-maintained state that identifies the specific process and the node on which that process resides. The state that a "routable" transport, such as TCP/IP, Mcsxns, AppleTalk and NWLink, maintains about such an address also contains information that identifies the network (or subnet) on which the node resides.
Certain TDI-defined transport address types accommodate explicit or implicit indications of whether the address identifies a single process (unique address), or can identify a group of processes (group address). In the case of a group address, the TDI-defined address can contain information that identifies the specific processes, that is, the node on which the process resides, and the network (or subnet) on which the node resides.
A number of address types are supported by TDI. The following describes the format and usage of three commonly used TDI address types:
TDI_ADDRESS_NETBIOS
The NetBIOS-type address consists of a standard 16-character NetBIOS name, and a member that indicates if the name is registered (or to be registered) as a unique name (indicating that the name identifies a single process), or as a Group name (indicating that the name can identify a group of processes).Because the transport driver ensures that a unique name is in use by only one process on the network at a time, such a name not only identifies the process, it also implicitly identifies the node on which that process resides.
If the registered name is a group name, it can be an address available to many processes on many stations. Thus a group name identifies all processes that registered the name as well as the nodes on which those processes reside.
TDI_ADDRESS_IP
The IP-type address consists of a port number and a standard Internet Protocol (IP) address. Because TCP/IP allows the same port number to be registered by processes on many nodes, the IP address is required to uniquely identify the node and the port number is required to uniquely identify the process on that node.For connectionless data transfer (using the TCP/IP UDP protocol), the same port number can be registered by many processes on the same station. In addition, certain IP addresses can be used by more than one node. Data sent to a TDI address that consists of this type of port number and IP address will be received by all nodes to which the IP address applies; on those nodes, the data will be passed to all processes that have registered the specified (UDP) port number.
TDI_ADDRESS_IPX
The IPX-type address consists of a four-byte network number, a six-byte node number, and a two-byte port number. Because IPX allows the same port number to be registered by processes on many nodes, an IPX address is required to uniquely identify the network and the node, while the port number can be used to uniquely identify the process on that node.
Note The TDI feature is deprecated and will be removed in future versions of Microsoft Windows. Depending on how you use TDI, use either the Winsock Kernel (WSK) or Windows Filtering Platform (WFP). For more information about WFP and WSK, see Windows Filtering Platform and Winsock Kernel. For a Windows Core Networking blog entry about WSK and TDI, see Introduction to Winsock Kernel (WSK).