delphi技术专题---获取网卡物理地址之NetBios网络编程接口LANA介绍

本文主要是介绍delphi技术专题---获取网卡物理地址之NetBios网络编程接口LANA介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

技术专题


NetBios网络编程接口
    NetBios是Network Basic Input/Output System的缩写,意为“网络基本输入/输出系统”。NetBios网络编程接口是一种与协议无关的网络API,它提供了异步调用方式,同时兼容较老的操作系统,如0S/2和DOS等。
    NetBios为网络通信定义了一种编程接口,但却没有详细定义网络通信中的物理“帧”如何在网上传输。NetBios网络编程接口是1983年Sytek公司专为IBM开发的。1985年,IBM在Netbios的基础上创建了NetBEUI(NetBios扩展用户接口,Netbios Extended User Interface),它同NetBios接口集成在一起构成了一套完整的协议。由千NetBios接口变得愈来愈流行,所以各大厂商也开始在其他协议(如TCP/IP和IPY/SPX)上实现NetBios编程接口。到目前为止,全球已有许多平台和应用程序需要依赖于NetBios,其中包括Windows NT、Windows 2000 ,Windows Me以及Windows 9x的许多组件。
   相信大家一定知道OSI(开放系统互连)网络模型,它从一个很高的层次对网络系统进行了描述。OSI模型总共包含了7层,各层的名称及作用如下:
    .应用层:为用户提供相应的交互界面,以便其可以方便地使用所提供的连网功能。
    .表示层:完成数据的格式化和标准化的任务。
    .会话层:控制两个主机间的通信链路。
    .传输层:提供可靠或不可靠的数据传输服务。
    .网络层:在网络的主机之间提供一套定址/寻址机制,并负责数据包的路由选择。
    .数据链路层:控制两个主机间的物理通信链路,同时负责对数据进行整理,以便在物理介质上传输。
    .物理层:负责以一系列电子信号的形式传出数据。
    NetBios网络编程接口对应着OSI模型中的会话层和传输层。


Netbios的基本概念
    因为很多协议都实现了Netbios网络编程接口,所以Netbios API是协议无关的。换言之,假如根据Netbios规范设计了一个应用程序,它就能在TCP/IP、Netbios甚至开IPX/SPX上运行。这是一项非常有用的特性,因为对一个设计得当的Netbios应用程序来说,它几乎能在任何机器上运行,而无论机器连接的物理网络是什么。然而,我们也必须留意几个方面的问题。要想在两个Netbios应用程序之间正常通信,那么运行这两个应用程序的两台机器必须至少安装一种两者通用的协议。举个例子来说,主机A安装了TCP/IP协议但没有安装别的协议,而主机B只安装了NetBEUI,那么虽然这两种协议都实现了Netbios接口,但是它们之间不能通信。
    另外要注意的一个重要问题是NetBEUI不是一种路由协议。假定在客户机和服务器之间存在一个路由器,那么这种协议便无法使在两台机器上的应用程序正常通信。收到数
据包后,路由器便会将其丢弃。
    接下来我们要介绍一个Netbios网络编程接口中的极为重要的概念,那就是LANA编号(LANA适配器编号LAN adapter),它是我们理解Netbios的关键,也是真正的传送协议与Net_bios如何对应起来这个问题的答案所在。在最初的Netbios实施方案中,每张物理网卡都会分配到一个独一无二的LANA编号。但到Win32下,这种做法便显得有些问题,因为对一个工作站来说,它完全可能同时安装了多个网络协议,也可能安装了多张网卡。
    每个LANA编号是惟一对应于网卡及传愉协议的。例如,主机A安装了两张网卡,以及3种具有Netbios能力的传输协议(如TXP/IP、IPX/SPX和NetBEUI) ,那么总共就会有6个LANA编号,其序号可能如下所示:
    .LANA0:对应于网卡1+TCP/IP
    .LANA1:对应于网卡1+IPX/SPX
    .LANA2:对应于网卡l+NetBEUI
    .LANA3:对应于网卡2+TCP/IP
    .LANA4:对应于网卡2+IPX/SPX
    .LANA5:对应于网卡2+NetBEUI
    之所以说“可能”,是因为除LANAO之外,操作系统并不按某种固定的顺序来分配这些编号。那么,LANAO有什么特殊含义呢?LANA0代表的是默认的LANA。要想设计出一个
