背景:
阅读文章

两个技术文档,开发客户端时用得着

[日期:2007-05-10] 来源:  作者: [字体: ]

例如,一些子系统可能通常接受用户命令,发送长文本串到用户终端,最后发送一个提示用户允许接收下一命令的提示符到用户终端。如果在传送文本串的过程中接收到AO命令,将会不再发送剩余的字符串,而直接显示提示符告知用户可以输入下一命令。(这与接收到IP之后的操作可能有所不同;IP会放弃发送剩余的字符串而且退出子系统。)应该注意到,使用提供此功能的服务器系统时外部缓冲区(在网络和用户本地主机上)也被清除;完成的正确方法是向用户系统发送“Synch”信号。

你在此吗 (AYT) 许多系统提供用户这样的功能,让用户知道是否正在运行。此功能在系统由于不可预知长度运算,或系统负载重的情况下长时间不响应时由用户发起。AYT是使用此功能的标准表示。

删除字符(EC) 许多系统提供此功能用于删除最近相邻的不可删除字符或用户提供数据流的最近相邻的“显示位置”。此功能通常用于编辑键盘错误的输入。EC是使用此功能的标准表示。注意:“显示位置”可能包括多于一个的字符,它们是过多键入的结果或者如下格式的字符串: BS ...

删除行(EL) 许多系统提供此功能用于删除当前输入行中的所有数据。此功能通常被用于是编辑键盘输入。EL是使用此功能的标准表示。

TELNET的"Synch"信号 大部分时分系统提供一种允许终端用户重新获得失控进程的机制;上述的IP和AO功能就是此机制的一个例子。这些系统,当被用于本地时,访问由用户提供的所有信号,无论此信号是一般字符还是不可显示的字符如电传中的“BREAK”或IBM 2741中的“ATTN”键。当系统通过网络连接时这种情况不一定就是准确的;网络流量控制机制可能导致一个信号被缓存于网络中某处,例如在用户的主机中。为了克服这个问题,引入了TELNET的“Synch”机制。一个Synch信号包括一个TCP 紧急信号和TELNET命令 DATA MARK。

紧急信号,它不受限于限制TELNET的流量控制,它可以在接收到进程引发特定的数据处理。

在这种模式中,此数据流立即被看作是“有重大意义的”,而抛弃其它数据。

TELNET命令DATA MARK (DM)是数据流中的同步标志,它指示任何特定的信号已经发生过了,接收可以返回到正常处理其它数据的状态中了。Synch通过TCP发送操作完成,它和紧急标志及在最后的DM标志一起发送。当一些Synch信号被连续快速发送时紧急信号可能被淹没。不可能对紧急信号记数,因为这一数字有可能小于也可能等于已经发送的数目。当处于通常模式下,DM不是一个操作;当处于紧急模型下,它指示紧急处理的结束。如果TCP指示紧急数据结束前发现DM,TELNET应该继续操作数据流直到遇到DM为止。如果TCP在DM之后指示又有一些紧急数据,那只能是因为是一串Synch。TELNET应该继续操作数据流直到遇到DM。

“有意义的”信号被定义为:IP,AO和AYT(但不是EC或EL)的TELNET标准定义;如果有的话,本地对这些标准定义的模拟;所有其它TELNET命令;其它站点定义的不需要拖后数据流的信号。因为SYNCH命令的另一个作用是抛弃所有在接收者和发送者之间随了TELNET命令之外的字符,如果需要时,此机制被指定为标准方法来清理数据路径。例如,如果一个在终端的用户传送一个AO命令,收到此命令的服务器(如果此服务器提供此功能)应该返回一个SYNCH给用户。

最后,正如需要TCP紧急信号作为供他们使用的命令一样,其它使用TELNET协议的协议也需要类似的命令。这通过使用[IP,SYNCH]就可以达到。例如,假设其它一些使用TELNET的协议定义了类型于AO命令的停止字符串。试想此协议的用户希望服务器来处理停止字符串,但连接因为服务器正在处理别的命令而被阻塞。用户应该使它的系统做以上工作:

发送TELNET IP字符;
发送TELNET SYNC串,这就是说:发送DM作为在TCP紧急模式发送操作下的唯一字符串。
发送字符串STOP,并且
发送其它协议的类型于TELNET DM的命令。
用户(或者进程)必须象步2一样重新发送TELNET SYNCH序列来确保TELNET IP到达服务器的TELNET解释器。“紧急”将唤醒TELNET进程;IP应该唤醒更高级的进程。NVT显示和键盘 NVT显示有一个未指定的行宽和页面大小,并且可以产生代表ASCII码的字符。

对于33个控制字符和另外128个没有使用的字符,将指定给显示:

NULL (NUL) 0 无操作;

Line Feed (LF) 10 将显示移动到下一行的同一垂直位置。

Carriage Return (CR) 13 将显示移至当前行的左边界处。

另外,还应该定义如下字符(但这不是必须的),它们对显示也有作用。TELNET的任何一方都不会假定另一方会在接收或传送时采取以下行动:

BELL (BEL) 7 响铃或者给出一个可视的信号(这并不移动显示位置)。

Back Space (BS) 8将显示向左移一个位置。

Horizontal Tab (HT) 9 将显示移至下一个制表位。现在还未指定任何一方如何决定制表位的位置究竟在什么地方。

