2012年7月6日星期五

如何使用W7100A實現Telnet伺服器(一)


这篇文档将会介绍Telnet以及使用iMCU7100EVB来实现Telnet服务器。除了连接到iMCU。用户可以用Telnet来控制LEDs。在第二章我们简单地介绍一下Telnet,第三章将会演示Telnet函数的具体功能,第四章将涉及到代码的分析。这篇文档中所有的示例代码都是基于Keil uVision3。


1.这里我们先分享前面部分,希望对大家有所帮助。


2. Telnet
Telnet是用于因特网或者局域网的网络协议,它可以为设备间提供一个双向的交互式通信。Telnet起源于RFC15,于1969年发展起来,随后开始标准化。带有TCP/IP协议栈的网络设备基本都支持Telnet服务。Telnet是一个广泛用于客户端/服务器的应用程序。
由于越来越多具有便捷功能浏览器的出现,Telnet的重要性逐渐降低。但是telnet对于众多用于远程连接的多用户电脑来说,仍然是一个很重要的工具;用户可以从住处、工作地点或者任何地方通过因特网连接到telent服务器。


图 2.1Telnet系统

2.1 NVT (网络虚拟终端)
对于用户来说,远程连接Telnet服务器的过程比较复杂。由于电脑将接收的特殊字符组合作为一个标记;同时根据OS的不同,这个特殊字符的组合也会不同,因此Telnet定义了一个NVT来解决这个问题。通过使用NVT,Telnet客户端将本地终端输入的字符组合转换成NVT格式,然后发送到网络。Telnet服务器将接收到的NVT格式字符转换成远程电脑可以接收和读取的格式。这个过程如下图2.2所示。


图2.2Telnet系统的NVT

NVT使用了两类字符组合;一个是用于数据,另外一个是用于远程控制。
用于数据的NVT通常使用NVT ASCII。NVT ASCII是一个8位的字符组合;较低7位与美国的ASCII相同,最高位为0。当最高位是1时,必须提前定义并在Telnet客户端和服务器之间的进行协商。
用于远程控制的NVT利用一个最高位置为1的8位控制字符。当发送用于进入特殊键的远程控制字符,设置连接和改变状态之前,先发送使用TCP的IAC(中断命令,值为0xFF)。因此,在IAC字符后接收到的字节会被看作远程控制字符。

表2.1NVT控制字符



控制字符
释义
EOF
236
文档结束
EOR
239
记录结束
SE
240
次选项结束
NOP
241
无操作
Data Mark
242
同步信道的数据流部分。这个应该带有一个TCP紧急通知。
Break
243
NVT 字符BRK
Interrupt Process
244
暂停,中断,终止或者结束与NVT连接的进程。同时,用于TELNET的其它协议的的部分外频信号都可能发生中断进程。
Abort output
245
允许当前的进程(出现)运行完成,但是不发送给用户它的输出。同时,向用户发送同步信道。
Are You There
246
回送给NVT一些可见的(例如:可打印的) 证据证明AYT接收到
Erase character
247
接收端应该从数据流中删除上一个之前未删除字符或者“打印位置”。
Erase Line
248
接收端一个删除数据流回送来的字符,但是不包括,上一个通过TELNET连接发送来的“CR LF”序列。
Go ahead
249
GA信号
SB
250表示接下来的是指示选项的次协商。
WILL
251表示开始执行的目的,或者确认你正在执行,指示选项。
WONT
252表示拒绝执行,或者继续执行,指示选项。
DO
253表示其它部分执行的请求或者确认你希望其它部分执行,指示选项。
DON’T
254表示要求其它部分停止执行,或者确认你不再希望其它部分执行,指示选项。
IAC
255中断命令。

2.2 用于Telnet终端的选项
正如之前提到的,客户端和服务器之间的选项能够在使用Telnet服务时进行协商。下表中显示了一些通用选项。
表2.2telent选项
选项ID
名称
备注
1
回显(Echo)
RFC857
3
抑制前进(Suppress go ahead)
RFC858
5
状态(Status)
RFC859
6
时序标记(Timing mark)
RFC860
24
终端类型(Terminal type)
RFC1091
31
窗口大小(Window size)
RFC1073
32
终端速度(Terminal speed)
RFC1079
33
远程流控制(Remote flow control)
RFC1372
34
行模式(Line mode))
RFC1184
36
环境变量(Environment variables)
RFC1408

在使用Telnet选项时必须用到客户端和服务器之间的协商选项。如表2.1所示,4个控制字符(WILL、WONT、DO以及DONT)用于选项协商。
为了能够激活选项,发送端发送WILL命令,询问“可以激活该选项吗?”然后,接收端将会发送DO命令,表示接受,或者DONT命令,表示拒绝。另外一种激活选项的方法是发送DO命令,表示“激活该选项”,并且接收端回送WILL命令或者WONT命令。
使选项无效的过程如下。发送端发送WONT命令,表示“不再使用该选项”。然后,接收端将会回送DO命令接受或者DONT命令拒绝。

图2.3telnet选项协商

2.3 Telnet操作模式
大多数Telnet的操作执行有三种模式:普通模式(General mode)、字符模式(Character mode),以及行模式(Line mode)。
-普通模式(General mode):这是选项协商在不选择字符或者行模式时最基本的模式。在这种模式下,回送所有的输入字符,直到一行完成才发送。
在向服务器发送完所有的行后,客户端等待GA命令直到一个新的行被接受。如果TCP连接是全双工的, 那么这种模式就是无效的,因为一般的Telnet工作于半双工模式。
-字符模式(Character mode): 当客户端输入字符时,每一个字符都被发送给服务器。服务器允许回送字符显示在客户端的屏幕上。在这种模式下,当回送字符的传输太慢时,可能会发生一些延时;此时,将会增加网络的负荷。
-行模式(Line mode): 一般情况下,建议使用行模式(Line mode),它可以覆盖普通模式(General mode)和字符模式(Character mode)的缺点。在这种模式下,用户的行编辑(回送,删除字符,删除行等等)都是可以的。在行被编辑完成后,发送给服务器。行模式以全双工模式执行,并且所有行可以不需要GA命令即被发送。

好了,这就是我们今天的内容,后续部分我们将尽快发布,谢谢关注。



如果您有任何疑问,请直接留言或登录WIZ net官方网站:http://www.wiznettechnology.cn/
或者来电:86-10-84539974(转166),QQ:2377211388,
邮箱:wiznetbj@wiznettechnology.com 联系人:Jerry ,谢谢!

没有评论:

发表评论