码迷,mamicode.com
首页 > 移动开发 > 详细

NetBIOS与Winsock编程接口

时间:2015-10-22 01:37:39      阅读:311      评论:0      收藏:0      [点我收藏+]

标签:

  最近在看网络编程方面的书,由于不是通信专业出身的,以前理解的网络体系感觉就是tcp/ip,最近工作上接触到了一些光环网等乱七八糟的东西,有些基本的LCSC连接器都不认识。花时间看了下计算机网络体系结构的知识,从ARPRANET开始计算机网络的实现方式可以分为资源子网和通信子网。如下图:

技术分享

   资源子网主要由网络的服务器、工作站、共享的打印机和其他设备及相关软件所组成。通信子网:是指网络中实现网络通信功能的设备及其软件的集合,包括原始的信号中继器、集线器,网桥、交换机、路由器网关等设备。ARPNET出来之后,网络体系飞速发展,后来国际标准化组织为了防止各家公司单位各自成体系,征询了多家公司的意见之后,制定了一个网络参考模型(OSI/RMOpen System Interconnection Reference Model,注意是个model,而非标准)用来作为网络体系的参考。之后的大部分网络体系包括IEEE802.1局域网体系,TCP/IP协议体系,以及WLAN标准的IEEE802.11均参考OSI体系架构设计。

技术分享

   说白了,网络体系中的很多协议,其实就是围绕着这个网络设备之间通信,举个简单的例子,计算机跟计算机之间(表现为网卡跟网卡等设备)怎么通信,计算机跟集线器之间怎么通信,集线器跟网桥之前怎么通信等等,这里面的网络既包括集线器同计算机之间的这种1对多的网络通信方式,也包括不同局域子网之间的网关之间这种11通信的方式。最关键的是还要“一统江山”,实现端对端通信。对应着硬件上的物理连接去看网络协议会更好理解。不扯了,网络结构的知识后面再说,这里先回归到正途,总结下window下网络编程的一些事情。

  编程接口肯定是为程序员服务的,考虑到大部分程序员都工作在应用层,所以大部分的网络编程接口都是基于操作系统上应用空间实现的。不同操作系统之前编程接口不同(由于体系架构是一样的,虽然编程接口有所不同,但是大概的操作思想是一致的),表现在windows平台下,有最常见的WinSock编程接口、NetBIOS编程接口。这两个接口之间的关系,可以说是由于历史发展来的,没啥关系,这要从TCP/IPNetBEUI以及IPX/SPX网络协议开始说起。

  Winsock编程接口的开发是用于起源于ARPRANET网络系统的TCP/IP协议,Winsock编程接口规范并定义了如何使用APIInternet协议簇,同时支持“面向连接”的会话服务以及“无连接”的数据报服务。提供了很多API函数,尤其是基于Windows系统的扩展库函数,遵循Windows消息驱动机制,在windows平台上获得了广泛应用。后来在Window 2000~2003之间的操作系统之间,Winsocket 2加入了对IPX/SPX以及NetBEUI协议的支持,但后来从vista之后又取消了(具体的,可以参考socket 函数的int AF参数)。TCP/IP尽管是目前最流行的网络协议,但TCP/IP协议在局域网中的通信效率并不高,使用它在浏览“网上邻居”中的计算机时,经常会出现不能正常浏览的现象。此时安装NetBEUI协议就会解决这个问题。

  NetBIOS接口最初是IBM公司为其自己开发的局域网实时网络通信协议——NetBEUI协议,所作的网络编程接口。由于其具有极高的通信效率,且支持广播,后来各个网络厂商均开始在TCP/IP协议以及IPX/SPX协议上拓展了NetBIOS接口,也就是说NetBIOS适用于这三种协议。值得注意的是,它也是支持支持“面向连接”的会话服务以及“无连接”的数据报服务,但却是一种不可路由的协议。因而无法跨越路由器的网络上进行通信。NetBEUI曾被许多操作系统采用,例如Win 9x系列、Windows NT等,在许多情形下很有用,是WINDOWS98之前的操作系统的缺省协议,安装后不需要进行设置,特别适合于在“网络邻居”传送数据。所以建议除了TCP/IP协议之外,小型局域网的计算机也可以安上NetBEUI协议。另外还有一点要注意,如果一台只装了TCP/IP协议的WINDOWS98机器要想加入到WINNT域,也必须安装NetBEUI协议。

  IPX/SPX协议本来就是Novell开发的专用于NetWare网络中的协议,可路由,通信效率高,但是现在也非常常用--大部分可以联机的游戏都支持IPX/SPX协议,比如星际争霸,反恐精英等等。虽然这些游戏通过TCP/IP协议也能联机,但显然还是通过IPX/SPX协议更省事,因为根本不需要任何设置。除此之外,IPX/SPX协议在局域网络中的用途似乎并不是很大,如果确定不在局域网中联机玩游戏,那么这个协议可有可无。目前这个协议的编程接口一般采用的就是NetBIOS。在目前的vista之后的系统中,这个协议已经不受官方支持。如果一些游戏需要IPX协议的支持而且用的又是Vista以上的系统,可以去XP下将对应的动态链接库及驱动文件拷贝到win7相应目录下也可实现协议的支持。

  找资料的时候,无意间发现了月光博客的一篇老文,他那时候本科毕业论文竟然就是网络编程。回头看看,这些乱起八糟的东西还真是随着时代来的,对于他们那一代见证过的人理解起来相对比我们年轻人要轻松。毕竟没见过。Internet是他们的发展时代,我们的时代又是什么呢?

参考:

http://network.51cto.com/art/200701/38792.htm

https://msdn.microsoft.com/en-us/library/ms739935(v=vs.85).aspx

http://www.williamlong.info/archives/455.html 

NetBIOS与Winsock编程接口

标签:

原文地址:http://www.cnblogs.com/zurphy/p/4899685.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!