Comparing TCP and SMB Connections for Windows XP Embedded-based Devices

 

Comparing TCP and SMB Connections for Windows XP Embedded-based Devices

by Katherine Enos
Microsoft Corporation
February 2005
Applies to Microsoft® Windows® XP Embedded with Service Pack 2

Summary

This white paper briefly describes the implementations of Transmission Control Protocol (TCP) and Microsoft SMB Protocol for Windows operating systems and compares their licensing restrictions for Windows XP Embedded run-time images.

Contents

Transmission Control Protocol (TCP)

Microsoft SMB Protocol

Introduction

Microsoft® Windows® XP Embedded with Service Pack 2 provides the same support for network transport protocols that Microsoft® Windows® XP Professional offers. This white paper briefly describes the implementations of Transmission Control Protocol (TCP) and Server Message Block (SMB) protocol in Windows XP Embedded. This white paper also explains the licensing restrictions that apply to using TCP and Microsoft SMB Protocol on a Windows XP Embedded-based run-time image.

Transmission Control Protocol (TCP)

Microsoft networking services use Transmission Control Protocol (TCP) to perform common operations including logon, file and print sharing, and replication of domain controller information. TCP is a reliable, connection-oriented protocol that supports large networks and scales to the enterprise. TCP works on layer 4 of the Open Systems Interconnection (OSI) reference model, the transport layer.

TCP is a primary protocol from the TCP/IP protocol suite, the standard set of protocols for communications over the Internet. The Microsoft TCP/IP protocol stack is highly adaptable; Windows-based servers dynamically adjust to network stresses to provide the greatest throughput and reliability that is possible on a per-connection basis.

Windows Network Driver Interface Specification (NDIS) provides a standard interface for communication between network device drivers and the Windows subsystem. NDIS 5.1 added task offloading capabilities that can significantly increase performance. For example, TCP checksum calculations can be performed on the hardware level by network interface cards (NICs) whose drivers support this functionality.

As a connection-oriented protocol, TCP data transmission is based on the receipt and acknowledgement of a "window" of data. The size of a window is specified in bytes; on Windows Server 2003, the window size was enlarged to increase network throughput. Microsoft made many other enhancements to the TCP/IP protocol stack for Windows Server 2003; for more information, see Microsoft Windows Server 2003 TCP/IP Implementation Details on the Microsoft Web site.

Like Windows XP Professional, Windows XP Embedded supports TCP functionality as part of the Microsoft TCP/IP stack. In Windows XP Embedded, the Core Networking component is typically used to provide basic network services on a Windows XP Embedded-based operating system. If the size of your run-time image footprint is not an issue on your target device, you can quickly add a broad range of network capabilities to your image configuration by using the Networking Application Compatibility component.

The following table provides a partial list of the components that Windows XP Embedded includes to support the use of TCP on embedded devices.

Component Description
TCP/IP Networking Implements the core TCP/IP protocol stack, including the Internet Protocol version 4 (IPv4) release of TCP, User Datagram Protocol (UDP), Internet Control Message Protocol (ICMP), Internet Group Membership Protocol (IGMP), and Address Resolution Protocol (ARP).
TCP/IP Over 1394 Provides network drivers that support the use of IPv4 over the IEEE 1394 bus specification.
TCP/IP Version 6 Implements TCP, UDP, and raw protocols over the TCP/IP version 6 network layer protocol.
TCP/IP Version 6 Service Provides the 6to4 service that configures the IPv6 tunnel over the IPv4 network layer protocol.
TCP/IP Version 6 Utilities Provides utilities that are required to configure the IPv6 protocol stack and to troubleshoot connectivity issues.
Basic TCP/IP Networking Bundles components to support basic TCP/IP services, including DHCP and Winsock.
TCP/IP Networking with Client For MS Networks Bundles components that provide basic TCP/IP services, including DHCP, Winsock, and Client for Microsoft Networks.
TCP/IP Networking with File Sharing and Client for MS Networks Bundles components that provide basic TCP/IP services, including DHCP, Winsock, and Client for Microsoft Networks. Includes the File Sharing component, which makes it possible for Windows operating systems to provide file and print services through Microsoft SMB Protocol.
Ndis Provides the NDIS library, a kernel-mode library that defines an interface for communications between network drivers and the Windows network subsystem.

In conclusion, Microsoft provides a robust implementation of TCP in the Microsoft TCP/IP stack. Although TCP is complicated and can prove tricky to implement, it is a powerful protocol that easily scales to the enterprise and over large routed networks. There is no limit to the number of simultaneous connections that can be made using TCP on a Windows-based network.

