一、概述

  SMB(Server Message Block)是由微软开发的一种软件程序级的网络传输协议,主要用来使得一个网络上的计算机共享计文件、打印机、串行端口和通讯等资源。它也提供认证的进行进程间通信机能。经过Unix服务器厂商重新开发后,它可以用于连接Unix服务器和Windows客户机,执行打印和文件共享等任务。

  SMB一开始的设计是在NetBIOS协议上运行的(而NetBIOS本身则运行在NetBEUI、IPX/SPX或TCP/IP协议上)。从Windows2000开始,微软引入SMB Direct Over TCP,重新命名为 CIFS(Common Internet File System),并打算将它与NetBIOS相脱离,试图使它成为Internet上计算机之间相互共享数据的一种标准。CIFS是公开或开放的SMB协议版本。

二、基于NBTSMB

  NetBIOS 支持两种通信模式:会话(session)或数据报(datagram)。会话模式是指两台计算机为“对话"建立一个连接,允许处理大量信息,并支持差错监测和恢复功能。数据报模式面向“无连接"(信息独立发送)操作,发送的信息较小,由应用程序提供差错监测和恢复功能。此外数据报模式也支持将信息广播到局域网中的每台计算机上。若SMB运行在NBT(NetBIOS Over TCP)协议上,而NBT提供三种不同的服务:

  • 名字服务(NetBIOS Name Service)
  • 数据包服务(NetBIOS Datagram Service)
  • 会话服务(NetBIOS Session Service)

NetBIOS 名称映射到IP地址上有三种方法:

  1. IP 广播 - 当目标地址不在本地 cache 上时,广播一个 包含目标计算机 NetBIOS 名称的数据包。目标计算机返回其 IP 地址。
  2. lmhosts 文件 - 这是一个负责映射 IP 地址和 NetBIOS 计算机名称的文件。
  3. NBNS - NetBIOS 命名服务器负责 将 NetBIOS 名称映射到 IP 地址上。

1. 名字服务(NetBIOS Name Service,即NBNS)

  运行在137(UDP)端口,提供计算机的名字或IP地址查询服务,类似于TCP/IP协议中的DNS,负责查找目标机器相应的节点地址(TCP/IP协议中为IP地址),并赋予一个NetBIOS名称。可以使用两种方法:

  第一种:位于同一工作组中的电脑之间利用广播功能进行计算机名管理。电脑在启动或者连接网络时,会向同一工作组中的所有计算机质询有没有和自己相同的NetBIOS名称。

  另一种:利用WINS(Windows因特网名称服务)管理NetBIOS名称。WINS服务器用于登记记录计算机NetBIOS名称和IP地址的对应关系,供局域网计算机查询。WINS客户端在系统起动时或连接网络时会将自己的NetBIOS名称与IP地址发送给WINS服务器。

  非法入侵者向目标主机的138端口发送一个连接请求,就能获得目标主机的名称、注册用户名,以及是否安装主控控制器,IIS是否正在运行等。

2. 数据包服务(NetBIOS Datagram Service)

  运行在138(UDP)端口,提供NetBIOS浏览功能,显示连接到于网络的计算机设备列表。每台电脑在启动时或连接网络时通过138端口广播自己的NetBIOS名称,收到NetBIOS广播的计算机会将该计算机追加到浏览列表中;关闭电脑时,计算机会通过138端口广播,收到NetBIOS广播的计算机会将该计算机从浏览列表中删除;当计算机需要连接到于网络的计算机设备列表,会广播一个请求,收到请求主机会发送列表。非法入侵者通过与目标主机的138端口发送请求,就能获得目标主机所处的局域网网络名称以及目标主机的计算机名称。

3. 会话服务(NetBIOS Session Service)

  运行在139(TCP)端口,提供“NetBIOS Session Service”服务,基于SMB协议对外提供共享服务,包括Windows文件和打印机共享以及Unix中的Samba服务。

三、CIFS(SMB增强版)

  若SMB直接运行在TCP上,即CIFS协议,占用的TCP端口号是445。提供的功能与139端口完全相同。为保证向后兼容性,Windows 2000以后版本中基于NBT的SMB和CIFS同时并存。当Windows系统(允许NBT)来连接SMB服务器时,同时尝试连接139和445端口。如果445端口有响应,那么发送RST包给139端口断开连接,使用455端口提供SMB服务。当445端口无响应时,使用139端口提供SMB服务。