Horizontal Tab (HT) 9 将显示移至下一个垂直制表位。现在还未指定任何一方如何决定制表位的位置究竟在什么地方。

Form Feed (FF) 12 将显示移动到下页起始位置,并保持相同的水平位置。所有现在的代码都不使NVT显示作任何操作。

CR LF序列将使显示定位于下一显示行的左边界处。然而,许多系统和终端并不将这两个字符分开处理而不得不作一些工作模拟它们的作用。(例如,一些终端没有独立于LF的CR,但在这些终端上可以通过后退键模拟CR的功能。)因此,CR LF序列必将作为新行标记使用它们的复合功能;CR NUL必须在希望仅输入一个回车时使用;在其它情况下应该避免单独使用CR。这个法则使必须决定是否进行一个“新行”操作功能或多个回退的系统能够保证包括由一个字符在CR后面的TELNET流的操作,并作出正确的决定。注意:CR LF或者CR NUL对双方都是要求的,这就保证了NVT的对称性。即使在一些情况下可以知道字符未被送到实际的终端,然而,出于一致性的考虑,协议要求在CR后面如果没有LF就必须插入一个NUL。反过来说,在CR后面接收到一个NUL后,应该把它从数据流中抛弃,而不应该将它用于NVT的字符映射。

在NVT上有键盘,组合键或键序列来产生这全部128个字符。注意:虽然其中的一些对NVT显示没有作用,NVT也有能力产生它们。除了这些以外,NVT键盘还应该能够产生如下有意义,但不要求的的字符。对这些字符的实际代码指派在TELNET命令一节中,因为它们被作为普通的应该被提供的,即使在数据流被解释为一些其它字符集的情况下。

Synch 此键允许用户清除到另一方的数据通道。此键的激活导致DM的发送,而且还导致同时发送TCP的紧急信号。DM-紧急信号对有如前面定义的意义。

Break (BRK) 它的提供是因为它不是ASCII字符集内的一员。它指示Break键和Attention键被按下。然而,请注意:它是作为第129个代码,而不是IP标准定义。

Interrupt Process (IP) 暂停,中断,放弃或终止NVT连接的进程的执行。同样的,它也是使用TELNET协议的协议要使用的信号。

Abort Output (AO) 允许当前进程运行至终止,但不将结果送给用户。同样,发送SYNCH给用户。

Are You There (AYT) 回送给NVT一些可见的字符。

Erase Character (EC) 接收方应该删除紧后一个未删除的字符或从数据流中删除一个“显示位置”。

Erase Line (EL) 接收方应该将数据流中的字符从当前位置开始一直删除到最近的“CR LF”为止。

这些“额外”键的功能和一些显示格式功能键是它们应该代表一个对从NVT到本地机映射的扩充。如同NVT数据字节68应该被映射为大写D一样,一个EC字符应该被映射为一个“删除行”的功能键。另外,如果映射124在一些情况下是武断的一样,EL字符的映射有时候也是武断的。对于格式字符也是一样的:如果终端实际上拥有“垂直制表位”,那么映射到NVT是显然的,如果终端不提供此功能,那么结果将是不可预料的。TELNET命令结构 所有TELNET命令结构至少包括一个两个字节的序列:由一个IAC后跟一个命令。关于选项会话的命令是由三个字节的序列构成的,第三个字节是关于选项参考的。选择这种结构,这样随着完全使用数据空格数据与命令值之间的冲突就会减少,所有这些冲突导致了不一致和没有效率和数据的丢失。根据目前的设置,只有与IAC冲突的数据需要被发送两次,其它255个代码都可以直接发送。下面是定义了的TELNET命令。注意:只有当代码和代码序列前面是IAC时它才是命令。

SE 240 结束子会话参数。

NOP 241 无操作。

Data Mark 242 Synch的数据流部分。这应该总和TCP紧急标志一起发送。

Break 243 NVT 字符 BRK。

Interrupt Process 244 IP功能。

Abort output 245 AO功能。

Are You There 246 AYT功能。

Erase character 247 EC功能。

Erase character 247 EL功能。

Go ahead 249 The GA 信号。

SB 250 指出所跟随的是指示选项的子对话。

WILL (option code) 251 指示希望开始执行,或者确认现在正在操作指示的选项。

WON'T (option code) 252 指出拒绝执行或继续招待所指示的选项。

DO (option code) 253 指出要求对方执行,或者确认希望对方执行指示的选项。

DON'T (option code) 254 指出要求对方停止执行,或者确诊要求对方停止执行指示的选项。

IAC 255 数据字节 255。

建立连接

TELNET TCP连接在用户端口U和服务器端口L之间建立。服务器在这个公认的端口上等待连接。因为TCP连接是一个全双工的,由双方端口共同确认,服务器可以同时在L端口同时处理许多来自不同U端口的连接。端口的指定 当用于远程用户访问服务主机,此协议指定端口23(也就是八进制的27)。那是 L = 23。  
 

尊重作者 转载请注明出处52mud.com

收藏 推荐 打印 | 录入:sbso | 阅读:
相关内容      
内容推送
52mud提供
一起回忆泥巴游戏QQ群68186072
52mud官方微信公众平台
热门评论