For detailed information about the components that support TCP in Windows XP Embedded, including their dependencies, see the Component Help documentation that is included with Windows XP Embedded.

For more information about adding network capabilities to your run-time image, see Network Configuration in the Windows XP Embedded documentation on the MSDN Web site.

For more information about the Microsoft TCP/IP stack, see Microsoft Windows Server 2003 TCP/IP Implementation Details and Windows TCP/IP Stack, both on the Microsoft Web site.

Microsoft SMB Protocol

Microsoft SMB Protocol is an implementation of the SMB Protocol, a file sharing protocol that employs a client-server method of communication. The Microsoft implementation uses the set of message packets that are specified for Common Internet File System (CIFS) protocol, which is a "dialect" of the SMB Protocol. Microsoft SMB clients use CIFS to request file and print services from network servers.

Microsoft SMB Protocol typically works on the presentation and application layers of the OSI reference model, layers 6 and 7. While it is typically used to share files over a network, Microsoft SMB Protocol offers capabilities including:

  • Locating other Microsoft SMB Protocol servers on a network
  • Network printing
  • Authentication of access to files, directories, and shares
  • Locking files and records
  • Change notifications for files and directories
  • Negotiating protocol dialects
  • Handling extended file attributes
  • Unicode support
  • Opportunistic locks

Although Microsoft SMB Protocol does not require a separate transport protocol, it is frequently implemented with NetBIOS—a session-level interface—over TCP/IP; on Windows-based systems, this implementation is known as NetBT.

NetBT is typically used to provide backward compatibility; however, a NetBIOS network typically uses a broadcast-based method of name resolution, which has disadvantages including:

  • No interoperability over routers in a routed network
  • Broadcast traffic requires significant network bandwidth
  • Normal network operations require the consumption of resources on every network node in the broadcast area

NetBIOS-based networks are effective in a small local area network (LAN) environment; however, they are not workable for large LAN or wide area network (WAN) environments, or in environments where routers are used.

Early Microsoft networking products used NetBIOS Extended User Interface (NetBEUI) protocol with a NetBIOS API. While NetBEUI is small and fast, it is not appropriate for routed networks because it lacks a networking layer. NetBEUI is not supported on Windows XP Embedded, Windows XP Professional, or Microsoft Windows Server 2003.

To enable NBT functionality, add the NetBIOS over TCP/IP component to your run-time image configuration. This component provides the TCP/IP NetBIOS Helper service, which runs within the context of SvcHost.exe, in the ImhSvc.dll file. The NetBIOS component is also included as a dependency in the TCP/IP Networking component.

The File Sharing component provides file and print services through the SMB protocol. The File Sharing component is a dependency of the TCP/IP Networking with File Sharing and Client for MS Networks component, which bundles the components that are required to provide basic TCP/IP services. For more information about these components, see the Component Help documentation that is included with Windows XP Embedded.

In conclusion, Microsoft SMB Protocol is based on the CIFS dialect of the SMB protocol and is typically used for file sharing. On Windows-based systems, Microsoft SMB Protocol is commonly used with NetBIOS over TCP/IP for backward compatibility. This implementation, called NetBT, is practical for small LAN environments and networks that are not routed. Windows XP Embedded licensing guidelines permit no more than 10 simultaneous connections over Microsoft SMB Protocol to a Windows XP Embedded system.

For general information about the SMB protocol, see Microsoft SMB Protocol and CIFS Protocol Overview in the MSDN Library. For detailed information about CIFS, see the Common Internet File System (CIFS) documentation in the MSDN Library.

For More Information

For more information about Windows XP Embedded, see the Windows XP Embedded documentation on the Microsoft Web site.

For more information about the components that Windows XP Embedded includes, see the Component Help documentation that is provided with Windows XP Embedded.

For more information about CIFS, see the Common Internet File System (CIFS) documentation in the MSDN Library.

For more information about the CIFS dialect of the SMB protocol, see Microsoft SMB Protocol and CIFS Protocol Overview in the MSDN Library.

For information about licensing Microsoft SMB Protocol and the CIFS protocol, see Licensing Microsoft's Common Internet File System (CIFS) and Server Message Block (SMB) File System Protocols in the MSDN Library.

For more information about the Microsoft implementation of the TCP/IP stack, see Windows TCP/IP Stack in the MSDN Library.

For detailed information about the Microsoft implementation of TCP in Windows Server 2003, see Microsoft Windows Server 2003 TCP/IP Implementation Details in the MSDN Library.