我知道通过 HTTP 进行通信时,必须先下载源代码才能在浏览器上查看。但是使用 Windows 文件共享时(通过网络路由器共享和直接共享,例如从 PC-1 到 PC-2 的 LAN 电缆)实际上是什么机制在起作用?
- 是否向服务器发送请求,服务器开始在某个端口上传输数据以供客户端接收?
- 客户端是否像访问传统驱动器一样访问服务器的驱动器,读取数据并将其复制到自己的驱动器?
- 服务器是否将文件复制到客户端的硬盘上?
答案1
Windows 文件共享实际上是如何工作的?
Microsoft SMB 协议身份验证
Microsoft SMB 协议中使用的安全模型与其他 SMB 变体使用的安全模型相同,由两个安全级别组成 - 用户和共享。共享是 Microsoft SMB 协议客户端可以访问的文件、目录或打印机。
用户级身份验证表示尝试访问服务器上共享的客户端必须提供用户名和密码。通过身份验证后,用户可以访问服务器上所有不受共享级安全保护的共享。此安全级别允许系统管理员明确确定哪些用户和组可以访问共享。
共享级身份验证表示对共享的访问仅受分配给该共享的密码控制。与用户级安全不同,此安全级别不需要用户名进行身份验证,也不建立用户身份。
在这两种安全级别下,密码在发送到服务器之前都会被加密。Microsoft SMB 协议支持 NTLM 和较旧的 LAN Manager (LM) 加密。这两种加密方法都使用质询-响应身份验证,其中服务器向客户端发送随机字符串,客户端返回计算出的响应字符串,以证明客户端具有足够的凭据进行访问。
Microsoft SMB 协议和 CIFS 协议概述
服务器消息块 (SMB) 协议是一种网络文件共享协议,在 Microsoft Windows 中实现时称为 Microsoft SMB 协议。定义特定协议版本的消息包集称为方言。通用 Internet 文件系统 (CIFS) 协议是 SMB 的一种方言。SMB 和 CIFS 也可用于 VMS、多个版本的 Unix 和其他操作系统。
有关 CIFS 的技术参考资料可从 Microsoft Corporation 获取,网址为:通用互联网文件系统 (CIFS) 文件访问协议。
尽管其主要目的是文件共享,但 Microsoft SMB 协议的其他功能包括以下内容:
- 方言协商
- 确定网络上的其他 Microsoft SMB 协议服务器,或网络浏览
- 通过网络打印
- 文件、目录和共享访问身份验证
- 文件和记录锁定
- 文件和目录更改通知
- 扩展文件属性处理
- Unicode 支持
- 机会锁
在 OSI 网络模型中,Microsoft SMB 协议最常用作应用程序层或表示层协议,并且它依赖于较低级别的协议进行传输。Microsoft SMB 协议最常使用的传输层协议是 TCP/IP 上的 NetBIOS(氮杂环丁烷)。但是,Microsoft SMB 协议也可以在没有单独的传输协议的情况下使用——Microsoft SMB 协议/NBT 组合通常用于向后兼容。
Microsoft SMB 协议是一种客户端-服务器实现,由一组数据包组成,每个数据包包含客户端发送的请求或服务器发送的响应。这些数据包可大致分为以下几类:
- 会话控制数据包——建立和断开与共享服务器资源的连接。
- 文件访问数据包——访问和操作远程服务器上的文件和目录。
- 通用消息包——将数据发送到打印队列、邮件槽和命名管道,并提供有关打印队列状态的数据。
一些消息包可能会被分组并在一次传输中发送,以减少响应延迟并增加网络带宽。这称为“批处理”。Microsoft SMB 协议数据包交换方案 部分描述了使用数据包批处理的 Microsoft SMB 协议会话的示例。
- 描述:要使用 Microsoft SMB 协议在客户端和服务器之间建立连接,您必须首先确定客户端和服务器都支持的具有最高功能级别的方言。
- 描述:Microsoft SMB 协议中使用的安全模型与其他 SMB 变体使用的安全模型相同,由两个安全级别组成 - 用户和共享。共享是 Microsoft SMB 协议客户端可以访问的文件、目录或打印机。
- 描述:客户端和服务器之间的 Microsoft SMB 协议数据包交换的示例。
评论澄清
文件访问数据包——访问和操作远程服务器上的文件和目录。这是怎么发生的?将请求的数据提供给客户端的响应数据包在哪里? 海妖
每个数据包通常都是某种基本请求,例如打开文件、关闭文件或读取文件。然后,服务器接收数据包,检查请求是否合法,验证客户端是否具有适当的文件权限,最后执行请求并向客户端返回响应数据包。然后,客户端解析响应数据包并确定初始请求是否成功。
更多资源
使用该协议建立客户端-服务器会话所涉及的身份验证方面的图表和解释。
阅读有关 SMB 的更多详细信息。