鲁棒性好的Netbios应用程序,程序必须能对任意LANA编号上的连接进行控制。
    知道了LANA编号是什么之后,接下来再来讨论Netbios的名字间题,这是Netbios网络编程接口的另一个重要概念。一个Netbios名字长度为16个字符,其中第16个字符是为特殊用途保留的。在名字表内添加一个名字时,应将名字缓冲区初始化成空白。在Win32环境中,对一个应用程序来说,它会注册自己希望与其通信的每个LANA编号。针对每个可用的LANA编号,每个进程都会为其维持一张Netbios名字表。举例来说,如果为LANAO增加一个名字,意味着用户的应用程序只能在LANAO上同客户机建立连接。对每个LANA来
说,能够添加的名字的最大数是254,编号从1~254(0和255由系统保留)。然而,每种操作系统都设置了一个低于254的最大默认值。重设每个LANA编号时,可对此默认值进行修改。
    另外需要指出的是,Netbios名字共有两种类型,即惟一名字和组名。“惟一名字”意味着它在网络中是独一无二的,也就是说,网络上不能再有其他任何进程来注册这个名字了。如果在一台机器己注册了某名字,那么在用户注册该名字时,便会收到一条“重复名字”的出错信息。
    与“惟一名字”相反,“组名”的作用则是将数据同时发给多个接收者,或者接收发给多个接收者的数据。组名并非一定要“独一无二”,它主要用于多播<多点发送)数据通信。
    在Netbios名字中,第16个字符用于区分不同的微软网络服务。各种网络服务和组名需要用一个WINS服务器完成注册。要么由配置了WINS功能的计算机进行名字的直接注
册;要么由那些尚未配置WINS功能的计算机,通过在本地子网内进行广播注册。Nbstat命令是一个非常有用的工具;可用它获取与本地计算机上注册的Netbios名字有关的信息。
    需要注意的是,只有在安装了TXP/IP协议的前提下,才会安装Nbstat命令。该工具也可用来查询远程机器的名字表,方法是在远程机器的名字后面,加上一个“-a”参数,或在远程机器的IP地址后,加上一个'-A'参数。
 
编程
    Netbios提供了两种网络连接服务,即“面向连接”的网络服务和“无连接”的网络服务。
    所谓“面向连接”的服务,是指它允许在两个客户机之间建立一个会话,或者说建立一个“虚拟电路”。这种“电路”实际是一种双向通信的数据流,通信的每一方都可向另一方发送消息。面向连接的服务可担保在两个端点之间任何数据都能准确无误地传送,这与TCP/IP协议族中的TCP协议提供的作用是类似的。在这种服务中.服务器通常将自己注册到一个已知的名字下。客户机会搜寻这个名字,以便建立与服务器的通信。双方建立通信的步骤如下:
    .服务器进程针对想通过它建立通信的每一个LANA编号,将自己的名字加人与其对应的名字表。
    .位于其他机器上的客户通过Netbios将一个服务名解析成机器名。
    .客户机要求同服务器进程建立连接。
    在初次建立连接的时候,通信双方都会有一些领外的开销。“面向连接,,的通信可保证通信具有极高的可靠性,而且数据包的收发顺序也能确保正确无误。然而,它仍然是一种以消息为基础的服务,也就是说,假如已连接好的某个客户机执行一个读命令,那么服务器在流中仍然只会返回一个数据包(尽管客户机此时提供了一个足够大的缓冲区,可同时容下几一个包)。
    而在“无连接”的网络服务中,服务器并不将自己注册到一个特定的名下,而只是由客户机收集数据,然后将其送人网络,事先不必先建好任何连接。对于数据的目的地址,客户机会将其定义成服务器相应进程对应的Netbios名字。这种类型的服务不提供任何保障,但同面向连接的服务相比,却可有更好的性能,如在使用数据报服务(无连接服务)时,省下了建立连接所需的开销。但是数据报服务既不能保证数据传输的可靠性,也不能保证数据包的传送顺序正确无误。
    接下来将要进入Netbios的编程应用阶段。要想调用Netbios API函数,需要链接系统的NETAPI32.DLL文件。Delphi提供了一个NB30单元Netbios API函数及相关的结构、常量进行了定义。具体代码放在下一文章中。这里只是介绍了下LANA和相关信息

这篇关于delphi技术专题---获取网卡物理地址之NetBios网络编程接口LANA介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/751878

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~