IBM with the aim of turning DOS " LAN Manager product which it had started developing for OS/2 with Windows for Workgroups (circa 1992) and in later versions of Windows.
SMB was originally designed to run on top of the NBF , NetBIOS over Windows 2000, SMB runs by default directly on top of TCP — a feature known as "direct host SMB" where the server service listens on TCP port 445. [2]
At around the time when Sun Microsystems announced [3] , Microsoft launched an initiative in [ citation needed ] ), and added more features, including support for Internet-Drafts to the [4] though these submissions have expired.
Because of the importance of the SMB protocol in interacting with the widespread Microsoft Windows platform, coupled with the heavily modified nature of the SMB implementation present in that platform, the Implementation [ ]
SMB works through a file server ; but some other sections of the SMB protocol specialize in authentication at the very least. Almost all implementations of SMB servers use NT Domain authentication to validate user-access to resources.
The use of the SMB protocol has often correlated with a significant increase in unswitched network as the number of hosts increases. The implementation of name resolution infrastructure in the form of Dynamic DNS now configured as the default name resolution protocol for all Windows operating systems. Resolution of (short) NETBIOS names by DNS requires that DNS "guess" the fully qualified name, usually using a connection-specific DNS Suffix. WINS can still be configured as a secondary name resolution protocol for interoperability with legacy Windows environments and applications. Further, Microsoft DNS servers can forward name resolution requests to legacy WINS servers in order to support name resolution integration with legacy (pre-Windows 2000) environments that do not support DNS.
[5] For example, a VPN connection over the Internet will often introduce network latency. Microsoft has explained that performance issues come about primarily because SMB 1.0 is a block-level rather than a [6] Solutions to this problem include the updated SMB 2.0 protocol, TCP window scaling and [7] .
Microsoft added several extensions to its own SMB implementation. For example, it added [8] Later, [9] (subsequently lifted in 1996 when President Bill Clinton signed Executive order 13026 [10] ). Opportunistic locking support has changed with each server release.
In the SMB protocol, opportunistic locking is a locks , OpLocks are not used in order to provide mutual exclusion. The main goal of OpLocks is to provide synchronization for caching. There are 3 types of opportunistic locks:
Batch OpLocks were created originally to support a particular behavior of MS-DOS batch file execution operation in which the file is opened and closed many times in a short period. This is an obvious performance problem. To solve this, a client may ask for a OpLock of type "batch". In this case, the client delays sending the close request and if a subsequent open request is given, the two requests cancel each other.
When an application opens in "shared mode" a file hosted on an SMB server which is not opened by any other process (or other clients) the client receives an exclusive OpLock from the server. This means that the client may now assume that it is the only process with access to this particular file, and the client may now cache all changes to the file before committing it to the server. This is an obvious performance boost, since fewer round-trips are required in order to read and write to the file. If another client/process tries to open the same file, the server sends a message to the client (called a break or revocation) which invalidates the exclusive lock previously given to the client. The client then flushes all changes to the file.
If an exclusive OpLock is held by a client and a locked file is opened by a third party, the client has to relinquish its exclusive OpLock to allow the other client's write/read access. A client may then receive a "Level 2 OpLock" from the server. A Level 2 OpLock allows the caching of read requests but excludes write caching.
In contrast with the SMB protocol's "standard" behavior, a break request may be sent from server to client. It informs the client that an OpLock is no longer valid. This happens, for example, when another client wishes to open a file in a way that invalidates the OpLock. The first client is then sent an OpLock break and required to send all its local changes (in case of batch or exclusive OpLocks), if any, and acknowledge the OpLock break. Upon this acknowledgment the server can reply to the second client in a consistent manner.
Microsoft introduced a new version of the Server Message Block (SMB) protocol ( Windows Vista in 2006. [11] Although the protocol is proprietary, its specification has been published to allow other systems to interoperate with Microsoft operating systems that use the new protocol. [12]
SMB2 reduces the 'chattiness' of the protocol by reducing the number of commands and subcommands from over a hundred to just nineteen. [13] It has mechanisms for [5] SMB1 also has a compounding mechanism — known as AndX — to compound multiple actions, but Microsoft clients rarely use AndX.
SMB2 supports larger buffer-sizes, which can provide better performance with large file-transfers and better use of faster networks. [5]
It also introduces the notion of "durable file handles": these allow a connection to an SMB server to survive brief network-outages, such as may occur in a wireless network, without having to incur the overhead of negotiating a new session.
SMB2 includes support for [5] The SMB1 protocol uses 16-bit data sizes, which amongst other things, limits the maximum block size to 64K. SMB2 uses 32 or 64-bit wide storage fields, and 128 bits in the case of file-handles , thereby removing previous constraints on data sizes.
Windows Vista and later operating systems use SMB2 when communicating with other machines running Windows Vista or later. SMB1 continues in use for connections with older versions of Windows, as well as systems like Samba and various vendors' [14]
SMB2 brings two substantial benefits to Microsoft:
SMB 2.1, introduced with Windows 7 and Server 2008 R2, introduced further performance enhancements with a new opportunistic locking mechanism. [15]
The SMB "Inter-Process Communication" (IPC) system provides [ clarification needed ] first connected to an SMB server. [ citation needed ]
Some services that operate over named pipes, such as those which use Microsoft's own implementation of MSRPC over SMB, also allow MSRPC client programs to perform authentication, which over-rides the authorization provided by the SMB server, but only in the context of the MSRPC client program that successfully makes the additional authentication.
Since Windows domain controllers use SMB to transmit policies at login, they have packet- signing enabled by default to prevent [16] The design of [ citation needed ] to mitigate this performance-limitation by coalescing SMB signals into single packets.
Over the years, there have been many security vulnerabilities in Microsoft's implementation of the protocol or components that it directly relies on, [17] [18] [19] with the most recent vulnerability involving the SMB2 implementation. [20]
The specifications for the SMB and SMB2 procotols are available for free download from Microsoft's MSDN Open Protocol Site
There are a number of specifications that are relevant to the SMB protocol:
MS-CIFS is a recent replacement (2007) for the draft-leach-cifs-v1-spec-02.txt a document widely used to implement SMB clients, but also known to have errors of omission and commission
The list below explicitly refers to "SMB" as including an SMB client or an SMB server, plus the various protocols that extend SMB, such as the Network Neighborhood suite of protocols and the NT Domains suite. For simplicity and conciseness and vagueness, however, the list omits mention of the extent or completeness of the reimplementation or porting status for any of these implementations, "lumping" them all together simply as "SMB".
cs:Server Message Block eu:Server Message Block ko:서버 메시지 블록 ja:Server Message Block pt:Server Message Block sv:Server Message Block