SMB协议概述的更多相关文章

  1. UWP开发技巧:实现SMB协议操作文件服务器文件

    问题来源 文件服务器文件夹操作在PC与Surface端确实还是和传统操作一样没什么区别,但是到了手机端与Surface Hub就没那么方便了,因为文件资源管理器Explorer根本没法添加网路硬盘.对 ...

  2. SMB协议原理抓包分析

    SMB协议原理抓包分析 目录: 1.SMB概述 2.SMB原理 3.SMB配置 一.SMB概述 SMB(全称是Server Message Block)是一个协议名,可用于在计算机间共享文件.打印机. ...

  3. 基于SMB协议的共享文件读写 博客分类: Java

    基于SMB协议的共享文件读写 博客分类: Java   一.SMB协议 SMB协议是基于TCP-NETBIOS下的,一般端口使用为139,445. 服务器信息块(SMB)协议是一种IBM协议,用于在计 ...

  4. javaweb学习总结十九(http协议概述以及http请求信息分析)

    一:http协议概述 1:http协议定义 2:使用telnet程序连接web服务器,获取资源 3:http协议:超文本传输协议,它是基于tcp/ip协议,就是建立在tcp/ip之上工作的, http ...

  5. 基于SMB协议的共享文件读写

    一.SMB协议 SMB协议是基于TCP-NETBIOS下的,一般端口使用为139,445. 服务器信息块(SMB)协议是一种IBM协议,用于在计算机间共享文件.打印机.串口等.SMB 协议可以用在因特 ...

  6. 嵌入式linux的网络编程(1)--TCP/IP协议概述

    嵌入式linux的网络编程(1)--TCP/IP协议概述 1.OSI参考模型及TCP/IP参考模型 通信协议用于协调不同网络设备之间的信息交换,它们建立了设备之间互相识别的信息机制.大家一定都听说过著 ...

  7. 【HTTP 2】HTTP/2 协议概述(HTTP/2 Protocol Overview)

    前情提要 在上一篇文章<[HTTP 2.0] 简介(Introduction)>中,我们简单介绍了 HTTP 2. 在本篇文章中,我们将会了解到 HTTP 2 协议概述部分的内容. HTT ...

  8. JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用

    JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...

  9. 【高速接口-RapidIO】1、RapidIO协议概述

    一.RapidIO背景介绍 RapidIO是由Motorola和Mercury等公司率先倡导的一种高性能. 低引脚数. 基于数据包交换的互连体系结构,是为满足和未来高性能嵌入式系统需求而设计的一种开放 ...

随机推荐

  1. 利用mysql的binlog恢复数据

    MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库.用于slave端执行增删改,保持与maste ...

  2. ASP .NET Core 2.0 MVC 发布到 IIS 上以后 无法下载apk等格式的文件

    ASP .NET Core MVC 发布到  IIS 上以后 无法下载apk等格式的文件 使用.NET Core MVC创建了一个站点,其他文件可以下载,但是后来又需求,就把手机端的apk合适的文件上 ...

  3. java基础17 模板模式

    1.模版模式 解决某类事物的步骤有些是固定的,有些会发生改变的,那么这个时候我们可以为这一类事物提供一个模版代码,从而提高效率. 2.模版模式的步骤 1.先写出解决该类事物的其中一种解决方案;     ...

  4. 多路复用IO与NIO

    最近在学习NIO相关知识,发现需要掌握的知识点非常多,当做笔记记录就下. 在学NIO之前得先去了解IO模型 (1)同步阻塞IO(Blocking IO):即传统的IO模型. (2)同步非阻塞IO(No ...

  5. Java多线程-Java多线程概述

    第一章 Java多线程概述 线程的启动 线程的暂停 线程的优先级 线程安全相关问题 1.1 进程与线程 进程:可以将运行在内存中的程序(如exe文件)理解为进程,进程是受操作系统管理的基本的运行单元. ...

  6. Es官方文档整理-3.Doc Values和FieldData

    Es官方文档整理-3.Doc Values和FieldData 1.Doc Values 聚合使用一个叫Doc Values的数据结构.Doc Values使聚合更快.更高效且内存友好. Doc Va ...

  7. 算法笔试题整理——升级蓄水池 && 字符串数字表达式计算值 && 求旅游完所有景点需要的最少天数 && 宝箱怪

    1. 小米笔试题——升级蓄水池 题目描述: 在米兔生活的二维世界中,建造蓄水池非常简单. 一个蓄水池可以用n个坐标轴上的非负整数表示,代表区间为[0-n]范围内宽度为1的墙壁的高度. 如下图1,黑色部 ...

  8. 通过构造系统服务分发实现拦截&过滤 (仿360游戏保险箱)

    想写这个程序主要是因为看了KSSD的一篇帖子,http://bbs.pediy.com/showthread.php?t=108378 讲 的是360保险箱保护游戏账号的原理,实际上就是对各种请求的拦 ...

  9. Centos7配置vsftpd3.0.2

    1.安装vsftpd vsftp使用本地用户登陆方式 yum -y install vsftpd yum安装的版本3.0.2 2.配置vsftpd vim /etc/vsftpd/vsftpd.con ...

  10. day7 反射

    反射是python开发中常用的功能,伴随开发的整个过程,因此要熟练掌握反射的用法. 反射常用的函数有四个:hasattr().getattr().setattr()和delattr()四个反射的函数. ...