1.半双工
这是Telnet的默认方式,但现在却很少使用。NVT默认是一个半双工设备,在接收用户输入之前,它必须从服务器进程获得GOAHEAD(GA)命令。用户的输入在本地回显,方向是从NVT键盘到NVT打印机,所以客户进程到服务器进程只能发送整行的数据。
虽然该方式适用于所有类型的终端设备,但是它不能充分发挥目前大量使用的支持全双工通信的终端功能。RFC857[Postel和
Reynolds1983c]定义了ECHO选项,RFC858[Postel和Reynolds1983d]定义了SUPPRESSGOAHEAD(抑
制继续进行)选项。如果联合使用这两个选项,就可以支持下面将讨论的方式:带远程回显的一次一个字符的方式。
2.一次一个字符方式
和Rlogin工作方式类似。我们所键入的每个字符都单独发送到服务器进程。服务器进程回显大多数的字符,除非服务器进程端的应用程序去掉了回显功能。该
方式的缺点也是显而易见的。当网络速度很慢,而且网络流量比较大的时候,那么回显的速度也会很慢。虽然如此,但目前大多数Telnet实现都把这种方式作
为默认方式。
我们将看到,如果要进入这种方式,只要激活服务器进程的SUPPRESSGOAHEAD选项即可。这可以通过由客户进程发送
DOSUPPRESSGOAHEAD(请求激活服务器进程的选项)请求完成,也可以通过服务器进程给客户进程发送
WILLSUPPRESSGOAHEAD(服务器进程激活选项)请求来完成。服务器进程通常还会跟着发送WILLECHO,以使回显功能有效。
3.一次一行方式
该方式通常叫做准行方式(kludgelinemode),该方式的实现是遵照RFC858的。该RFC规定:如果要实现带远程回显的一次一个字符方
式,ECHO选项和SUPPRESSGOAHEAD选项必须同时有效。准行方式采用这种方式来表示当两个选项的其中之一无效时,Telnet就是工作在一
次一行方式。可以看到如何协商进入该方式,并且当程序需要接收每个击键时如何使该方式失效。
4.行方式
我们用这个术语代表实行方式选项,这是在RFC1184[Borman1990]中定义的。这个选项也是通过客户进程和服务器进程进行协商而确定的,它纠正了准行方式的所有缺陷。
目前比较新的Telnet实现支持这种方式。
下图是不同的Telnet客户进程和服务器进程之间默认的操作方式。“char”表示一次一个字符方式,“kludge”表示准行方式,“linemode”表示如RFC1184定义的实行方式。
不同的Telnet客户进程和服务器进程之间默认的操作方式
从图中可以看出,只有当客户进程和服务器进程都是BSD/386或4.4BSD的时候才支持实行方式。当服务器进程的是这两者之一时,如果客户进程不支持实行方式,才会协商进入准行方式。从图中还可以看出,其实任何类型的客户进程和服务器进程都支持准行方式,但是一般都不把它作为默认方式,除非服务器进程指定。
阅读(488) | 评论(0) | 转发(0) |