网络编程之Telnet简单远程登录协议

这里不讲解telnet协议的实现原理,主要用于学习telnet实际的编写方式。
使用的网络协议:tcp/ip telnet协议
编程语言:C/C++
库:socket套接字
基于Windows的telnet客户端源码:http://download。csdn。net/download/aaron133/10259942

了解telnet协议

一个简单的远程登录协议

  • 用于远程连接目标计算机,使用目标计算机的cmd命令行实现远程操作。
  • 登录目标计算机时,必须提供计算机的用户名和密码凭证,才能成功登录。

telnet协议的基础

  • telnet的默认端口号:23

客户端与服务器通讯步骤:

  1. 客户端连接服务器。

  2. 客户端等待接收服务器发来的一组telnet命令。

  3. 客户端解析命令,以服务器要求特性(其实就是一个命令中的第三个字节),以相同的方式,以接受要求的命令(修改第二个字节),发回给服务器。

  4. 服务器接收到以后,发送普通字符串(欢迎和一个login:),表示要你输入计算机的用户名凭证。

  5. 客户端发送用户名后,再发送LFCR( ),表示准备输入密码。

  6. 服务器接收到以后,发送普通字符串(password:),表示要你输入计算机的用户密码凭证。

  7. 客户端发送密码后,再发送LFCR( ),表示输入完成。

  8. 服务器接收到以后,发送普通字符串

    1. 验证凭证成功:类似cmd命令行一样的字符串,例子:C:UserAaron>
    2. 验证凭证失败:句柄无效。Login Failed
    3. 连续输入错误,默认情况下只能输错3次,3次以后服务器主动断开与客户端的连接。
  9. 验证凭证成功,客户端就像操作自己的cmd命令行一样,可以远程操作目标。

  10. 每输入一个字符,发送到服务器,服务器响应一个与发送字符相同的字符,表示你输入了什么。

  11. 发送LFCR( ),表示执行这一段cmd命令,服务器就会响应cmd命令行执行完毕后,信息的反馈。

  12. 关闭客户端,结束。


telnet协议的应用层命令

由于不同的系统,底层实现的不同,要做到兼容所有计算机,而使用了NVT命令作为一个公共语言进行交流。

一条telnet命令的格式:

telnet命令

重要的telnet命令

IAC

每一条telnet NVT命令的第一个字节叫做IAC,十进制值为255。

一条telnet命令的格式:IAC 命令 选项码 共3个字节

telnet命令

十进制表示

作用

EOF

236

文件结束符

SUSP

237

挂起当前进程

ABORT

238

异常中止进程

EOR

239

记录结束符

SE

240

自选项结束

NOP

241

无操作

DM

242

数据标记

BRK

243

中断

IP

244

中断进程

AO

245

异常中止输出

AYT

246

对方是否还在运行?

EC

247

转义字符

EL

248

删除行

GA

249

继续进行

SB

250(0xFA)

子选项开始

WILL

251(0xFB)

同意启动(enable)选项

WONT

252(0xFC)

拒绝启动选项

DO

253(0xFD)

认可选项请求

DONT

254(0xFE)

拒绝选项请求

协议协商:

备注

命令中包含相同的选项值,表示可同意激活不同意激活的选项,或自身表示愿意激活不激活

注意:下面的发送方不止代表服务端,也代表客户端。

协商命令

发送方

接收方回应

WILL

发送方本身想要激活此选项

DO:同意你激活、DONT:不同意你激活

DO

发送方想叫接收端激活此选项

WILL:我愿意激活、WONT:我不愿意激活

WONT

发送方本身想禁止此选项

DONT:同意你禁止(必须)

DONT

发送方想让接收端去禁止选项

WONT:愿意禁止(必须)

选项码:

十进制

作用

1

回显

3

抑制继续进行(禁止继续进行)

5

状态

6

定时标记(闹钟标记)

24

终端类型

31

窗口大小

32

终端速度

33

远程流量控制

34

行方式

36

环境变量

编写telnet客户端程序:

由于代码过多,不好在这里直接贴出来,我为使用telnet协议写了一个C++类,可以很简单的使用登录目标计算机,远程操作,想要学习登录过程,解析Telnet命令的处理,可以下载学习一下:

这里写图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值