以前经常用Telnet去水木,一直以为Telnet是一个字一个字的发送,估计协议挺复杂。嗯,现在也没有认真看看相关的RFC,所以Telnet的协议我还是不甚了解,但是最近写程序时被高人指点用Telnet测一下,发现Telnet居然如此便利和简单。
其实Telnet除了逐字发送之外,还有逐行发送的方式。其实这个无所谓,因为TCP协议的设计在思想上是想实现一种流的模型,让用户把数据当成流使用,而不是一个报文一个报文地处理,特别是对于比较高级的语言如Java和Ruby来说,这一点特别明显。要说区别还是有,如果逐字发送,那么Telnet客户端用户输入的更正,比如退格什么的,就必须由服务端自己处理;如果逐行发送,Linux下的telnet程序是客户端自己处理的,而Win32自带的telnet客户端仍是最后一起发送给服务器端处理(不过好像是可以设置的)。
Telnet客户端希望在成功连接到服务器端口是,服务器应先发送一些连接成功之类的文本给客户端。特别是Win32自带的telnet,如果连接之后服务器不发信息,客户端的用户输入的回显就不会打开,不管你输入什么都看不见(这一点也是可以设置的)。
Telnet协议设计的一个中心思想服务器端要彻底模拟一个本地的term,尽管很有可能服务器端连接的远程term和本地二者平台的规范存在差异;也就是说一个远程的term,无论它是什么平台,他发给服务器端的任何内容,都会被服务器端转换成服务器端所在平台的规范。要实现这一点,就要求客户端将用户输入转换为Telnet的规范,服务器端将遵从Telnet规范的
Telnet客户端希望在成功连接到服务器端口是,服务器应先发送一些连接成功之类的文本给客户端。特别是Win32自带的telnet,如果连接之后服务器不发信息,客户端的用户输入的回显就不会打开,不管你输入什么都看不见(这一点也是可以设置的)。
Telnet协议设计的一个中心思想服务器端要彻底模拟一个本地的term,尽管很有可能服务器端连接的远程term和本地二者平台的规范存在差异;也就是说一个远程的term,无论它是什么平台,他发给服务器端的任何内容,都会被服务器端转换成服务器端所在平台的规范。要实现这一点,就要求客户端将用户输入转换为Telnet的规范,服务器端将遵从Telnet规范的