firemail

标题: Telnet [打印本页]

作者: Qter    时间: 2019-12-31 13:21
标题: Telnet
TeInet协议
1、 基本内容 ---模拟远程主机系统的一个终端
Telnet是位于OSI模型的第7层---应用层上的一种协议,是一个通过创建虚拟终端提供连接到远程主机终端仿真的TCP/IP协议。
这一协议需要通过用户名和口令进行认证,是Internet远程登陆服务的标准协议。应用Telnet协议能够把本地用户所使用的计算机变成远程主机系统的一个终端。
2 、适应异构---网络虚拟终端NVT(Net Virtual Terminal)
为了使多个操作系统间的Telnet交互操作成为可能,就必须详细了解异构计算机和操作系统。
比如,一些操作系统需要每行文本用ASCII回车控制符(CR)结束,另一些系统则需要使用ASCII换行符(LF),还有一些系统需要用两个字符的序列回车-换行(CR-LF);
再比如,大多数操作系统为用户提供了一个中断程序运行的快捷键,但这个快捷键在各个系统中有可能不同(一些系统使用CTRL+C,而另一些系统使用ESCAPE)。
如果不考虑系统间的异构性,那么在本地发出的字符或命令,传送到远地并被远程系统解释后很可能会不准确或者出现错误。因此,Telnet协议必须解决这个问题。 
为了适应异构环境,Telnet协议定义了数据和命令在Internet上的传输方式,此定义被称作网络虚拟终端NVT(Net Virtual Terminal)。它的应用过程如下:
 对于发送的数据:客户机软件把来自用户终端的按键和命令序列转换为NVT格式,并发送到服务器,服务器软件将收到的数据和命令,从NVT格式转换为远地系统需要的格式;
 对于返回的数据:远地服务器将数据从远地机器的格式转换为NVT格式,而本地客户机将将接收到的NVT格式数据再转换为本地的格式。 
对于NVT格式的详细定义,有兴趣的朋友可以去查找相关资料。
3 、传送远程命令
Telnet同样使用NVT来定义如何从客户机将控制功能传送到服务器。我们知道USASCII字符集包括95个可打印字符和33个控制码。
当用户从本地键入普通字符时,NVT将按照其原始含义传送;当用户键入快捷键(组合键)时,NVT将把它转化为特殊的ASCII字符在网络上传送,并在其到达远地机器后转化为相应的控制命令。
4 、数据流向
因为每一次的输入和输出,计算机将切换进程环境好几次,这个开销是很昂贵的。
5、 强制命令 ---外带信令以便强制服务器读取一个控制命令  ---Telnet选项
 我们应该考虑到这样一种情况:假设本地用户运行了远地机器的一个无休止循环的错误命令或程序,且此命令或程序已经停止读取输入,
那么操作系统的缓冲区可能因此而被占满,如果这样,远程服务器也无法再将数据写入伪终端,并且最终导致停止从TCP连接读取数据,TCP连接的缓冲区最终也会被占满,
从而导致阻止数据流流入此连接。如果以上事情真的发生了,那么本地用户将失去对远程机器的控制。   
为了解决此问题,Telnet协议必须使用外带信令以便强制服务器读取一个控制命令。我们知道TCP用紧急数据机制实现外带数据信令,
那么Telnet只要再附加一个被称为数据标记(date mark)的保留八位组,并通过让TCP发送已设置紧急数据比特的报文段通知服务器便可以了,
携带紧急数据的报文段将绕过流量控制直接到达服务器。作为对紧急信令的相应,服务器将读取并抛弃所有数据,直到找到了一个数据标记。
服务器在遇到了数据标记后将返回正常的处理过程。   由于Telnet两端的机器和操作系统的异构性,使得Telnet不可能也不应该严格规定每一个telnet连接的详细配置,
否则将大大影响Telnet的适应异构性。因此,Telnet采用选项协商机制来解决这一问题。   
Telnet选项的范围很广:一些选项扩充了大方向的功能,而一些选项制涉及一些微小细节。
例如:有一个选项可以控制Telnet是在半双工还是全双工模式下工作(大方向);还有一个选项允许远地机器上的服务器决定用户终端类型(小细节)。
6 、子选项协商  ----终端类型(确认一个终端标志)
有些选项不是仅仅用“激活”或“禁止”就能够表达的。指定终端类型就是一个例子,客户进程必须发送用一个A S C I I字符串来表示终端类型。
为了处理这种选项,我们必须定义子选项协商机制。   
在R F C 1 0 9 1 [ VanBokkelen 1989]中定义了如何表示终端类型这样的子选项协商机制。首先连接的某一方(通常是客户进程)发送3个字节的字符序列来请求激活该选项。
  <IAC, WILL, 24>   这里的2 4(十进制)是终端类型选项的I D号。
如果收端(通常是服务器进程)同意,那么响应数据是:   <IAC, DO, 24>   
然后服务器进程再发送如下的字符串:   <IAC, SB, 24, 1, IAC, SE>   该字符串询问客户进程的终端类型。
其中S B是子选项协商的起始命令标志。下一个字节的“2 4”代表这是终端类型选项的子选项(通常S B后面的选项值就是子选项所要提交的内容)。
下一个字节的“ 1”表示“发送你的终端类型”。子选项协商的结束命令标志也是I A C,就像S B是起始命令标志一样。







欢迎光临 firemail (http://firemail.wang:8088/) Powered by Discuz! X3