本备忘录的状态
本备忘录讲述了一种为internet社区定义的试验性协议。本备忘录不指定任何种类的
internet标准。希望大家多给与批评和建议。本备忘录的发布不受任何限制。
摘要
本备忘录提出一项协议,它容许本地网在往外地的拨号过程中能够更多地使用调制解调
器。
目录
1.com端口控制选项协议 4
2.com端口配置命令 4
4.com端口和调制解调器线性变化的通知 8
5.流量控制 9
6.安全性考虑 9
7.作者联系地址 9
8.参考文献 10
讨论
远程登录协议定义了一个面向字符、交互式的通讯对话。它原来设计在一个客户和一运
行远程服务的主机之间建立一对话[5]。
许多新的商业功能要求一个人连接到远程的服务器检索或存放信息。最多的一种方式是
这些远程服务经由异步拨号连接以实现。这一新的服务功能类别包括:
- 通过拨号上互联网
- 连接到电子公告板
- 连接到内部和外部数据库
- 收发传真。
这些新类别的服务功能的一般特性要求通过异步调制解调器而建立的交互式的、面向字
符的连接。这就是众所周知的向外modem拨号。
为了有助于减少在安装和维护附加电话线路的费用,许多设备制造商在访问量较大的服
务器和路由器上补充了端口直接远程登录的功能,我们将其归类为存取服务器。
然而,当前远程登录定义无法充分满足越来越多的用途。这项协议需要将三方面的功能
补充到Telnet协议以有效支持modem外拨。这些是:
- 客户将com端口配置信息发送给连接到外拨modem的存取服务器的能力。这需要在字
节级别上确保传送和接收的正确格式。
- 存取服务器将诸如信号变化之类的信息通知任一modem线上的客户端的能力例如
RLSD信号变化(载波检测)。这信息是重要的,因为许多客户的软件包用这项信息来判定
是否与远程服务建立了连接。RLSD变化也使用在类I传真做为信号发送[6]。
- 客户端和存取服务器之间流量控制的治理能力,它并不涉及到在客户端与远程服务之间
所建立的会话中流量控制机理的。不幸的是,RFC1372"远程登录远程的流控制选项"[2]
不能满足这种目的,因为它依靠于发送xon/xoff字符,字符也许会被传送或接收作为标
准过程的客户/远程的服务对话。
尽管这讨论主要是面向于通往外地的拨号作为这项协议的主要用途,但这项协议也能用
于做为存取服务器附件的任何串行设备使用。这样的设备可以是:
- 串行的打印机
- 绘图仪
- 显示设备例如管道监视器或医用监视器
- 例如一般图片复印机和收款机的办公室设备
定义以下术语:
存取服务器――任何网络设备,它接受telnet对话、通过com口接受传送数据以及利
用Telnet会话通过com口将接受到的数据送给客户端。
波特比率――为这文档的目的,波特率表示每秒传送通信数据的字节数。
客户端――任何网络设备,向存取服务器发送一个Telnet请求。
出境――从连接存取服务器的modem到远程服务之间的数据传输。
入境――从远程服务到连接存取服务器的modem之间的数据传输。
远程服务――接受拨号连接的任何服务(包括传真)。
插图
=============
客户端
<―――本地的区域/企业网络
=============
==================
远程登录接口
存取服务器
com端口接口
==================
==========
modem
==========
远程服务访问
最通用公共交换------>
网络
================
可以是internet服务
供给商,告示板远程服务
或传真机器
================
命令名和代码:
com-port-option44
客户端到存取服务器存取服务器到客户端
signaturetexttext
set-baudrate1101
set-datasize2102
set-parity3103
set-stopsize4104
set-control5105
notify-linestate6106
notify-modemstate7107
flowcontrol-suspend8108
flowcontrol-resume9109
set-linestate-mask10110
set-modemstate-mask11111
purge-data12112
讨论:
正如前面的建议,com端口配置命令仅从客户发送到存取服务器。存取服务器没有com
端口初始化配置命令,仅有通知命令。然而,为了答应服务器初始化com端口配置,已经建
立了不同的命令值。
1.com端口控制选项协议
com的控制选项协议使用标准的远程登录机制:
iacwillcom-port-option
发送者愿意发送com端口控制选项命令
iacwontcom-port-option
发送者不愿意发送com端口控制选项命令
iacdocom-port-option
发送者愿意接受com端口控制选项命令
iacdontcom-port-option
发送者不愿意接受com端口控制选项命令
典型地,客户使用will和wont,存取服务器使用do和dont。
2.com端口配置命令
一旦协议达成,客户可以不受时间和次数限制地发送命令。一旦命令被存取服务器处理
了,从客户传送到存取服务器的每条命令必须被承认。这种确认在命令的处理以后将把在存
取服务器设定的值通知客户端。这种确认在命令的处理以后将把在存取服务器设定的值通知
客户端。这与在tcp协议层处理的收到命令的确认是不同的。它的目的是通知客户正在使用
的值与客户请求的值的不同。例如,客户可能要求存取服务器提供超过它所能提供的波特率。
假如客户在一合理的时间内收不到这一回复(比如两倍延时),客户可能希望重新发送命令,
或终止对话。
虽然可从存取服务器发送任何序列的命令到客户端,然而不同的序列命令可能会产生无
效的com端口配置。(例如:数据大小在8位以下时偶数校验有效,推荐按下列顺序发送命令:
1. set-baudrate
2. set-datasize
3. set-parity
4. set-stopsize
iacsbcom-port-optionsignature<text>iacse
客户与存取服务器之间互相交换识别标志的命令假如没有<text>选项,它是发送者要
求接收端提供识别标志的命令。<text>可以包含任何字符。<text>选项没有固定的格式。它
可以包含制造商信息,版本号信息,或任何另外的信息。假如有iac字符在<text>出现,必须转
换成iac-iac以避免命令终止。
iacsbcom-port-optionset-baud<value(4)>iacse
是由客户端发送给存取服务器请求设置com口波特率的命令。<value>是4个八位二进
制数(4字节)。value是用网络标准格式来表示的。value是请求的波特率,一种非凡情形value
为0。假如value是零,则客户请求存取服务器com端口当前的波特率。
讨论:
由于当今波特率的使用形成了一个非常广泛的空间,并且在提议的初始版本中使用了基
于波特率表的索引。经过多次讨论之后,决定采用实际中使用的波特率。有两个主要的原因:
1)它限制了最新的波特率的使用,直到value选项更新,2)它在波特比率的选择方面的灵活性
是最大的。
iacsbcom-port-optionset-datasize<value>iacse
这是由客户发送到存取服务器设置数据位数的命令。它也可以用来查询当前的数据位大
小。<value>值是1个八位二进制数(字节)。以下是value值的一个表格:
值数据比特大小
0 请求当前的数据位大小
1 可用为未来使用
2 可用为未来使用
3 可用为未来使用
4 可用为未来使用
5 5
6 6
7 7
8 8
9-127可用为未来使用
讨论:数据位大小仅有8个可能的值,曾经有4个被使用过,只有2个现在常用。命令参数
的格式推荐保持一致。它也减少了命令在协议中定义的次数,答应将来扩展。
iacsbcom-port-optionset-parity<value>iacse
客户到服务端,设置奇偶校验,也可用于查询。是1位八位二进制数的(字节)。以下是
value值的一个表格:
值奇偶性[1]
0 请求当前的数据大小
1 没有
2 奇数
3 偶数
4 标记
5 空格校验
6-127可用为未来使用
讨论:
现在常用的仅有5个值。命令参数的格式推荐同其他命令保持一致。
iacsbcom-port-optionset-stopsize<value>iacse
客户到服务端,设置stopbits,也可用于查询,为1个字节。客户到服务端,设置停止位,
也可用于查询,为1个字节。以下是value值的一个表格:
值停止位大小
0 请求当前的数据大小
1 1
2 2
3 1.5
4-127可用为未来使用
讨论:
仅当数据大小设置成5位时,停止位1.5被大多数com端口支持。现在已经不常用了。
3.非凡的com口控制命令
客户可以通过远程登录会话在任何时候、任何次数地往存取服务器发送这一命令。存取
服务器会对每个命令回复一个确认信息,这个信息包含了命令和实际值集合。客户希望在一
合理的时间以内得到一响应(比如两倍延时)。否则,客户可能希望重新发送没被确认的命
令或终止对话。
iacsbcom-port-optionset-control<value>iacse
这一命令是从客户端发送给存取服务器以设置非凡的com口选项。这一命令也可用来
查询当前选项值,值为一个字节。以下是value值的一个表格:
值控制命令
0 com口流控制设置请求(outbound/both)
1 不使用流控制(outbound/both)
2 使用xon/xoff流控制(outbound/both)
3 使用硬件流控制(outbound/both)
4 请求中断状态
5 设置中断状态 on
6 设置中断状态 off
7 请求dtr信号状态
8 设置dtr信号状态on
9 设置dtr信号状态off
10 请求rts信号状态
11设置rts信号状态on
12 设置rts信号状态off
13 com口流控制设置请求(inbound)
14 不使用流控制(inbound)
15 使用xon/xoff流控制(inbound)
16使用硬件流控制(inbound)
13 com口流控制设置请求(inbound)
14 不使用流控制(inbound)
15 使用xon/xoff流控制(inbound)
16使用硬件流控制(inbound)
16 使用dcd流控制(outbound/both)
18使用dtr流控制(inbound)
19 使用dsr流控制(outbound/both)
20-127可用为未来使用
讨论:
流控制选项划分inbound和outbound,outbound充分利用现有的程序设计界面和存取服
务器能力。
讨论:
outbound值应该将流控制设置为出和入。假如入可以分开设置它应该在出的设置后设
置。
讨论:
假如存取服务器无法区分入与出的流控制,它应忽略入的流控制命令,并且应基于出的
流控制命令来设置流控制选项。
iacsbcom-port-optionset-linestate-mask<value>iacse
这一命令是从客户端发送给存取服务器,为了发送notify-linestate选项以设置一比特掩
码(参阅第4部分)。当存取服务器的linestate改变时,存取服务器会将新的linestate和
linestate-mask进行"与"处理,假如结果非零,存取服务器将发送与结果。假如大于一位满足
linestate-mask,只有1个notify-linestate,与所有的满足的位,将被送到客户端。set-linestate-mask
可以是以下组合。这些值和在notify-linestate选项中使用的是一样的。set-linestate-mask值
基于目前最流行的uart(com端口控制芯片)[1]。
比特位值含义
7128超时错误
664传送移位寄存器为空
532传送保持寄存器为空
416中断检测错误
38帧错误
24奇偶校验错误
12超载错误
01数据就绪
讨论:
set-linestate-mask值置0时阻止存取服务器将notify-linestate选项送至客户。
讨论:
set-linestate-mask值为255时,答应存取服务器当每次存取服务器的linestate变化时,
送一notify-linestate选项到客户。
讨论:
存取服务器的linestate-mask初始值是0。
讨论:
在收到一notify-linestate以后,客户不必须发送一新的set-linestate-mask。linestate-mask
在存取服务器的值将保持直到被客户设置或重建对话时重置。linestate-mask在存取服务器的
值将保持直到被客户设置或重建对话时重置。
iacsbcom-port-optionset-modemstate-mask<value>iacse
这一命令是从客户端发送给存取服务器,为了发送notify-modemstate选项设置一比特掩
码。当modemstate在存取服务器上变化时,存取服务器将原有modemstate-mask和新的
modemstate进行与运算。假如结果非零,存取服务器将发送与结果到notify-modemstate选项。
假如多于一个位满足modemstate-mask,仅有1个notify-modemstate,与所有的满足的位,将被送
到客户。set-modemstate-mask可为下列任何组合。值和notify-modemstate选项一样。
set-modemstate-mask值基于目前最流行的uart(com端口控制芯片)[1]。
比特位值含义
7128接收线性信号检测(即载波检测)
664来访指示(敲门)
532data-set-ready信号状态
416clear-to-send信号状态
38delta接收线性信号检测
24trailing-edgering检测器
12deltadata-set-ready
01deltaclear-to-send
讨论:
0的set-modemstate-mask值将阻止存取服务器送notify-modemstate选项到客户。
讨论:
set-modemstate-mask值为255时答应存取服务器当每次存取服务器的modemstate变
化时,送notify-modemstate选项到客户。
讨论:
存取服务器的modemstate-mask初始值是255。
讨论:
在收到一notify-modemstate以后,客户不必须发送一新的set-modemstate-mask
modemstate-mask在存取服务器的值将保持直到被客户设置或重建对话时重置。
iacsbcom-port-optionpurge-data<value>iacse
这一命令是从客户端发送给存取服务器,要求存取服务器立即清除所有涉及缓冲的数
据。值大小位一个字节。
值清除数据缓冲区
0 可用为未来使用
1清除存取服务器接收数据缓冲区
2 清除存取服务器传送数据缓冲区
3 清除存取服务器接收数据缓冲区和传送数据缓冲区
4-127可用为未来使用
4.com端口和调制解调器线性变化的通知
存取服务器的发送不受时间和次数限制。一旦com端口或调制解调器线性变化,存取服
务器应该立即发送适当的命令到客户。客户不必对命令发出响应。
iacsbcom-port-optionnotify-linestate<value>iacse
值的大小是一个字节。值是从以下值表中的多个比特层构成的。多比特值可以在一次传
送中设置。值是基于最流行的uart(com端口控制芯片)[1]。
比特位值含义
7128超时错误
664传送移位寄存器为空
532传送保持寄存器为空
416中断检测错误
38帧错误
24奇偶校验错误
12超载错误
01数据就绪
讨论:
linestate是在存取服务器上的uart的线性状态。
iacsbcom-port-optionnotify-modemstate<value>iacse
值的大小是一个字节。值是从以下值表中的多个比特层构成的。多比特值可以在一次传
送中设置。值是基于最流行的uart(com端口控制芯片)[1]。
比特位值含义
7128接收线性信号检测(即载波检测)
664来访指示(敲门)
532data-set-ready信号状态
416clear-to-send信号状态
38delta接收线性信号检测
24trailing-edgering检测器
12deltadata-set-ready
01deltaclear-to-send
5.流量控制
客户端和(或)存取服务器可以通过远程登录会话在任何时候、任何次数地往存取服务
器发送这一命令。
iacsbcom-port-optionflowcontrol-suspendiacse
这命令的发送端请求接收器推迟数据及命令的传输直到发送端发flowcontrol-resume命
令。
iacsbcom-port-optionflowcontrol-resumeiacse
这命令的发送端请求接收器恢复发送数据和命令
讨论:
远程登录在客户和存取服务器之间最初被初始化为重用状态。没有需要在初始化期间发
送resume命令。
讨论:
可以同时发送多个并行的暂停命令。第二个暂停命令可以被忽略。当碰到第一个单一个
的resume命令时传送恢复。
讨论:
流控制选项是为了处理客户到存取服务器Telnet对话的流控制而设计的。这选项加在
RFC1372中:远程登录的流控制选项[2]。RFC1372使用一单字符xon/xoff技术来实现流
控制。这导致2个问题。首先,流控制字符可能是有效的数据。其次,流控制字符可能被用
来终端之间的流控制在结束使用(客户应用程序到远程服务器的拨号)。
6.安全性考虑
有2项安全问题需要讨论:验证和资源的重置。
认证可以遵循kerberos身份验证协议(见RFC1411)[3]或SPX身份验证协议(见RFC
1412)[4]。
对话终止时,存取服务器必须确保断开连接,同时com口设置(波特率,数据大小,
停止位,奇偶校验和流量控制)恢复到定义值。这确保com端口在一已知状态,预备建立下
一客户对话。这将使操作更具有可猜测性,同时避免可能从与随机的com端口配置开始一
新建的的拨号对话发生的问题。
7.作者联系地址
GlenClark,SoftwareArchitect
CiscoSystems,Inc.
170WestTasmanDrive
SanJose,CA96134
USA
EMail:glenc@cisco.com
WEB:www.cisco.com
8.参考文献
[1]JoeCampbell.CProgrammer"sGuidetoSerialCommunications,SecondEdition.
Indianapolis:SAMSPublishing,1993.213-224.
[2]Hedrick,C.,andD.Borman,"TelnetRemoteFlowControlOption",RFC1372,Cray
Research,Inc.,October1992.
[3]Borman,D.,"TelnetAuthentication:KerberosVersion4",RFC1411,CrayResearch,
Inc.,January1993.
[4]Alagappan,K.,"TelnetAuthentication:SPX",RFC1412,DigitalEquipment
Corporation,January1993.
[5]D.E.ComerandDavidStevens.InternetworkingwithTCP/IP,VolumeIII.Prentice
Hall,1993.
[6]AndrewMargolis.TheFAXModemSourcebook.JohnWiley&Sons.1995.
Greenfoot是一款简单易用的Java开发环境,该软件界面清爽简约,既可以作为一个开发框使用,也能够作为集成开发环境使用,操作起来十分简单。这款软件支持多种语言,但是默认的语言是英文,因此将该软件下载到电脑上的时候,会发现软件的界面语言是英文版本的,这对于英语基础较差的朋友来说,使用这款软件就会...
07-05
Egret UI Editor是一款开源的2D游戏开发代码编辑软件,其主要功能是针对Egret项目中的Exml皮肤文件进行可视化编辑,功能十分强大。我们在使用这款软件的过程中,可以将一些常用操作设置快捷键,这样就可以简化编程,从而提高代码编辑的工作效率。但是这款软件在日常生活中使用得不多,并且专业性...
07-05
KittenCode是一款十分专业的编程软件,该软件给用户提供了可视化的操作界面,支持Python语言的编程开发以及第三方库管理,并且提供了很多实用的工具,功能十分强大。我们在使用这款软件进行编程开发的过程中,最基本、最常做的操作就是新建项目,因此我们很有必要掌握新建项目的方法。但是这款软件的专业性...
07-05
Thonny是一款十分专业的Python编辑软件,该软件界面清爽简单,给用户提供了丰富的编程工具,具备代码补全、语法错误显示等功能,非常的适合新手使用。该软件还支持多种语言,所以在下载这款软件的时候,有时候下载到电脑中的软件是英文版本的,这对于英语基础较差的小伙伴来说,使用这款软件就会变得十分困难,...
07-05