转:http://www.cnpaf.net/Class/Telnet/200408/6.html

1.命令名称和选项代码
  名称=NAWS(NegotiateAboutWindowSize)协商窗口的尺寸

  代码=31
2.命令含义
  IACWILLNAWS

  由Telnet客户端发送来建议使用NAWS.

  IACWON'TNAWS

  由Telnet客户端发送来拒绝使用NAWS.

  IACDONAWS

  由Telnet服务器端发送来建议使用NAWS.

  IACDON'TNAWS

  由Telnet服务器端发送来拒绝使用NAWS.

  IACSBNAWS<16-bitvalue><16-bitvalue>IACSE

  由Telnet客户端发送,通知Telnet服务器端这个窗口的宽度和高度。窗口尺寸信息从Telnet客户端到Telnet服务器端通过这个选项来传递。此信息是参考性的。服务器可能接受这个选项,但是并不使用传递的信息。

 
 客户端和服务器端使用标准的TelnetWILL/DO/DON'T/WON'T机制来协商发送窗口尺寸信息。如果客户端和服务器端都同意,客户端可以
发送一个子协商用来传递窗口的尺寸。如果以后客户端的窗口尺寸改变了(例如,窗口尺寸被用户改变),客户端可能再次发送这个子协商。因为在某些操作系统
上,服务器正在执行的时候可能不允许更新窗口尺寸信息,所以服务器可能在接受最初的窗口尺寸后发送一个DON'TNAWS给客户端以阻止更多的子协商。一
个协商循环将不会形成下面这些规则。

  子协商包含两个值,用字符表示的窗口的宽度值和高度值。这两个值中的每一个值都是以两个字节为一
组以标准的Internet字节和比特顺序发送的。这就允许窗口的宽度或高度的最大值是65535个字符。对于宽度或高度来说,接受一个等于零的值就意味
着没有字符宽度或高度被发送。既然如此,Telnet服务器将假定宽度或高度是与操作系统相关的(它将有可能是基于终端类型信息的,这个终端类型信息是使
用TERMINALTYPE的Telnet选项来发送的)。

  子协商的语法是

  IACSBNAWSWIDTH[1]WIDTH[0]HEIGHT[1]HEIGHT[0]IACSE

  象Telnet协议所要求的那样,在子协商中任何出现255的地方都必须显示两次。为了和IAC(它有一个255的值)字符区别。
3.默认的规范
  WON'TNAWS

  DON'TNAWS

  这个选项不假定任何默认的窗口尺寸信息。通常由TERMINALTYPETelnet选项传递的终端类型可能暗示着一个窗口尺寸,但是对于这个选项,那是不必要的。
4.动机
 
 随着窗口系统的日益流行,Telnet客户端总是运行在一个可变尺寸的窗口中。Telnet服务器为了正确控制光标,需要知道窗口的尺寸。窗口可能在
Telnet的会话过程中改变尺寸,更新的窗口尺寸需要传送给服务器。本备忘录就确定了一个从客户端到服务器发送用字符表示的窗口高度和宽度的选项。

Telnet
选项:协商输出行宽(NAOL)和协商输出页尺寸(NAOP)在语义上并不是很恰当,他们不是公用的[见RFC-1011"正式Internet协议",
和"防卫协议手册"]。NAOL和NAOP选项是双向的(也就是说服务器可以控制客户端的行宽或者页尺寸),在每一轴中限制253个字符。

 
 这个选项是正常窗口协商过程的一个较好的模型。客户端完全控制它的窗口尺寸,只是简单地告诉服务器当前的窗口是多大。而且,253个字符的高度和宽度的
限制非常低,所以,新的选项具有65535字符的限制。最后,这个选项同时发送窗口的高度和宽度,因为窗口高度和宽度通常都是同时改变的。许多操作系统和
窗口应用程序更可能认为窗口的高度和宽度是同时改变的。
5.描述和实现的注释
  这个选项的典型用户可能是运行在XWindow下的
Telnet客户端。在用户调整了客户端窗口的尺寸后,一定会和Telnet客户端通信。在4.3BSDUnix中,信号SIGWINCH(窗口改变)可
能被Telnet客户端捕获并且一个新的NAWS子协商会被发送到服务器端。在接收到NAWS子协商后,服务器可能作出适当地ioctl来处理这个新的消
息,然后发出SIGWINCH信号给它的子进程,可能是一个shell。
6.例子
  在下列的例子中,数据流中的所有数字都是十进制。
1).服务器建议,客户端同意使用NAWS
  (服务器发送)IACDONAWS
  (客户端发送)IACWILLNAWS
  (客户端发送)IACSBNAWS080024IACSE
  [窗口80字符宽,24字符高]
  [某个时刻用户改变了窗口尺寸]
  (客户端发送)IACSBNAWS080064IACSE
  [窗口80字符宽,64字符高]

  所有的数字形式

  (服务器发送)25525331
  (客户端发送)25525331
  (客户端发送)25525031080024255240

  (客户端发送)25525031080064255240

2).客户端建议,服务器同意使用NAWS

  (客户端发送)IACWILLNAWS
  (服务器发送)IACDONAWS
  (客户端发送)IACSBNAWS144024IACSE

  [窗口300字符宽,24字符高]

3).客户端建议,服务器拒绝使用NAWS

  (客户端发送)IACWILLNAWS
  (服务器发送)IACDON'TNAWS

4).服务器建议,客户端拒绝使用NAWS

  (服务器发送)IACDONAWS
  (客户端发送)IACWON'TNAWS
