• smb协议心得


    *************SMB服务端代码实现****************************************************

    github:https://github.com/FileSysOrg/jfileserver

    代码官方配置文档:https://filesys.org/wiki/index.php/Configuring_JFileServer

    *************SMB协议解析************************************************************
     -------------------------------------------------------------------------
    | TCP头 | NETBIOS头 | SMB头 | SMB COMMAND头 | 数据 |
     -------------------------------------------------------------------------

    1.TCP Header的长度为20字节
    2.NETBIOS Header的长度为4字节(2-4字节定义smb包长度)
    3.SMB Header的长度为32字节(第5个字节定义smb命令类型)
    4.SMB COMMAND Header的长度不固定

    *************SMB2协议过程************************************************************
    1. Negotiate Protocol Request
    在用户输入“服务器名”之后,首先要做的就是把服务器名解析为IP,可以通过DNS还是NetBIOS解析。
    得到IP地址后,客户端就向服务器发送第一个SMB请求:“Negotiate Protocol Request”。这个请求包含了客户端所支持的各种 SMB Dialect。

    2. Negotiate Protocol Response
    服务器收到该请求后,选择一个它支持的最新版本(比如NT LM 0.12),再通过“Negotiate Protocol Response”回复给客户端

    3. Session Setup Request
    Negotiation 结束之后,客户端请求和服务器建立一个session,在客户端发送的Session Setup Request里,包含了身份验证请求(如Kerberos的AP_REQ)。

    4. Session Setup Response
    服务器回复Session Setup Response,包含了验证结果(如Kerberos的AP_REP)。

    5. Tree Connect Request
    Session Setup通过后,客户端就成功的连上了服务器,客户端发送的Tree Connect Request来访问具体的共享。
    如果前面没有指定共享名(服务器名),客户端访问的是命名管道$IPC,如果指定了服务器共享名,那么这儿就是访问共享名的部分了。

    6. Tree Connect Response
    服务器在检查过用户对该路径的权限后,回复Tree Connect Response。
    检查用户权限是这样进行的:服务器从Session Setup Request中已经得到用户所属的组,再通过和该路径上的ACL对比,即可得到用户权限。至此,用户就进入了共享文件夹。

    *************参考链接************************************************************
    SMB2数据包:https://wiki.wireshark.org/SMB2
    SMB协议详解与SMB命令:https://blog.csdn.net/qq_33336155/article/details/53307308

  • 相关阅读:
    Rust 常见集合
    Rust模块
    Rust包和crate以及模块
    Rust枚举和模式匹配
    React Native滚动到指定位置
    三行代码让你的React/RN应用动起来
    React Native添加自定义全局组件
    MAC下网易MuMu模拟器调试ReactNative
    解决React Navigation goBack()无效
    “Mac应用”已损坏,打不开解决办法
  • 原文地址:https://www.cnblogs.com/weihuang6620/p/13826405.html
Copyright © 2020-2023  润新知