网络编程之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(\r\n),表示准备输入密码。
  6. 服务器接收到以后,发送普通字符串(password:),表示要你输入计算机的用户密码凭证。
  7. 客户端发送密码后,再发送LFCR(\r\n),表示输入完成。

  8. 服务器接收到以后,发送普通字符串
    1) 验证凭证成功:类似cmd命令行一样的字符串,例子:C:\User\Aaron>
    2) 验证凭证失败:句柄无效。Login Failed
    3) 连续输入错误,默认情况下只能输错3次,3次以后服务器主动断开与客户端的连接。

  9. 验证凭证成功,客户端就像操作自己的cmd命令行一样,可以远程操作目标。

  10. 每输入一个字符,发送到服务器,服务器响应一个与发送字符相同的字符,表示你输入了什么。
  11. 发送LFCR(\r\n),表示执行这一段cmd命令,服务器就会响应cmd命令行执行完毕后,信息的反馈。
  12. 关闭客户端,结束。

telnet协议的应用层命令

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

一条telnet命令的格式:

telnet命令重要的telnet命令
IAC每一条telnet NVT命令的第一个字节叫做IAC,十进制值为255。
一条telnet命令的格式:IAC 命令 选项码 共3个字节
telnet命令十进制表示作用
EOF236文件结束符
SUSP237挂起当前进程
ABORT238异常中止进程
EOR239记录结束符
SE240自选项结束
NOP241无操作
DM242数据标记
BRK243中断
IP244中断进程
AO245异常中止输出
AYT246对方是否还在运行?
EC247转义字符
EL248删除行
GA249继续进行
SB250(0xFA)子选项开始
WILL251(0xFB)同意启动(enable)选项
WONT252(0xFC)拒绝启动选项
DO253(0xFD)认可选项请求
DONT254(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
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值