服务器消息块(Server Message Block,缩写为SMB),又称网络文件共享系统(Common Internet File System,缩写为CIFS, /ˈsɪfs/),一种应用层网络传输协议,由微软开发,主要功能是使网络上的机器能够共享计算机文件、打印机、串行端口和通讯等资源。它也提供经认证的进程间通信机能。它主要用在装有Microsoft Windows的机器上,在这样的机器上被称为Microsoft Windows Network。
经过Unix服务器厂商重新开发后,它可以用于连接Unix服务器和Windows客户机,执行打印和文件共享等任务。
与功能类似的网络文件系统(NFS)相比,NFS的消息格式是固定长度,而CIFS的消息格式大多数是可变长度,这增加了协议的复杂性。CIFS消息一般使用NetBIOS或TCP协议发送,分别使用不同的端口139或445,目前倾向于使用445端口。CIFS的消息包括一个信头(32字节)和消息体(1个或多个,可变长)。
### 历史
SMB协议是一个网络文件共享协议,基于NetBIOS,TCP/IP和IPX/SPX 。最初由IBM在1984年设计,如今在网络中随处可见。我们只专注于微软实行的协议——有很多复杂且特殊的扩展默认在自Window NT 4.0开始的所有版本。如果说之前的版本主要用NetBIOS,从Window2000 SMB开始默认用UDP 137/138端口,TCP137/139,TCP 445端口(Direct SMB)
### 特性
#### SMB可以以不同方式运行在会话层或者更低的网络层之上:
直接接运行在 TCP 上 port 445;[1]
通过使用 NetBIOS API, 它可以运行在几种不同的 transports:[2]
基于 UDP ports 137, 138 & TCP ports 137, 139 (NetBIOS over TCP/IP);
基于一些传统协议,例如 NBF (incorrectly referred to as NetBEUI)。
SMB 服务是 Microsoft's Distributed File System 实现的基础.
SMB的进程间通信机制值得一提。通过这个系统,它提供命名管道。这个机制是最早的、程序员可以使用的少数进程间通信之一,它继承客户端联系SMB服务器时的认证来提供服务。命名管道继承认证是一个独特和透明的机制,因此使用Windows API的程序员和Windows的用户均将它看作是自然的。
有些服务使用命名管道,比如使用通过SMB的微软远程过程调用的程序,也允许微软远程过程调用客户端程序进行自己的认证,并且由此掩盖SMB服务器的认证。但是这个掩盖只在客户端程序的认证成功的情况下才生效。
另一个特点是SMB对文件使用一种特殊的、被称为伺机锁定的锁定机构来提高速度。
微软的分布式文件系统实现就基于SMB。
### 安全
SMB是入侵企图的主要攻击媒介之一,例如2014年索尼影业遭黑客攻击事件,以及2017年的WannaCry勒索软件攻击。
这里仅对SMB的协议与端口的基础知识作一个初步的了解。
参考:
维基百科:https://en.wikipedia.org/wiki/Server_Message_Block
经过Unix服务器厂商重新开发后,它可以用于连接Unix服务器和Windows客户机,执行打印和文件共享等任务。
与功能类似的网络文件系统(NFS)相比,NFS的消息格式是固定长度,而CIFS的消息格式大多数是可变长度,这增加了协议的复杂性。CIFS消息一般使用NetBIOS或TCP协议发送,分别使用不同的端口139或445,目前倾向于使用445端口。CIFS的消息包括一个信头(32字节)和消息体(1个或多个,可变长)。
### 历史
SMB协议是一个网络文件共享协议,基于NetBIOS,TCP/IP和IPX/SPX 。最初由IBM在1984年设计,如今在网络中随处可见。我们只专注于微软实行的协议——有很多复杂且特殊的扩展默认在自Window NT 4.0开始的所有版本。如果说之前的版本主要用NetBIOS,从Window2000 SMB开始默认用UDP 137/138端口,TCP137/139,TCP 445端口(Direct SMB)
### 特性
#### SMB可以以不同方式运行在会话层或者更低的网络层之上:
直接接运行在 TCP 上 port 445;[1]
通过使用 NetBIOS API, 它可以运行在几种不同的 transports:[2]
基于 UDP ports 137, 138 & TCP ports 137, 139 (NetBIOS over TCP/IP);
基于一些传统协议,例如 NBF (incorrectly referred to as NetBEUI)。
SMB 服务是 Microsoft's Distributed File System 实现的基础.
SMB的进程间通信机制值得一提。通过这个系统,它提供命名管道。这个机制是最早的、程序员可以使用的少数进程间通信之一,它继承客户端联系SMB服务器时的认证来提供服务。命名管道继承认证是一个独特和透明的机制,因此使用Windows API的程序员和Windows的用户均将它看作是自然的。
有些服务使用命名管道,比如使用通过SMB的微软远程过程调用的程序,也允许微软远程过程调用客户端程序进行自己的认证,并且由此掩盖SMB服务器的认证。但是这个掩盖只在客户端程序的认证成功的情况下才生效。
另一个特点是SMB对文件使用一种特殊的、被称为伺机锁定的锁定机构来提高速度。
微软的分布式文件系统实现就基于SMB。
### 安全
SMB是入侵企图的主要攻击媒介之一,例如2014年索尼影业遭黑客攻击事件,以及2017年的WannaCry勒索软件攻击。
这里仅对SMB的协议与端口的基础知识作一个初步的了解。
参考:
维基百科:https://en.wikipedia.org/wiki/Server_Message_Block