用户计算机与远程服务器所使用的计算机和操作系统各不相同,如果不考虑系统间的差异,那么在本地发出的字符及命令,传送到远程主机并被远程系统解释后可能会不准确或出现错误。例如:一些操作系统需要每行文本用ASCII回车控制符(CR)结束,而另一些系统则需要使用ASCII换行符(LF),还有的系统需要用两个字符的回车换行(CR-LF)序列。再比如,多数操作系统为用户提供了一个中止程序运行的快捷键,但在不同的系统中这个快捷键是不同的(一些系统使用Ctrl+C,而另一些系统使用Escape)。
为支持异构性(在不同平台和系统中的互操作性),TELNET协议定义了网络虚拟终端(NVT,network virtual terminal ),即数据和命令序列在Internet上传输的标准表示方式。
网络虚拟终端是客户端一服务器模式的一种实现,把连接的每一端都作为虚拟终端(逻辑I/C设备)对待,逻辑输入设备(或用户的键盘)产生待发送的数据,逻辑输出设备(或显示器)响应接收的数据和远程系统的输出。任一虚拟终端产生的指令,都会被翻译成相应的物理设备指令。
简单地说,为了使远程主机能够正确识别用户输入的信息,而用户屏幕上也能正确显示远程主机输出的信息,网络虚拟终端格式充当了桥粱的作用。
网络虚拟终端使用7位标准ASCII码来表示数据,每个7位的字符都以8位(一个字节)的格式发送,最高位固定为1。7位标准ASCII字符集包括95个可打印字符(编码32~126)和33个控制码(编码0—31和127),当用户从本地键入普通字符时,网络虚拟终端将按其原始含义传送,当用户键人组合键时,网络虚拟终端将它转化为特殊的ASCII字符在网络上传送。下表列出了网络虚拟终端中定义的控制字符。
ASCII控制代码 | 编号 | 含义 |
NUL | 0 | 无操作 |
BEL | 7 | 产生一个可以看到或可以听到的信号 |
BS | 8 | 向左移动一个字符的位置 |
HT | 9 | 向右移动到下一个水平制表符停止的位置 |
LF | 10 | 移动到下一行,水平位置不变 |
VT | 11 | 向下移动到下一个垂直制表符停止的位置 |
FF | 12 | 移动到下一页的顶端 |
CR | 13 | 移动到当前行最左的位置 |
其他控制码 | - | 无操作 |
除了表中所列控制字符外,网络虚拟终端把两个字符的序列CR—LF定义为标准行结束符。当用户按下相当于行结束的键时,TELNET客户端必须把它映射为CR-LF才能传输,而TELNET服各端则要把CR-LF翻译为远程机器上相应的行结束符。
ASCII控制代码 | 编号 | 含义 |
NUL | 0 | 无操作 |
BEL | 7 | 产生一个可以看到或可以听到的信号 |
BS | 8 | 向左移动一个字符的位置 |
HT | 9 | 向右移动到下一个水平制表符停止的位置 |
LF | 10 | 移动到下一行,水平位置不变 |
VT | 11 | 向下移动到下一个垂直制表符停止的位置 |
FF | 12 | 移动到下一页的顶端 |
CR | 13 | 移动到当前行最左的位置 |
其他控制码 | - | 无操作 |