现在的位置: 首页 > 综合 > 正文

windows网络编程技术笔记(1)

2012年06月04日 ⁄ 综合 ⁄ 共 3227字 ⁄ 字号 评论关闭

windows网络编程技术笔记

layper

写这个笔记是促使我理解网络编程技术。

第一 传统网络API

既然这部分讲述的是传统网络API,传统的网络API接口包括:

1NetBios:与Winsock都是与协议无关的网络API。提供异步调用,注意这里是异步,网络通信调用可分为异步、同步。同时他兼容了OS/2Dos,这意味着它与网络编程的低层关系密切。

O/2解释:它是IBM的一个操作系统,已停止开发。

2、重定向器:还不太理解它的意思,从字面理解应该是重新定向的意思,书中简述部分说它是提供与传输无关的文件输入/输出方式,我现在这样理解,重定向器是是一种文件输入/输出方式,它与网络传输无关。后面说它是邮槽和命名管道的基础。

与重定向器有关的邮槽和命名管道的概念,首先从字面理解他们应该是象生活中的通道的意思差不多。只不过邮槽相当于邮局的通道,而命名管道相当于网络信件的通道,呵呵,不知对不对,邮槽提供了一种接口,实现windows机器上的广播与单向数据通信。也就是广播与单向数据通信的接口,先有它才能进行广播与数据通信。而命名管道是提供一种双向信道,通过信道提供对windows安全通信的支持,邮槽与命名管道一个是单向数据通信,属于广播的的接口,一个是双向信道,主要为了支持windows安全的。

重定向器与邮槽、命名管道的关系,重定向器与网络传输无关,而邮槽、命名管道都是与传输有关系,这个说明传统的传输需要重定向,是一种间接的通信。

3、通过重定向器进行的网络通信。

通过这三个方面我们可以对传统的网络有了一个初步的认识,传统的网络提供了一些与协议无关的API,它是一种基于间接的需要重定向的一种网络通信方式。

三个关键词:NetBios-API,与协议无关。

                     重定向器。

                     基于重定向器的网络通信-邮槽(广播、单向数据通信)、命名管道(双向基于安全的信道)

第一章    NetBios

 

开始的这部分呢,叙述了NetBios的一些知识,NetBios就是“网络基本输入/输出”的简称,如上所述是标准的应用程序编程接口,NetBiosNetBios扩展用户接口(简称为NetBEUI)构成了一种完整的协议,在重要的协议TCP/IP协议和IPX/SPX都应用了它,大多数操作系统都对它进行支持,除windows ce只是用TCP/IP协议做它的传送协议和支持名字、名字解析,不支持NetBios API(也就是仅仅传送它和认可它告诉其他人名字的意思),在这章中我们要从NetBios的名字和LANA开始,也就是先弄明白什么是NetBios的基础知识,LANA的含义以及LANA编号的含义,这章的重点讲述NetBios提供的服务,范例中的客户机和服务器示例,我们必须掌握三个方面的知识,一、NetBios提供的服务;二、每种服务客户机的流程,如何理解它的原理。三、服务器的流程,理解它的原理。最后,是留意常见错误、陷阱。

OSI网络模型当中NetBios主要应用在会话和传输层,而传输层提供的是数据传输服务(可靠或不可靠),会话层是控制两个主机的通信链路(开放、操作、关闭),这说明NetBios主要有三个功能,第一提供检测数据传输是否可靠函数,第二是提供通信链路的开关函数,第三是提供通信链路的控制函数。

1.1   Micrsoft NetBios

在应用NetBiosNetBios API时,我们首先要注意两点:

一、              NetBios必须建立在一种两个机器都必须安装有同一种协议基础上的,这与前面所说的与“与协议无关”不矛盾,我们可以这样理解,哪种协议都支持NetBios API,但两机之间的NetBios API是有协议支持的,示意如下:




服务器中的Netbios API


服务器的协议


网络传输


客户机的协议


客户机的NetBios API

               从这个图中我们就可了解为什么还是需要安装同一类型协议了。

二、              NetBios应用时要充分考虑路由器问题,因为路由器会把NetBios过滤掉,所以在应用NetBios API时注意是否会给路由过滤掉,假如希望通过路由器,就应该在可通过路由的协议上编程。

1.1.1          LANA编号

这一节讲得不是很明白,说了半天我还是不明白LANA到底是什么,我上网找一下资料,有这样的解释:

LANA,既是lan adapter,中文意思就是“局域网适配器”,是用来区分网络协议和接口的,那LANNA编号就是“局域网适配器编号”,每个LANA编号对应着网卡和传输协议的唯一组合,呵呵,从LANA编号我们就可以看出机子所安装的协议和网卡数。

LANA编号中我们要了解这几个方面的知识,首先LANA编号0就是默认的LANA,我们可以在机器上自行设定默认的协定。其二要注意的是我们设计程序时一定要对任何LANA进行监控。

1.1.2          NetBios名字

一、             NetBios名字长度为16个字符。其中第16个是为特殊用途。对于每个LANA编号,每个进程(注意是每个进程)NetBios都会维护一张NetBios名字表(注意是名字表),这就意味着同一的所有个协议每个进程都会有一个NetBios名字表。对于每个LANA能够添加的名字最多是254个,编号从1254(0255系统保留)。在名字表中添加名字是,应当将名字缓冲区初始成空白。

二、             唯一名字。

1、  网络中的唯一名字。假如有重复就会报错。

2、  微软的机器名就是NetBios名字。机器启动时,把名字注册到”windows互连网命名服务器,也就是WINDSWINDS维护着一个名字列表和协议的一些特有信息。假如未为其分配一个WINDS,就要向网络发出一条特定的“广播消息”,如果无回应就表示可以用这个名字注册。

三、             组名。

1、  组名不是唯一名字,从字面上理解就是一个组的名字,也就是说,组名不是唯一的名字,他与唯一名字是相对的。

组名主要应用于一组多播技术,将数据同时发给多个接收者,我的理解就是同组间接收或异组间接收。

四、             深入理解NetBios名字

1、  Nbtstat命令查看本地或远程计算机已注册的NetBios名字有关的信息。

2、  名字第16个字节标识符。

在《windows网络编程技术》中,列出列以下几个字节,

00,03,06,1B,1C,1D,1E,1F,20,21,BE,BF,_MSBROWSE_这几个字节。

经过观察唯一名字标识符,我们可以发现它提供了我们上网时一些经常可以看到或用到的服务,我们可以把它看做标识我们名字的功能一样(这个只是大概的看作)

再观察组名标识符,它好象我们标识组名的规则一样。这个是我们初学者教少接触的。它们主要与WINS和浏览器有联系的。

1C的关键此有四个:刷新、静态、联合、25

1D是为客户机指定主控浏览器名字,让客户机访问主控浏览器。WINS在此也发挥作用,WINS发挥作用。用“正”“负”来表示是注册域名还是查询域名。注册时做“正”响应,但不保存域名到数据库;查询时做“负”的响应。在查询中,假如查询的计算机被配置为h节点或m节点,在广播那个查询之后,根据节点的类型解析出正确的名字。

1E跟浏览器有关,浏览器可向它发送广播数据,对它监听来挑选一个主控浏览器。注意,它是面向本地子网,而不是路由器。

20是关于Internet组名,是管理特定的计算机组用的。

_MSBROWSE_增加在域名后面,WINS在本地子网广播,向其他主控浏览器通告这个新增的域。

1.1.3          NetBios特性

NetBios同时提供“面向连接”和“无连接”服务。

这节主要理解什么是面向连接和无连接。

1面向连接或面向会话:


抱歉!评论已关闭.