7.致谢
 
 一个基于Xwindow系统的这个选项的更加详细的版本已经由GlennMarcy和作者本人在Carnegie-Mellon大学实现。它在
Carnegie-Mellon大学的计算机系被广泛地使用。Marcy先生帮助撰写了此备忘录的早期版本,记录了更多的选项。

Telnet窗口尺寸选项的更多相关文章

  1. UI: 窗口全屏, 窗口尺寸

    窗口全屏 窗口尺寸 示例1.窗口全屏UI/FullScreen.xaml <Page x:Class="Windows10.UI.FullScreen" xmlns=&quo ...

  2. 背水一战 Windows 10 (3) - UI: 窗口全屏, 窗口尺寸

    [源码下载] 背水一战 Windows 10 (3) - UI: 窗口全屏, 窗口尺寸 作者:webabcd 介绍背水一战 Windows 10 之 UI 窗口全屏 窗口尺寸 示例1.窗口全屏UI/F ...

  3. wap网页、微信内嵌网页在手机端页面窗口尺寸如何不缩放

    如何让wap网页.微信内嵌网页内容(尺寸和文字)在手机端页面窗口尺寸不被强制缩放 在head中加入: <meta http-equiv="Content-Type" cont ...

  4. jquery和js检测浏览器窗口尺寸和分辨率

    jquery和js检测浏览器窗口尺寸和分辨率,转载自网络,记录备忘 <script type="text/javascript">$(document).ready(f ...

  5. TCP窗口扩大选项

    TCP窗口扩大选项(TCP Window Scale Option) TCP窗口扩大选项 TCP Window Scale Option (WSopt) 窗口扩大选项用于扩大TCP通告窗口,使TCP的 ...

  6. TELNET终端类型选项

    转:http://www.cnpaf.net/Class/Telnet/200408/5.html 1. 命令名称及编号TERMINAL-TYPE242.命令含义IACWILLTERMINAL-TYP ...

  7. TCP窗口扩大选项Window Scale

    窗口扩大选项使TCP的窗口定义从16bit增加到32bit.这并不是通过修改TCP首部来实现的,TCP首部仍然使用16bit,而是通过定义一个选项实现对16bit的扩大操作来完成的.于是TCP在内部将 ...

  8. wxWidgets源码分析(7) - 窗口尺寸

    目录 窗口尺寸 概述 窗口Size消息的处理 用户调整Size消息的处理 调整窗口大小 程序调整窗口大小 wxScrolledWindow设置窗口大小 获取TextCtrl控件最合适大小 窗口尺寸 概 ...

  9. 浏览器窗口尺寸相关的 API 整理图

    整理浏览器中和屏幕尺寸相关的 API: 其中和文档相关的属性,例如 innerWidth.innerHeight.event.x.event.y 的单位为 CSS 像素,如果页面存在缩放,则需乘上缩放 ...

随机推荐

  1. Ubuntu下修改NAT模式的IP地址

    1,查看虚拟机的网段 在编辑->虚拟网络编辑器->NAT设置->网关 IP  可以查看到虚拟机的网关 如图 2,图形化设置: 图中 Netmask设置的是255.255.255.0 ...

  2. uoj198【CTSC2016】时空旅行

    传送门:http://uoj.ac/problem/198 [题解] 首先y.z是没有用的.. 然后式子就是w = (x0-xi)^2+ci的最小值,化出来可以变成一个直线的形式. 然后我们可以用线段 ...

  3. bzoj1861 书架 splay版

    单点插入删除以及求前缀 #include<cstdio> #include<cstring> #include<algorithm> using namespace ...

  4. 【洛谷 P1337】[JSOI2004]平衡点 / 吊打XXX (模拟退火)

    题目链接 正解就算了吧,谁叫我理生化 语数外 政史地都菜呢 模拟退火真玄学,不知道发生了什么就跑出答案了,原理就算了吧,能用(pianfen)就好. 当重物平衡时,势能一定是最小的,于是当我随机出一个 ...

  5. 【BZOJ 3907】网格(Catalan数)

    题目链接 这个题推导公式跟\(Catalan\)数是一样的,可得解为\(C_{n+m}^n-C_{n+m}^{n+1}\) 然后套组合数公式\(C_n^m=\frac{n!}{m!(n-m)!}\) ...

  6. python 学习笔记 aiohttp

    asyncio可以实现单进程并发IO操作,如果仅用在客户端,发挥的威力并不大,如果把asyncio用在服务器端,由于http链接就是IO操作, 因此可以用单线程+coroutine实现多客户的高并发支 ...

  7. Linux下文件的三个时间意义及用法

    Linux下文件的三个时间参数: (1)modification time(mtime):内容修改时间        这里的修改时间指的是文件的内容发生变化,而更新的时间. (2)change tim ...

  8. [ 总结 ] vsftpd 虚拟用户配置

    需求:在不更改目录权限的前提下,ftp用户对目录里的文件拥有所有权. [root@server2 ~]# yum install vsftpd -y [root@server2 ~]# cd /etc ...

  9. js实现的联想输入

    以前也写过一个jQuery的这种插件,但是很多地方根本不用jQuery,这个功能也有很多其它库支持,但是为了用这个功能而加载很多js插件,这样效率明显下降了很多,而且这个东西平时也很常用,所以一决心自 ...

  10. 经常用到的Eclipse快捷键(更新中....)

    alt+shift+s:弹出Source选项,用于生成get,set等方法. Ctrl+E:快速显示当前Editer的下拉列表 alt+shift+r:重命名 Ctrl+Shift+→/Ctrl+Sh ...