Telnet协议分析
来源:互联网 发布:3dmks是什么软件 编辑:程序博客网 时间:2024/05/16 17:47
最近要写一个专门针对华为交换机的Telnet客户端,所以得对Telnet协议有所理解和分析。
前言
传输单位:字节(8bit)。
为了解决异构环境,比如不同OS的通信,采用了NVT(Net Virtural Terminal)的机制。客户端把传输的数据转换成NVT格式在网络上传输,服务器接收到NVT格式的数据转换成可以识别的数据。
Telnet主要传输两部分内容:数据和命令。
数据部分每个字节以0开头的ASCII码。
命令部分以IAC(编码255 0xff interpret as command)开始,最高位是1
协商选项举例:
客户端 发送<IAC DO ECHO>
服务端 回应<IAC WILL ECHO>
包括三个部分,第一部分IAC表示命令行,第二部分协商选项DO(WILL WONT DONT),第三部分操作选项。
附录
1 telnet传输数据的状态
enum _state
{
state_data, //下一个状态为数据
state_code, //下一个状态为命令字
state_option //下一个状态为协商选项
};
2 telnet的命令字
#define NUL 0
#define BEL 7
#define BS 8
#define HT 9
#define LF 10
#define VT 11
#define FF 12
#define CR 13
#define SE 240
#define NOP 241
#define DM 242
#define BRK 243
#define IP 244
#define AO 245
#define AYT 246
#define EC 247
#define EL 248
#define GA 249
#define SB 250
#define WILL 251
#define WONT 252
#define DO 253
#define DONT 254
#define IAC 255
其中SB表示子选项开始,WILL WONT DO DONT是协商选项
TELNET 选项协商的六种情况
发送者
接收者
说明
WILL
DO
发送者想激活某选项,接受者接收该选项请求
WILL
DONT
发送者想激活某选项,接受者拒绝该选项请求
DO
WILL
发送者希望接收者激活某选项,接受者接受该请求
DO
DONT
发送者希望接收6者激活某选项,接受者拒绝该请求
WONT
DONT
发送者希望使某选项无效,接受者必须接受该请求
DONT
WONT
发送者希望对方使某选项无效,接受者必须接受该请求
3 操作选项
enum _option
{
TOPT_BIN = 0, // Binary Transmission
TOPT_ECHO = 1, // Echo
TOPT_RECN = 2, // Reconnection
TOPT_SUPP = 3, // Suppress Go Ahead
TOPT_APRX = 4, // Approx Message Size Negotiation
TOPT_STAT = 5, // Status
TOPT_TIM = 6, // Timing Mark
TOPT_REM = 7, // Remote Controlled Trans and Echo
TOPT_OLW = 8, // Output Line Width
TOPT_OPS = 9, // Output Page Size
TOPT_OCRD = 10, // Output Carriage-Return Disposition
TOPT_OHT = 11, // Output Horizontal Tabstops
TOPT_OHTD = 12, // Output Horizontal Tab Disposition
TOPT_OFD = 13, // Output Formfeed Disposition
TOPT_OVT = 14, // Output Vertical Tabstops
TOPT_OVTD = 15, // Output Vertical Tab Disposition
TOPT_OLD = 16, // Output Linefeed Disposition
TOPT_EXT = 17, // Extended ASCII
TOPT_LOGO = 18, // Logout
TOPT_BYTE = 19, // Byte Macro
TOPT_DATA = 20, // Data Entry Terminal
TOPT_SUP = 21, // SUPDUP
TOPT_SUPO = 22, // SUPDUP Output
TOPT_SNDL = 23, // Send Location
TOPT_TERM = 24, // Terminal Type
TOPT_EOR = 25, // End of Record
TOPT_TACACS = 26, // TACACS User Identification
TOPT_OM = 27, // Output Marking
TOPT_TLN = 28, // Terminal Location Number
TOPT_3270 = 29, // Telnet 3270 Regime
TOPT_X3 = 30, // X.3 PAD
TOPT_NAWS = 31, // Negotiate About Window Size
TOPT_TS = 32, // Terminal Speed
TOPT_RFC = 33, // Remote Flow Control
TOPT_LINE = 34, // Linemode
TOPT_XDL = 35, // X Display Location
TOPT_ENVIR = 36,// Telnet Environment Option
TOPT_AUTH = 37, // Telnet Authentication Option
TOPT_NENVIR = 39,// Telnet Environment Option
TOPT_EXTOP = 255, // Extended-Options-List
TOPT_ERROR = 256 // Magic number
};
传输命令举例
RFC 1091定义了终端类型的子选项协商。举个例子:
客户发送字节序列来请求打开选项:
< IAC,WILL,24>
24是终端类型的选项标识符。如果服务器同意该请求,响应为:
< IAC,DO,24 >
接着服务器发送
< IAC,SB,24,1,IAC,SE>请求客户给出其终端类型。
SB是子选项开始命令,下一个字节24表示该子选项为终端类型选项。下一个字节1表示:发送你的终端类型。客户的响应为:
< IAC,SB,24,0,'I','B','M','P','C', IAC,SE>
第四个字节0的含义是“我的终端类型为”。
- Telnet协议分析
- telnet 协议过程分析
- VC++分析数据包实现Telnet协议分析
- telnet协议远程登录的全面分析
- telnet协议
- Telnet协议
- Telnet协议
- TELNET协议
- telnet协议
- telnet 协议
- 实战利用WireShark对Telnet协议进行抓包分析
- TELNET 协议规范(转)
- TELNET协议规范
- TELNET协议规范
- Telnet协议概述
- TELNET协议规范
- TELNET协议规范
- 关于telnet协议还原
- 网页上直接选择本地文件夹上传
- nmap参数(二)
- LIBSVM学习记录
- 推荐一个学习OpenGL的网站
- nmap参数(三)
- Telnet协议分析
- 18种典型算法
- frame和bounds的区别比较
- C++笔试题(1)
- 海康威视2014校园招聘C++笔试题
- 1000BASE-T和1000BASE-TX的区别
- Netflix公布个性化和推荐系统架构
- 《UNIX环境高级编程》笔记--exec系列函数
- 南大奥拓笔试