Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1330462
  • 博文数量: 464
  • 博客积分: 9399
  • 博客等级: 中将
  • 技术积分: 6364
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-19 09:15
文章分类

全部博文(464)

文章存档

2014年(12)

2013年(123)

2012年(173)

2011年(156)

我的朋友

分类:

2011-07-22 16:36:28

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) |
给主人留下些什么吧!~~