TELNET终端类型选项
转:http://www.cnpaf.net/Class/Telnet/200408/5.html
1. 命令名称及编号
TERMINAL-TYPE24
2.命令含义
IACWILLTERMINAL-TYPE
发送者希望在接下来的子选项协商中发送终端类型信息。
IACWON'TTERMINAL-TYPE
发送者拒绝发送终端类型信息。
IACDOTERMINAL-TYPE
发送者希望在接下来的子选项协商中接收终端类型信息。
IACDON'TREMINAL-TYPE
发送者拒绝接受终端类型信息。
IACSBTERMINAL-TYPESENDIACSE
服务器要求客户方传送它的(客户方的)下一个终端类型,并切换到仿真模式(如果它支持多个终端类型)。SEND的编码为1。(见下面)
IACSBTERMINAL-TYPEIS...IACSE
客户方声明自己当前的(或仅有的)终端类型。
4.使用选项的原因
在大部分机器的位图显示器上(如PC机和图形工作站),客户方终端仿真程序被用来模拟传统的ASCII终端。这些程序大部分都有多种仿真模式,通常特征也多种多样。同时,现在的主机系统软件和应用能处理很多终端类型。因此,需要有一种方法:客户向服务器提交一系列可用的终端仿真模式,服务器从中选出一个合适的模式(无论何种原因)。另外,还需要一种机制:能够在会话过程中,可能是根据应用程序的需要,去改变仿真模式。Telnet中现有的终端类型传送机制在设计时没有考虑多仿真模式。虽然允许多个名字是,但它们被看作同义词。仿真模式的变化没有定义,并且所有的模式只能被检查一次。
本文档定义了对现存机制的简单扩充,它满足上面的标准。假定执行动作按以前的标
准编码,目的是获得充分的向后兼容性。
5.选项描述
在Telnet中,规定通过传统的Telnet选项协商来自动交换终端类型信息。WILL和DO仅被用请求和授权许可,来为后面的协商做准备。真正的状态信息交换是在后面的子选项协商命令中进行的(IACSBTERMINAL—TYPE...).一旦两台主机交换过WILL和DO后,发送DOTREMINAL-TYPE命令的主机(服务器)可以任意的询问终端类型信息。只有服务器能够发送询问命令(IACSBTERMINAL-TYPESENDSE)也只有客户方能够传送真正的类型信息(用IACSETERMINAL-TYPEIS...IACSE命令)。终端类型信息不能自发的被传送,只能是为了响应请求而被发出。终端类型信息是一个NVTASCII字符串。在这个字符串中,不区分大小写。所有有效的终端类型名都够在最新的“数字分配标识”RFC文档中找到。当Telnet客户为响应服务器的询问传送终端类型信息时,就意味着客户必须同步地改变仿真模式,除非传送的终端类型是前一个类型的同义词,或者进入新的模式有其它的先决条件(例如已约定Telnet的二进制选项)。在收到请求信息时,并不表示服务器会立即改变它的处理过程。但是,这种信息可能被传递给一个进程。此进程可以调整发送的数据以适应不同终端的不同特点。例如,某些操作系统有一个终端驱动器,它能通过接收一些代码从而指示出哪种终端类型正在被驱动。在这样的系统中,通过使用TERMINALTYPE和BINARY选项,Telnet服务程序能够安排终端的驱动过程(包括一些标准网络虚拟终端不具有的特殊功能),就像它们被直接连接在一起。
注意,这个规范是特意不对称的。它假定服务方操作系统和应用不能在一个连接的任意点改变终端类型。因此,只有在服务器要求时,客户方才能发送新的终端类型(并潜在的改变仿真模式)。
6.执行问题
“终端类型”信息可以是任意的NVTASCII字符串。只要字符串对协商的两端都有意义。在数字分配标识文档的终端类型列表中,试图将由于终端类型写法的可选择性而引起的混肴降到最小。例如,当一方将一个终端称作“IBM3278-2”,而另一方称它为“IBM-3278/2”时,就会出现混肴。对于一个不能识别的终端类型不会有否定的确认,但是当没有指定一个有效的终端类型名时,有些选项(例如切换到BINARY模式)可能会被拒绝。在一些情况下,或者某些特殊的终端可能有不止一个名字,例如有一个特殊的类型和几个普通的类型,或者客户方是一个带有复合式显示器的工作站,它能仿真多种终端模式。在这种情况下,发送TERMNINAL-TYPEIS命令的一方应该用不同的名字来响应接下来的TERMINAL-TYPESEND命令。用这种方法,当不能解释第一次响应的类型时,Telnet服务器能够提示进行选择。如果客户方支持多种不同的终端仿真,除非某些特殊的仿真需要其他的Telnet选项(如BINARY)作为先决条件(在这种条件下,当先决条件被执行后,仿真模式将转换到最后发送的类型),否则必须将仿真模式转换到最后的类型。当类型名是同义词时,它们应该按从细节最多的名字到细节最少的顺序被发送。当服务器(收到TERMINAL-TYPEIS的一方)在连续的时间收到相同的类型时,这说明此为有效类型列表的末尾。同样,客户端应该通过重复发送最后一个类型以表示它已经传送了所有有效的类型名。如果客户端收到一个额外的请求,它表示服务方(发送IS的一方)希望返回到有效类型列表的顶部(可能希望选择最小的Nevils)。以前的标准规定,当在两个连续的时间收到相同的响应时,服务器将停止发送
TERMINAL-TYPESEND命令,并将根据原来的标准工作。假定客户方的执行将照以前的标准去发送列表中的最后一个类型,以响应第三次请求(和第二次)。新式的服务器必须能识别这一点并且不再发送更多的请求。当终端类型是未知的或是一方不能识别时,将使用“未知”类型。最新的全部终端类型名列表被保存在“数字分配标识”中。一个终端类型名的最大长度是40字节。
7.用户接口
符合此规范的Telnet客户和服务器应该在它们的用户接口中提供以下的功能:支持多仿真模式的客户应该允许用户能够在连接建立以前指定首选的模式(即哪个名字首先被发送)。当协商开始后,发送类型的顺序就不能再更改。当服务器不支持TERMIANL
TYPE时,这种模式也将成为它的默认模式。服务器应该用某种方式存储当前的终端类型名和有效的名字列表。只有这样,它才能
获得所需要的用户(通过键盘命令)和任何应用程序的信息。另外,也需要一种相应的机制(通过建立一系列的SEND/IS子协商)去请求改变终端类型。
8.例子
在这个例子中,服务器查找第一个可接受的类型。
Server:IACDOTERMINAL-TYPE
Client:IACWILLTERMINAL-TYPE
(现在,服务器可在任意时刻请求终端类型。)
Server:IACSBTERMINAL-TYPESENDIACSE
Client:IACSBTERMINAL-TYPEISIBM-3278-2IACSE
在这个例子中,服务器请求额外的终端类型,并接受响应的第二种类型(列表中的最后
一个)
Server:IACDOTERMINAL-TYPE
Client:IACWILLTERMINAL-TYPE
(现在,服务器可在任意时刻请求终端类型)
Server:IACSBTERMINAL-TYPESENDIACSE
Client:IACSBTERMINAL-TYPEISZENITH-H19IACSE
Server:IACSBTERMINAL-TYPESENDIACSE
Client:IACSBTERMINAL-TYPEISUNKNOWNIACSE
Server:IACSBTERMINAL-TYPESENDIACSE
Client:IACSBTERMINAL-TYPEISUNKNOWNIACSE
在这个例子中,服务器请求额外的终端类型,并超出了类型列表的末尾。它选择客户
提供的第一种类型(新型的客户和服务器)。
Server:IACDOTERMINAL-TYPE
Client:IACWILLTERMINAL-TYPE
(现在,服务器可在任意时刻请求终端类型。)
Server:IACSBTERMINAL-TYPESENDIACSE
Client:IACSBTERMINAL-TYPEISDEC-VT220IACSE
Server:IACSBTERMINAL-TYPESENDIACSE
Client:IACSBTERMINAL-TYPEISDEC-VT100IACSE
Server:IACSBTERMINAL-TYPESENDIACSE
Client:IACSBTERMINAL-TYPEISDEC-VT52IACSE
Server:IACSBTERMINAL-TYPESENDIACSE
Client:IACSBTERMINAL-TYPEISDEC-VT52IACSE
Server:IACSBTERMINAL-TYPESENDIACSE
Client:IACSBTERMINAL-TYPEISDEC-VT220IACSE
9.References:
[1]Postel,J.,andJ.Reynolds,"TelnetProtocolSpecification",
RFC854,USCInformationSciencesInstitute,May1983.
[2]Postel,J.,andJ.Reynolds,"TelnetOptionSpecification",
RFC855,USCInformationSciencesInstitute,May1983.
[3]Solomon,M.,andE.Wimmers,"TelnetTerminalTypeOption",
RFC930,UniversityofWisconsin-Madison,January1985.
[4]Reynolds,J.,andJ.Postel,"AssignedNumbers",RFC1010,
USCInformationSciencesInstitute,May1987.
Reviser'snote:
IowemuchofthistexttoRFCs884and930,byMarvinSolomonand
EdwardWimmersoftheUniversityofWisconsin-Madison,andIowe
theideaoftheextensiontodiscussionsonthe"tn3270"mailinglist
intheSummerof1987.
Author'sAddress
JamesVanBokkelen
FTPSoftware,Inc.
26PrincessStreet
Wakefield,MA01880-3004
Phone:(617)246-0900
Email:jbvb@ftp.com
TELNET终端类型选项的更多相关文章
- Telnet窗口尺寸选项
转:http://www.cnpaf.net/Class/Telnet/200408/6.html 1.命令名称和选项代码 名称=NAWS(NegotiateAboutWindowSize)协商窗口的 ...
- Linux的终端类型
终端是一个很重要的外设,用过终端设备的人都知道如果设备类型不对就会有乱字符,也可用仿真终端软件如netterm试验一下,Linux的终端信息放在 /usr/share/terminfo下,在这个目录的 ...
- Linux命令格式、终端类型和获取帮助的方法
Linux用户类型 Root用户:超级管理员,权限很大 普通用户:权限有限 终端 terminal 终端类型 物理终端:鼠标.键盘.显示器 虚拟终端:软件模拟出来的终端 控制台终端: /dev/con ...
- 爬虫:Scrapy14 - Telnet 终端(Telnet Console)
Scrapy 提供了内置的 Telnet 终端,以供检查,控制 Scrapy 运行的进程.Telnet 仅仅是一个运行在 Scrapy 进程中的普通 Python 终端.因此你可以在其中做任何是. T ...
- js 判断访问终端类型
// 判断访问终端类型 var browser = { versions: function() { var u = navigator.userAgent, app = navigator.appV ...
- ttytype - 终端设备映射的默认终端类型
DESCRIPTION(描述) /etc/ttytype 文件把termcap/terminfo中的终端类型名与tty行关联起来.每行包括一种终端类型,后面跟着空格,然后是tty名(不带 /dev/ ...
- linux各种终端类型的区别和概念
1 pty(虚拟终端或伪终端): 当我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pty(pseudo-tty). 2 tty(终端设备的统称):tty一词源 ...
- Linux终端类型
unix是一个多用户多任务的操作系统.早期电脑昂贵,所以当时使用便宜的设备连接到电脑上(当时还没有键盘和显示器,使用纸带和卡片来输入输出)来使用操作系统,这个便宜的设备就是终端,也可以认为终端是一种控 ...
- 判断终端类型、微信的文章防盗链、h5页面跳转打开新的app、跳转到app市场
判断终端的类型.安卓.ios.微信.qq function GetMobelType() { var browser = { ...
随机推荐
- POJ 1320 Street Numbers 解佩尔方程
传送门 Street Numbers Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2529 Accepted: 140 ...
- 动态规划:LCIS
先给出状态转移方程: 定义状态 F[i][j]表示以a串的前i个整数与b串的前j个整数且以b[j]为结尾构成的LCIS的长度 状态转移方程: ①F[i][j] = F[i-][j] (a[i] != ...
- python 实现定时循环触发某个方法
直接贴上代码 import threading def sayhello(): print "hello world" global t #Notice: use global v ...
- IpmiTool常见问题解决办法
IpmiTool常见问题解决办法 http://blog.csdn.net/c9h8o4/article/details/17138029 关于IPMI的几个问题 http://blog.csdn.n ...
- golang进行加密
crc64加密 package main import ( "fmt" "hash/crc64" ) func main(){ s:="打死udhan ...
- 基于iscroll实现下拉和上拉刷新
在原生APP的开发中,有一个常见的功能,就是下拉刷新的功能,这个想必大家都是知道的,但是原生APP的开发,有一个很大的问题就是,你每次更新一些功能,就要用户重新下载一次版本,尤其是在iOS系统中,新版 ...
- .tar与.gz有什么联系与区别?
我们在windows下经常进行压缩解压等操作.在linux上也经常会用到,但是比较常见的是.tar.gz 很多人见到就条件反射,压缩用czvf,解压用xzvf.但是,你真的了解这个后缀名吗? 其实: ...
- HDU-3221
Brute-force Algorithm Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- Selenium2+python自动化57-捕获异常(NoSuchElementException)【转载】
前言 在定位元素的时候,经常会遇到各种异常,为什么会发生这些异常,遇到异常又该如何处理呢? 本篇通过学习selenium的exceptions模块,了解异常发生的原因. 一.发生异常 1.打开博客首页 ...
- TS 数据流分析学习
TS 流.包结构以及同步 1. TS 流: 可以将TS流理解为一种单一码流.混合码流. 单一码流:TS流的基本组成单位是长度为188字节的TS包. 混合码流:TS流有多种数据组成,一个TS包中的数据可 ...