如何使用W7100A实现Telnet服务器(一)
0赞这篇文档将会介绍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 ,谢谢!