如何使用W7100A实现Telnet服务器(一)

Home / 博客 / 如何使用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命令即被发送。

 

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