SNMP 和 NetBios协议理解
原文链接地址https://www.cnblogs.com/hilow/p/3737695.html
一、简单网络管理协议(SNMP,Simple Network Management Protocol)构成了互联网工程工作小组(IETF,Internet Engineering Task Force)定义的Internet协议簇的一部分。
1.作用:
想象一个由服务器,工作机,三层交换机等设备组成的网络。如果我想在工作机中,通过一种方式能够查询三层交换机下接入设备的ip,mac等信息,怎么做到呢? 我想知道服务器当前运行了多少天,难道必须远程登录主机才能知道吗?当然不用,我们可以简单的发送一些事先协定好的数据给服务器,服务器也会按规定的数据格式返回自己的信息。这个规定好的数据格式就是SNMP。其目标是管理互联网上众多厂家生产的软硬件平台。通过SNMP可以读取设置任何支持SNMP协议的各种设备。
2.用法:
想要体验snmp协议提供的功能,可以使用开源的Net-snmp,它支持unix,unix-like,windows多种操作系统,提供命令行形势的调用,或者c和perl形势的lib。
windows下还有专门的snmp API可以调用,非常方便啊。
常用的 api 包括 SnmpMgrOpen(),SnmpMgrClose(), SnmpMgrRequest() , 可以从网上搜索相关资料学习。
3.原理:
两个概念:
OID项:是每个设备某一参数的身份证号,有点类似操作系统中的 “路径”,比如 /usr/bin/ping
MIB库:保存了该参数的名称、类型、取值意义等各项细节描述。
四个操作:
GET:获取指定 OID 值。
GETNEXT:读取当前OID 的下一个OID值,并将其作为新的“当前OID”。以达到只记一个OID便可遍历所有值的功能。
SET:设置指定OID值。
TRAP:用于设备主动向监控程序反馈结果,避免监控程序不停轮询,也能及时得到敏感数据结果。
二、网络基本输入输出系统(NetBIOS:Network Basic Input/Output System)的缩写
1.作用:
通过NetBIOS协议,可以读取 windows 主机用户名列表,共享目录名列表,级名列表,时间服务类型以及 MAC地址。
我们常用的windows系统在局域网中共享文件的功能就是利用NetBIOS协议实现的。
比如,可以打开网上邻居,找到当前网络中的机器,并查看其中的共享文件。
也可以在开始-》运行 窗口,输入 \\192.168.1.10\shareDirectory 访问共享文件,而如果要把其中的 IP 192.168.1.10 换成目标机器的主机名称(NetBIOS名),也是可以正常访问的,这个功能也是依靠NetBIOS完成。(注:至于具体文件传输时使用的什么的数据协议,我还没查到相关资料,不太确定)
2.用法:
共享文件很简单,右键文件夹,属性,共享就可以了。或者打开“网上邻居”,也能看到局域网中所有的主机(启用NetBIOS,并成功在主浏览服务器中注册)
开源界有一个叫做 nbtscan 的命令行程序,可以获取NetBIOS信息获取,支持windows,linux。
Windows中还提供 nbtstat 命令查询涉及NetBIOS信息的网络机器(windows下的nbtscan也是基于此完成)。
nbtstat -n 查看本机NetBIOS信息
nbtstat -A 192.168.1.106 查看指定IP的 NetBIOS 信息
3.原理:
我们只要在自己的电脑上输入一条命令就能看到局域网中,其他电脑的详细信息,甚至能看到其共享文件列表。这是怎么做到的呢?
在一个域里面有一台主浏览器,主浏览器负责创建和维护网络共享资源列表。
当网络中有一台电脑(非浏览器)开机时,会首先给主浏览器发送一个登陆请求,主浏览器接受请求后,自动把此电脑信息加入共享资源列表,此时通过网上邻居就能看到这台开机的电脑信息了。
当这台电脑关机时,同样会发送一个登出消息,这时网上邻居中也就看不到这台电脑了;但是如果这台电脑是非正常关机,那么就会出现,可以在网络邻居中看到,但却无法访问此电脑的共享资源。(一般,主浏览器需要连续三次,累计12*3=36分钟没有收到某台计算机的仍然正常运行的信息时,才认为该 主机已经关机)
主浏览器是由竞选产生,主浏览器工作期间,共享资源列表的维护工作有主浏览器完成,但主浏览器会定时(15分钟)将整个列表复制给被浏览器。
上述例子中,网上邻居的共享资源功能只是NetBIOS众多功能的一种。
参考资料:
《网络扫描技术揭秘》李瑞民
netbios协议
http://www.pc6.com/infoview/Article_19479.html
netbios编程实例