安全检测:瑞星:安全 诺顿:安全 卡巴:安全
毕业设计-基于Linux的Telnet客户端软件(远程控制)设计与实现,共39页,14669字,附完整c语言程序和相关文档
摘要
本系统通过设计一个基于Linux环境的Telnet客户端软件来实现。Telnet协议(Telecommunication network protocol,电信网络协议)是TCP/IP协议族中的一员,工作在应用层,提供了远程登录的功能。所设计的软件的用户界面为Linux环境下的命令行,能够实现基于Linux环境的远程控制,例如,在本地运行服务器端的命令,查看和配置远程系统等;能通过选项协商,使Telnet工作在最佳模式下;能实现远程登录到Linux、Windows等操作系统上。本Telnet客户端主要通过三个有限状态机(Finite state machine,简称FSM)实现Telnet过程,分别为主有限状态机,套接字输出有限状态机,子选项协商有限状态机。该Telnet客户端支持回显方式、二进制发送和操作方式等的选项协商 ,并且支持对终端类型的子选项协商。本系统可用于远程教学和远程维护中。
关键词: Linux;远程登录;远程控制;Telnet;有限状态机
目次
摘要 I
Abstract II
1 绪论 1
1.1 Telnet简介 1
1.2 实现本设计的意义 1
2 问题分析 2
2.1 Telnet协议详解 2
2.1.1 Telnet客户和服务器的典型连接图 2
2.1.2 NVT 3
2.1.3 Telnet命令 3
2.1.4 选项协商 4
2.1.5 子选项协商 6
2.1.6 Telnet的操作方式 6
2.1.7 同步信号 7
2.1.8 客户的转义符 7
2.2 Linux中的终端I/O 7
2.2.1 Linux中的终端I/O介绍 8
2.2.2 控制设备驱动器 9
3 系统总体设计 10
3.1 技术方案 10
3.2 设计考虑 10
3.3 模块划分 10
3.4 系统结构 11
4 数据结构描述 13
4.1 有限状态机 13
4.1.1有限状态机的规约 13
4.1.2 有限状态机的实现 13
4.1.3 压缩的有限状态机表示 14
4.1.4 在运行时压缩的有限状态机的表示 15
4.2 针对来自服务器数据的主有限状态机 15
4.3 套接字输出有限状态机 17
4.4 选项子协商有限状态机 18
5 算法描述及实现 20
5.1 Telnet客户端程序主函数 20
5.2 Telnet客户端程序核心 20
5.3 设置终端 20
5.4 恢复终端设置 21
5.5 主有限状态机的实现 21
5.6 套接字输出有限状态机的实现 21
5.7 子选项协商有限状态机的实现 22
5.8 打印从套接字接收到的单个字符 22
5.9 向服务器发送数据时NVT的实现 22
6 运行及测试 23
6.1 登录到其他Linux系统 23
6.2 登录远程的xp系统 25
6.3 运行无任何协商的服务器端,并登录 26
7 结论 27
致谢 28
参考文献 29
附录 30
附录1 Telnet客户端主程序 30
附录2 Telnet客户端程序核心代码 31
技术方案
1) 在PC机上使用VMware虚拟机建立两个Linux系统和一个xp系统,并组成一个局域网。
2) 使用C语言,调用Linux的系统函数实现Telnet客户端程序。
3) 用设计的Telnet客户端运行在一个Linux系统上,并和另一个Linux系统以及xp系统上的Telnet服务器端进行通信,控制服务器端系统。
4)在Linux环境下实现一个简单的Telnet服务器端程序,测试未进行选项协商时Telnet的工作状态与效果。
设计考虑
1) 在Linux系统环境下实现Telnet客户端程序。
2) 键盘输入的数据和TCP接收到的数据同步处理。
3) 基于NVT (网络虚拟终端)实现Telnet协议。
4) 处理Telnet的选项协商问题。
表3-1文件结构
文件名 目录 简介
main.c mytelnet/ telnet客户端的主函数,管理人机界面
telnet.h mytelnet/ telnet客户端用到的命令的宏定义
connect.h mytelnet/ 提供进行telnet连接的接口
fsm_fuild.h mytelnet/ 提供建立并初始化三个有限状态机的接口
fsm_struct.h mytelnet/ 定义描述三个有限状态机的压缩转移矩阵的符号
common_fsm.h mytelnet/ 提供有限状态机共用函数库的接口
main_fsm.h mytelnet/ 提供主有限状态机函数库的接口
key_fsm.h mytelnet/ 提供套接字输出有限状态机函数库的接口
sub_fsm.h mytelnet/ 提供子选项协商有限状态机函数库的接口
connect.c mytelnet/ telnet连接的具体实现,通过调用TCP套接字实现连接
fsm_fuild.c mytelnet/ 建立并初始化三个有限状态机
fsm_struct.c mytelnet/ 初始化描述三个有限状态机的压缩转移矩阵
common_fsm.c mytelnet/ 有限状态机共用函数库
main_fsm.c mytelnet/ 主有限状态机函数库
key_fsm.c mytelnet/ 套接字输出有限状态机函数库
sub_fsm.c mytelnet/ 子选项协商有限状态机函数库
说明:
该客户端程序使用了自上而下的设计方法,把整个程序分成几个模块。最顶层的模块是main.c文件,其他的所有模块都被该顶层模块直接或间接地调用。telnet.h中包含了其他所有文件都会用到的命令的宏定义,声明远程服务器地址和终端参数结构体的全局变量。
其他的各个c文件都对应一个同名头文件,c文件有变量的定义及函数的实现,头文件用于与其他模块的交互。系统包含控制Telnet连接的模块connet.c和管理三个有限状态机的模块fsm_build.c。系统的主要部分是管理有限状态机的模块,该模块包括通用函数库common_fsm.c、用压缩的转移矩阵描述三个有限状态机的fsm_struct.c、各个有限状态机的函数库。
当需要添加更多的Telnet选项时,只要在对应的有限状态机函数库中添加函数,并修改fsm_struct.c中压缩转移矩阵即可。