SMB2 Protocol – 简介

SMB协议简介:

服务器信息块(SMB)协议是一个应用层协议主要用于在计算机间共享文件、打印机、串口等。

在介绍SMB协议的时候,一般提到使用的端口为139,445。 但是在Wiki里面是这样描述端口信息的。这儿以后研究。

The Server Message Block protocol can run on top of the Session (and lower) network layers in several ways:

SMB 一种客户机/服务器、请求/响应协议。通过 SMB 协议,客户端应用程序可以在各种网络环境下读、写服务器上的文件,以及对服务器程序提出服务请求。此外通过 SMB 协议,应用程序可以访问远程服务器端的文件、以及打印机、邮件槽(mailslot)、命名管道(named pipe)等资源。

在SMB协议中,每个特定的版本叫做一个dialect,在MS文档中指出CIFS其实就是一个SMB的一个版本,这儿笔者理解的应该就是SMB2。SMB2是一个新的版本,是对老版本SMB进行了重新设计。虽然后面出现了3.0的版本,但是由于是基于SMB2进行的改动,所以很多时候,我们统一都叫做SMB2。那么如果区分这个小版本的信息呢,我们可以通过dialect来判断。现在已经有了四个dialect:2.0,2.1, 3.0, 3.02 区分的方法会在学习Negotiation Protocol的时候详细介绍。

SMB在TCP/IP Model中的位置:

SMB更多的介绍,可以参考Wikipedia, 本文中我们学习的SMB2协议。

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)。关于认证协议Kerberos和NTLM,以后会再学习结束

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

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

7. 下面就是文件或文件夹操作的相关命令,如新建,打开,重命名,删除,关闭。读写操作等。我们在以后的文章里详细介绍。

SMB2的命令共有19个,如下。关于每个SMB2 数据包所用的命令,可以Packet Header里面的Command Flag里看到。

· 0x00 SMB2/NegotiateProtocol

· 0x01 SMB2/SessionSetup

· 0x02 SMB2/SessionLogoff

· 0x03 SMB2/TreeConnect

· 0x04 SMB2/TreeDisconnect

· 0x05 SMB2/Create

· 0x06 SMB2/Close

· 0x07 SMB2/Flush

· 0x08 SMB2/Read

· 0x09 SMB2/Write

· 0x0a SMB2/Lock

· 0x0b SMB2/Ioctl

· 0x0c SMB2/Cancel

· 0x0d SMB2/KeepAlive

· 0x0e SMB2/Find

· 0x0f SMB2/Notify

· 0x10 SMB2/GetInfo

· 0x11 SMB2/SetInfo

· 0x12 SMB2/Break

SMB2实验:

实验环境:

一台加入域的Windows 7机器A, 这台主机上,通过VMware建了一个Windows 8的虚拟机B。B访问\A的时候,在B上抓取的数据包。SMB||SMB2的数据包如下。关于具体每个Command的分析,我会在以后的Blog中介绍。

References:

1. http://en.wikipedia.org/wiki/Server_Message_Block

2. http://wiki.wireshark.org/SMB2

3. Microsoft SMB Protocol and CIFS Protocol Overview: http://msdn.microsoft.com/en-us/library/windows/desktop/aa365233(v=vs.85).aspx

4. [MS-SMB2]: Server Message Block (SMB) Version 2 Protocol Specification

5. Implementing CIFS http://ubiqx.org/cifs/Book.html

6. http://msdn.microsoft.com/en-us/library/cc246482.aspx

7. http://channel9.msdn.com/Blogs/Darryl/Troubleshooting-Windows-SMBSMB2-Issues 8

8. P神的Blog: http://blog.sina.com.cn/s/blog_70398db50100yzuf.html

9. Common Internet File System: http://technet.microsoft.com/en-us/library/cc939973.aspx

https://tonglol.wordpress.com/2014/08/17/smb2-protocol-%E7%AE%80%E4%BB%8B/

https://tonglol.wordpress.com/category/cifs/page/2/

