SNA 3270协议指南(兼谈精业3270卡)
SNA 3270协议指南(兼谈精业3270卡) IT技术总是在不断的前行,当初IBM推出SNA(System Network Architecture)网络协议的时候,形成了一支独秀的局面,加上IBM在大型机上面的统治地位,SNA成为接入IBM大型机的专用网络协议。现在流行的开放式TCP/IP协议一天天成为目前事实上的网络通讯标准,但是SNA并没有消失,有很多地方仍然在使用SNA网络。
因为SNA本身并不像TCP/IP那样到处使用,所以了解的人很少,网上几乎见不到相关的文章对其进行介绍,尤其是中文文档。虽然越来越少的人需要了解SNA,我觉得还是写下一篇指南型的文档,主要是对几个概念进行解释,以备需要的人能有个参考。本文假设你已经比较了解TCP/IP的协议,如果不是很了解可能会影响阅读,因为下文中很多地方是对比着TCP/IP来讲的。
SNA其实是一个协议族,包括很多种协议,它也基本符合OSI的7层网络协议架构。我们知道,任何的网络协议的最终目的实际上很简单,就是定义数据的包头,指明整串网络数据包中哪一位表示什么,发送端按照网络协议的规定打包,接收端会按照网络协议的规定解包。SNA与TCP/IP原理一样,只是根据网络的架构不同对包头定义不同而已。
TCP/IP中根据IP地址定位一台计算机终端,SNA中有相应的PU概念,PU也是唯一定位一台终端的。SNA的网络架构有些象树型结构,可以简单的这样理解,象ES9000这样的主机是树的根节点,它上面有一排插槽,每个插槽是一个子节点,插槽最大为256个(假设为A_00到A_FF),然后每个插槽又接256根线(假设为B_00到B_FF),每根线上接着一个ATM等终端,这样一台主机可以接256*256个终端。我们可以用PU来区分每个终端,PU的范围是16进制的00到FF,一共256个数,比如可以分配一台ATM的PU号为A1,它接在B_00那根线上,则该ATM就可以在物理上与主机通讯了。我们进一步考虑一下,如果有台连到B_02那根线上的终端的PU也分配为A1,主机怎样区分B_00和B_02这两个终端呢?这个不用担心,因为B_00和B_02是接在不同的插槽上,主机会根据插槽号加上线路号区分出来的。
当然上面只是为了解释PU的概念,简化了SNA的网络架构,实际上的SNA网络架构要复杂很多,不过道理差不多。
当终端想发送数据给主机时,它也是基本按照OSI的7层架构从上层到下层,一层层打包,每到一层就会在数据包的前面加上对应的包头,跟TCP/IP的处理差不多。根据这些包头,网络就会定位数据到主机;同样主机也进行相应的处理,才将数据发送到对应的终端上。
SNA中经常提到的是SDLC(同步数据链路控制),其实它才是与TCP/IP一样的报文协议,SNA只是网络的一种拓扑架构,跟协议无关,只是我们一般对SNA和SDLC两个概念不怎么区分而已,下面我们也混用两个术语。
在TCP/IP协议族里面有我们非常熟悉的协议,象HTTP、FTP等协议,它们是在在TCP/IP基本协议的上面针对不同类型的应用程序多定义了一些数据包格式,以满足不同的应用。在SDLC里面同样也有这样的情况,比如你经常可以看到的SNA3270、3274、3274等说法,这个可以简单的理解为象HTTP、FTP等协议一样,针对不同类型的应用而在SDLC上面单独扩充的协议。
下面单独的讲一下3270协议。
目前在中国主要使用的是台湾精业公司的精业卡,用它完成终端与主机的通讯。首先说说3270数据包,它是在SDLC协议的基础之上,主要用在带有显示、键盘控制的终端或者连到大型机上的打印机等设备,比较典型的就是ATM机了。3270的数据包中包含有特殊的控制符,比如主机发送一个数据包给ATM,ATM收到后,要根据3270协议的那些控制符定义来解释数据包,这些控制符可能包含在ATM屏幕的哪一行哪一列显示什么字符之类的东西。这样的话,ATM的显示完全由主机来控制,主机将这串字符发送到任何网络上的ATM,其在屏幕上显示的内容和相对位置都是一致的,也就是说控制权是交给主机,ATM只是一个没什么用的哑终端而已。
如果用SNA网络来传送3270数据包,一般就叫做SNA 3270。当终端与主机利用3270通讯的时候,会先建立一个点对点的SESSION,双方通过该SESSION来交换数据。
这种含有特殊控制字符的数据包一般被称为“普通模式”,在精业卡提供的驱动里面还有一种模式叫做“透明模式”。“透明模式”表示数据包中不包含控制字符,就是普通的数据,至于怎样处理这些普通数据是应用程序自己的事情,3270不会干预的。
3270协议里面还经常出现一个概念是EBCDIC,这是与ASCII编码差不多的编码方式,一般都有现成的函数调用在这两个编码方式之间进行转换的。
有关精业卡如何和主机进行通讯,前段时间写了个控件,是按照NCR公司的接口标准写的,里面有如何调用精业公司提供的API接口的代码,有兴趣的人可以发邮件给我索要该控件的源代码,趁我还在从事相关行业,过一段时间我如果离开这个行业可能这些资料我就不会保留了。
刘永胜 2005年于越秀山麓,迪堡广州