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

*************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

smb协议讲解_smb协议心得相关推荐

  1. windows smb更改端口_SMB协议(使用说明+过程详解+抓包分析)

    一.SMB概述 SMB(ServerMessage Block)通信协议是微软(Microsoft)和英特尔(Intel)在1987年制定的协议,主要是作为Microsoft网络的通讯协议.SMB 是 ...

  2. 北斗通讯协议4.0 java_北斗4.0协议讲解.doc

    北斗4.0协议讲解 北斗用户机用户接口协议 (4.0版本外用) 接口数据传输约定 串口非同步传送,参数定义如下: 传输速率:19200bit/s(默认),可根据用户机具体情况设置其它速率: 1 bit ...

  3. 基于STM32 + 超详细对新手全面解析讲解SPI协议(附源码)

    前言        本次我们学习一下STM32的一个基本外设 --- SPI,全程参考手册讲解,讲述SPI的工作模式和作用,让大家快速掌握和了解SPI通讯协议.本篇博客大部分是自己收集和整理,借鉴了很 ...

  4. Camera DVP协议讲解

    Camera DVP协议讲解 该文章写于2016年,一直未发表.近期工作中又涉及到了Camera相关的内容,重新温习了下相关知识.决定把这篇文章发表出来,大家共同学习.   DVP(Digital V ...

  5. 7层每次有哪些最基本的协议讲解

    OSI七层模型的每一层都有哪些协议 lisa890608 2012-11-27 20:13:07 45385 收藏 18 展开 TCP/IP: 数据链路层:ARP,RARP 网络层: IP,ICMP, ...

  6. WIZnet W5500系列培训活动之“MQTT协议讲解和实践(接入OneNET)”

     万物联网的时代已经到来,物联网也由当初的概念开始进一步落实.物联网通信协议当中发展最迅速.应用最广泛的就是MQTT,它是轻量级基于代理的发布/订阅的消息传输协议,并且可以通过很少的代码和带宽与远程设 ...

  7. 蓝牙DID协议讲解 Bluetooth Device ID

    零. 概述 主要介绍下蓝牙协议栈(bluetooth stack)DID(Device ID)协议讲解 btsnoop以及流程在资料中的......\STM32_UBUNTU_BLUETOOTH\2- ...

  8. 计算机网络基础网络协议——讲解(全面总结)

    一.操作系统基础 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在"裸机"上的最基本的系统软件,任何其他软件都必须 ...

  9. C语言实现MQTT协议(一)协议讲解

    MQTT介绍 MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议.它的设计思想是轻巧.开放.简单.规范,易于实现.这些特点使得它对很多场景来说都是很好的选择,特别是对于受限的环境如机器与机器 ...

  10. DeviceNet现场总线协议讲解

    DeviceNet现场总线协议讲解 2008-2-28 10:27:00 来源:作者: 网友评论 0条 点击查看 <script src="http://www.ca800.com/a ...

最新文章

  1. java 一次性输入与输出_Java入门——(7)IO(输入与输出)
  2. OpenCV | Laplacian算子的使用
  3. Linux Shell常用技巧(一)
  4. 如果白百何夫妻离婚了,房贷该谁来还?
  5. html css精灵,谈谈CSS Sprites(css精灵)
  6. 使用base64 对Json 的返回数据进行优化
  7. hdu 4323 Magic Number dp 多校联合赛(三)第四题
  8. c语言temp=p1,求助单片机C语言大神!!!uchar temp; temp=0; P1=temp;temp++;这怎么理解?...
  9. SpringMVC框架中@Controller类的方法的返回值的详细介绍
  10. 人过大佛寺,寺佛大过人
  11. 蓝桥杯 算法训练 跳马
  12. 计算机视觉算法面试准备
  13. 求大神帮助 百练我爱北大,编程题目
  14. OpenCV-图像翻转函数cv::filp
  15. 如何生成gazebo仿真环境的二维地图真值
  16. 终于连熊也可以代表了!
  17. 泰森多边形(Voronoi图)
  18. 杭电信工微巴士功能技术设计
  19. Android深色模式适配原理分析,android应用开发
  20. 一个朋友椰子 blog上的文章

热门文章

  1. ts格式转换器android,ts格式转换器下载|ts格式转换器 v6.2-520下载站
  2. 使用latex做三线表
  3. 使用树莓派gpio连接ps2手柄模块(附程序)
  4. 树莓派_360wifi2_佳能MP236打印机
  5. 微信PC版的API接口
  6. C语言 Mkl 矩阵乘法,MKL库矩阵乘法
  7. win10关闭windows聚焦_win10 系统中的windows聚焦是什么意思 - 卡饭网
  8. 公网远程Everything快速搜索私有云资料【内网穿透】
  9. vs2003常见问题
  10. 计算机中英文打字文章,中英文打字练习文章优美范文.doc