pop3telnetsmtp协议内容摘要:

VT 的显示设备 上显示。 对于网络上的回显并不要求(虽然确实存在这个 “ 远程 ” 回显选项,但是主机必不是必须实现此选项)。 字符集是由七位 ASCII 码组成的,而保存在八位的域中。 任何字符的转换和计时方面的考虑都是本地的问题,这不影响 NVT 的工作。 数据传送方面,虽然 TELNET 连接是全双工的, NVT 却是在线缓冲状态下的半双工设备。 传送数据 虽然 TELNET 连接是全双工的,在线缓冲模式下, NVT 却被当作半双工的设备。 此信号可以由进程或者用户产生。 对于一些主机处理网络输入中断,或与默认的不进行远程回显的NVT 说明的主机来说,此规则的代 价是高昂的。 因此,在源点缓存一些数据是有理由的。 一些系统在每个输入行未采用一些操作(即使是行打印机或打卡机也经常采用这种方法),这样可以在每行未开始发送。 在另一方面,用户或者进程可以有时发觉提供在行未不中断的数据是有用的而且是必须的;因此,也应该在实现在本地能够识别这种信号并把这些数据立刻发送的方法和机制。 当一个进程已经完成将数据发送到对方的显示设备而且也没有缓存的输入数据时时,进程必须发送 TELNET Go Ahead (GA)命令。 这个规则并不是要求 TELNET GA 命令必须由双方终端发送,因为服务 器主机通常不要求特定的信号来继续进程。 但是,此命令的设计可以帮助用户的本地主机操作一个物理上半双工的终端,它如果 IBM2741 一样拥有可锁定的键盘。 对此种类型终端的描述有助于解释 GA 命令的正确使用。 终端和计算机的连接总是在计算机或用户的控制之下。 任何一方都不能够隐式地从另一方获得控制权;控制权必须显式地从一方转移到另一方。 在终端一方,设置硬件在每一行结束时放弃控制权(例如,当用户按下回车键时)。 当这种情况发生时,本地计算机处理输入数据,决定是否输出,如果不需要,将控制权回送给终端。 如果需要产生输出,计算机 将保有控制权直到输出数据发送完毕。 在网络上使用这种终端的困难是显而易见的。 “ 本地 ” 计算机不知道在读到行未符号时是否应该继续保持控制权;这个问题的决定权在远地处理此数据的计算机。 因此, TELNET GA 命令提供了一种机制让远程计算机能够通知本地计算机,让它将控制权转交给用户终端。 在用户需要控制权时,此信号应该也只能在此时发送。 注意:过早地发送 GA命令会使输出数据阻塞,因为用户可以假定传送系统暂停,因此不能将一行结束。 当然,前述内容不能够用于用户到服务器方面的通信方面。 在这个方面, GA 命令可以在任何时候发送,可 以根本不用发送。 同样,如果 TELNET 连接被用于进程到进程的通信,也不需要发送 GA 命令。 最后,对于终端到终端的通信,可以在两端都需要 GA命令,也可以在一端,也可以两端都需要。 如果主机希望支持终端到终端的通信主机应该提供一种让用户自由发送 GA 命令的方法;然而,对于一个 TELNET 进程而言,这并不是必须的。 注意: TELNET 模式的对称性要求在概念上,两端中的一端至少是一个 NVT。 控制函数的标准表示 如要本文的介绍中所说的, TELNET协议的目的是提供一种网络上面向终端进程和终端设备的标准接口。 这种类型互连的 先前的经验告诉我们,在许多主机上已经实现了类似的功能,但它们的实现方法却差别很大。 对于接触这些系统的用户而言,这些差别将是令人头痛的。 因此, TELNET定义了以下功能的五种标准表示。 这种标准表示有一定的标准的意义,但这也不是必须的(例外是中断处理函功能要其它使用 TELNET 的协议执行);这也就是说,系统不提供给本地用户的功能也不可以不提供给远程用户,它可以将标准表示作为非操作的功能。 在另一方面,给本地用户提供此功能的系统必须也向传送此功能标准表示的远程用户提供此功能。 中断处理( IP)一些系统提供可以暂停 ,中断,放弃或终止用户进程操作的功能。 当用户确定它的进程处于不可结束的循环中,或不经意地激活了一个进程时经常使用此功能。 IP是使用此功能的标准表示。 实现者应该注意的是:使用 TELNET 的其它协议可能也需要 IP,因此,如果需要支持其它协议就应该实现 IP。 放弃输出 (AO) 许多系统提供此功能,它允许产生输出的进程到达类似操作结束的点,而不将输出发送到用户的终端。 更深一层的,此功能通常清除已产生的所有输出,而不显示到用户的终端上。 AO 是使用此功能的标准表示。 例如,一些子系统可能通常接受用户命令,发送长文本串到 用户终端,最后发送一个提示用户允许接收下一命令的提示符到用户终端。 如果在传送文本串的过程中接收到 AO 命令,将会不再发送剩余的字符串,而直接显示提示符告知用户可以输入下一命令。 (这与接收到 IP 之后的操作可能有所不同; IP会放弃发送剩余的字符串而且退出子系统。 )应该注意到,使用提供此功能的服务器系统时外部缓冲区(在网络和用户本地主机上)也被清除;完成的正确方法是向用户系统发送 “Synch” 信号。 你在此吗 ( AYT) 许多系统提供用户这样的功能,让用户知道是否正在运行。 此功能在系统由于不可预知长度运算,或系统负 载重的情况下长时间不响应时由用户发起。 AYT 是使用此功能的标准表示。 删除字符( EC) 许多系统提供此功能用于删除最近相邻的不可删除字符或用户提供数据流的最近相邻的 “ 显示位置 ”。 此功能通常用于编辑键盘错误的输入。 EC是使用此功能的标准表示。 注意: “ 显示位置 ” 可能包括多于一个的字符,它们是过多键入的结果或者如下格式的字符串: char1 BS char2... 删除行( EL) 许多系统提供此功能用于删除当前输入行中的所有数据。 此功能通常被用于是编辑键盘输入。 EL 是使用此功能的标准表示。 TELNET 的 Synch信号 大部分时分系统提供一种允许终端用户重新获得失控进程的机制;上述的 IP 和 AO 功能就是此机制的一个例子。 这些系统,当被用于本地时,访问由用户提供的所有信号,无论此信号是一般字符还是不可显示的字符如电传中的 “BREAK” 或 IBM 2741 中的 “ATTN” 键。 当系统通过网络连接时这种情况不一定就是准确的;网络流量控制机制可能导致一个信号被缓存于网络中某处,例如在用户的主机中。 为了克服这个问题,引入了 TELNET的 “Synch” 机制。 一个 Synch 信号包括一个 TCP 紧急信号和 TELNET 命令 DATA MARK。 紧急信号,它不受限于限制 TELNET 的流量控制,它可以在接收到进程引发特定的数据处理。 在这种模式中,此数据流立即被看作是 “ 有重大意义的 ” ,而抛弃其它数据。 TELNET 命令 DATA MARK (DM)是数据流中的同步标志,它指示任何特定的信号已经发生过了,接收可以返回到正常处理其它数据的状态中了。 Synch 通过 TCP 发送操作完成,它和紧急标志及在最后的 DM 标志一起发送。 当一些 Synch 信号被连续快速发送时紧急信号可能被淹没。 不可能对紧急信号记数,因为这一数字有可能小于也可能等于已经发送的 数目。 当处于通常模式下, DM 不是一个操作;当处于紧急模型下,它指示紧急处理的结束。 如果 TCP 指示紧急数据结束前发现 DM, TELNET 应该继续操作数据流直到遇到 DM为止。 如果 TCP 在 DM 之后指示又有一些紧急数据,那只能是因为是一串 Synch。 TELNET 应该继续操作数据流直到遇到 DM。 “ 有意义的 ” 信号被定义为: IP, AO 和 AYT(但不是 EC 或 EL)的 TELNET 标准定义;如果有的话,本地对这些标准定义的模拟;所有其它 TELNET 命令;其它站点定义的不需要拖后数据流的信号。 因为 SYNCH 命令的另一个作用是抛弃 所有在接收者和发送者之间随了 TELNET 命令之外的字符,如果需要时,此机制被指定为标准方法来清理数据路径。 例如,如果一个在终端的用户传送一个 AO 命令,收到此命令的服务器(如果此服务器提供此功能)应该返回一个SYNCH 给用户。 最后,正如需要 TCP 紧急信号作为供他们使用的命令一样,其它使用 TELNET 协议的协议也需要类似的命令。 这通过使用 [IP, SYNCH]就可以达到。 例如,假设其它一些使用 TELNET 的协议定义了类型于 AO 命令的停止字符串。 试想此协议的用户希望服务器来处理停止字符串,但连接因为服务器正在处理 别的命令而被阻塞。 用户应该使它的系统做以上工作: 1. 发送 TELNET IP 字符; 2. 发送 TELNET SYNC 串,这就是说:发送 DM 作为在 TCP 紧急模式发送操作下的唯一字符串。 3. 发送字符串 STOP,并且 4. 发送其它协议的类型于 TELNET DM 的命令。 用户(或者进程)必须象步 2 一样重新发送 TELNET SYNCH 序列来确保 TELNET IP 到达服务器的 TELNET 解释器。 “ 紧急 ” 将唤醒 TELNET 进程; IP 应该唤醒更高级的进程。 NVT 显示和键盘 NVT 显示有一个未指定的行宽和页面大小,并且可以产生代表 ASCII 码的字符。 对于 33 个控制字符和另外 128 个没有使用的字符,将指定给显示: NULL (NUL) 0 无操作; Line Feed (LF) 10 将显示移动到下一行的同一垂直位置。 Carriage Return (CR) 13 将显示移至当前行的左边界处。 另外,还应该定义如下字符(但这不是必须的),它们对显示也有作用。 TELNET 的任何一方都不会假定另一方会在接收或传送时采取以下行动: BELL (BEL) 7 响铃或者给出一个可视的信号(这并不移动显示位置)。 Back Space (BS) 8 将显示向左移一个位置。 Horizontal Tab (HT) 9 将显示移至下一个制表位。 现在还未指定任何一方如何决定制表位的位置究竟在什么地方。 Horizontal Tab (HT) 9 将显示移至下一个垂直制表位。 现在还未指定任何一方如何决定制表位的位置究竟在什么地方。 Form Feed (FF) 12 将显示移动到下页起始位置,并保持相同的水平位置。 所有现在的代码都不使 NVT 显示作任何操作。 CR LF 序列将使显示定位于下一显示行的左边界处。 然而,许多系统和终端并不将这两个字符分开处理而不 得不作一些工作模拟它们的作用。 (例如,一些终端没有独立于 LF的 CR,但在这些终端上可以通过后退键模拟 CR 的功能。 )因此, CR LF 序列必将作为新行标记使用它们的复合功能; CR NUL 必须在希望仅输入一个回车时使用;在其它情况下应该避免单独使用 CR。 这个法则使必须决定是否进行一个 “ 新行 ” 操作功能或多个回退的系统能够保证包括由一个字符在 CR 后面的 TELNET 流的操作,并作出正确的决定。 注意: CR LF 或者 CR NUL 对双方都是要求的,这就保证了 NVT 的对称性。 即使在一些情况下可以知道字符未被送到实际的终端,然而 ,出于一致性的考虑,协议要求在 CR 后面如果没有 LF就必须插入一个 NUL。 反过来说,在 CR 后面接收到一个 NUL 后,应该把它从数据流中抛弃,而不应该将它用于 NVT的字符映射。 在 NVT 上有键盘,组合键或键序列来产生这全部 128 个字符。 注意:虽然其中的一些对 NVT显示没有作用, NVT 也有能力产生它们。 除了这些以外, NVT 键盘还应该能够产生如下有意义,但不要求的的字符。 对这些字符的实际代码指派在 TELNET 命令一节中,因为它们被作为普通的应该被提供的,即使在数据流被解释为一些其它字符集的情况下。 Synch 此键允 许用户清除到另一方的数据通道。 此键的激活导致 DM 的发送,而且还导致同时发送 TCP 的紧急信号。 DM紧急信号对有如前面定义的意义。 Break (BRK) 它的提供是因为它不是 ASCII 字符集内的一员。 它指示 Break 键和 Attention键被按下。 然而,请注意:它是作为第 129 个代码,而不是 IP 标准定义。 Interrupt Process (IP) 暂停,中断,放弃或终止 NVT 连接的进程的执行。 同样的,它也是使用 TELNET 协议的协议要使用的信号。 Abort Output (AO) 允许当前进程运行至终 止,但不将结果送给用户。 同样,发送 SYNCH 给用户。 Are You There (AYT) 回送给 NVT 一些可见的字符。 Erase Character (EC) 接收方应该删除紧后一个未删除的字符或从数据流中删除一个 “ 显示位置 ”。 Erase Line (EL) 接收方应该将数据流中的字符从当前位置开始一直删除到最近的 “CR LF”为止。 这些 “ 额外 ” 键的功能和一些显示格式功能键是它们应该代表一个对从 NVT 到本地机映射的扩充。 如同 NVT 数据字节 68 应该被映射为大写 D一样,一个 EC 字符应该被映射为一个 “ 删除行 ” 的功能键。 另外,如果映射 124 在一些情况下是武断的一样, EL 字符的映射有时候也是武断的。 对于格式字符也是一样的:如果终端实际上拥有 “ 垂直制表位 ” ,那么映射到 NVT是显然的,如果终端不提供此功能,那么结果将是不可预料的。 TELNET 命令结构 所有 TELNET命令结构至少包括一个两个字节的序列:由一个 IAC 后跟一个命令。 关于选项会话的命令是由三个字。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。