SMB2 Protocol – 简介(应用层协议主要用于在计算机间共享文件、打印机、串口等)的更多相关文章

  1. RTSP RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议

    RTSP 编辑 RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学.网景和RealNetwo ...

  2. UNIX/Linux网络编程基础:应用层协议简介

    目录 1.HTTP协议 2.FTP协议 3.TELNET协议 4.NFS协议 1.HTTP协议 应用层协议HTTP协议是Web的核心.HTTP协议在Web的客户程序和服务器程序中得以实现,运行在不同系 ...

  3. 应用层协议——DHCP

    常见协议分层 网洛层协议:包括:IP协议.ICMP协议.ARP协议.RARP协议. 传输层协议:TCP协议.UDP协议. 应用层协议:FTP.Telnet.SMTP.HTTP.RIP.NFS.DNS ...

  4. UDS(ISO14229-2006) 汉译(No.7 应用层协议)【未完,待续】

    7.1定义 应用层协议通常作为确认消息的传输,意味着从客户端发送的每一个请求都将有由服务器端产生的与之相对的响应. 唯一的例外在于:例如使用了功能寻址方式,或者该请求/指示没有指定生成响应/确定的少数 ...

  5. 常用应用层协议HTTP、RTSP、RTMP比较

    HTTP(超文本传输协议).RTSP(Real Time Streaming Protocol实时流传输协议).RTMP(Routing Table Maintenance Protocol路由选择表 ...

  6. Web应用与应用层协议

    Web应用与应用层协议 本篇博文中的主要参考文献是<计算机网络高级教程>,分别是吴功宜老先生和吴英教授合著.这部教程是我研究生老师所推荐的网络必读科目,由于该教程讲解的基础知识详细,但内容 ...

  7. UDS(ISO14229-2006) 汉译(No.7 应用层协议)

    标签:cte   amp   通信   pac   condition   man   没有   参数错误   family 7.1定义 应用层协议通常作为确认消息的传输,意味着从客户端发送的每一个请 ...

  8. 第五章Web应用与应用层协议

    Web应用与应用层协议 本篇博文中的主要参考文献是<计算机网络高级教程>,分别是吴功宜老先生和吴英教授合著.这部教程是我研究生老师所推荐的网络必读科目,由于该教程讲解的基础知识详细,但内容 ...

  9. TCP/IP笔记(八)应用层协议

    TCP/IP的应用层涵盖了OSI参考模型中第5.第6.第7层的所有功能,不仅包含了管理通信连接的会话层功能.转换数据格式的标识层功能,还包括与对端主机交互的应用层功能在内的所有功能. 利用网络的应用程 ...

随机推荐

  1. linux matplotlib入门

    python linux matplotlib 安装:   sudo apt-get install python-numpy 必须 先安装numpy matplotlib 安装:   sudo ap ...

  2. js event bubble and capturing

    Bubble: pppppp Capturing pppppp Mix pppppp To Stop Bubble pppppp // JS Bin

  3. [收藏]win8安装弹出输入的产品密钥与用于安装任何可用windows映像都不匹配

    问题描述: 帮朋友装win8(第一次装大神不要喷我啊)结果到 现在安装 这一步的时候 点击 现在安装 弹出个窗口 说输入的产品密钥与用于安装任何可用windows映像都不匹配.请输入其他产品密钥 解决 ...

  4. windows和linux环境下制作U盘启动盘

    新笔记本上,要装xp的系统,100%会破坏原有的Linux系统,因为安装xp的时候会自动覆盖硬盘的主引导扇区,这个扇区一旦被重写,那么原有的linux根本就启动不了. 要想玩linux和xp双系统,一 ...

  5. 【CentOS 6.5】 U盘安装以及桌面空白问题

    在研华ARK-5260上安装CentOS 6.5 下载CentOS-6.5-x86_64-bin-DVD1.iso 附上百度网盘下载地址:http://pan.baidu.com/s/1eQf1Eeu ...

  6. github/gitlab 管理多个ssh key

    github/gitlab 管理多个ssh key 以前只使用一个 ssh key 在github上提交代码,由于工作原因,需要再添加一个ssh key在公司的 gitlab上提交代码,下面记录下配置 ...

  7. 待验证的一些IOS问题

    1.images.assert中的图片格式必须是png.(jpg格式的图片不行)

  8. FastDFS配置文件(tracker.conf)

    # ===========================基本配置==================================== # 该配置文件是否生效 # false:生效 # true: ...

  9. IDEA for Mac 解决控制台乱码问题

    近期发现 idea for mac 版本中 tomcat 控制台有中文的地方出现乱码问题,其实很简单就可以解决. 这里做个笔记,以后可以方便不会的人来解决 ---------------------- ...

  10. hdu 1285 确定比赛名次 拓扑排序

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1285 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛 ...