[转]telnet协议内容提取
来源:互联网 发布:java asset的用法 编辑:程序博客网 时间:2024/06/06 02:35
选项协商是Telnet协议最复杂的部分,总共有39个选项用于配置本地和远程主机间的工作模式。当一方要执行某个选项时需向另一端发出请求,若对方接受该选项,则选项在两端同时起作用,否则两端保持原来的模式。Telnet的命令格式如表2.1、表2.2所示。IAC是Telnet协议中的保留码,双方用IAC确定收到的字节是数据还是命令,Telnet协议的命令是至少包含两个字符(IAC和命令码)的字节序列,选项协商则有3个字节,第三个字节为协商的选项。当协商的选项存在子选项时,要进行子选项协商,命令格式如表2.2所示。
表2.1 Telnet选项协商命令格式
IAC
命令码
选项码
表2.2 Telnet子选项协商命令格式
IAC
SB
选项码
参数
IAC
SE
算法思想是将子选项协商和选项协商的内容剔除掉,剩下的内容便是传输的内容。具体的实现算法为取存储数组text的第i个字符,i的初始值为0,先判断text【i】是否为‘/0’,如果为‘/0’则将提取的内容拿去检测,如果不是则判断是否为IAC,如果不是IAC则将此字符存储起来,如果是则判断下一个字符是否为SB,如果为SB即开始子选项协商,需要不断的循环查找IAC和SE字符串,直到找到退出查找,如果不是SB则判断是否为WILL、WONT、DO或DONT,如果不是则存储此字符,如果是则丢弃下一个字符,因为下一个字符将是协商内容的字符,这样便可以完成telnet协议分析和内容的提取。
Telnet基于TCP传输协议,运行在应用层.提供了客户至服务器的终端交互功能. Telnet使用一条TCP连接,不像FTP,使用TCP两个连接. TELNET服务器端使用的PORT号为23. 双方在进行Telnet连接时,要进行选项协商. TELNET的常用命令(具体的见TCP/IP详解P303): TELNET的常用选项代码(具体的见TCP/IP详解P304): 比如,建立一条TELNET连接.实际过程是这样的:(192.168.1.11为客户端.192.168.1.1为服务器端) http://blogold.chinaunix.net/u1/39518/showart_2466512.htmlTelnet连接之间的选项协商
比如:使用字符方式 窗口的大小,终端的类型都要进行协商.
而协商是通过TELNET所支持的命令来实现的.
SE 240(F0) 子选项结束
SB 250(FA) 子选项开始
IAC 255(FF) 选项协商的第一个字节
WILL 251(FB) 发送方激活选项(接收方同意激活选项)
DO 253(FD) 接收方同意(发送方想让接收方激活选项)
WONT 252(FC) 接收方不同意
DONT 254(FE) 接受方回应WONT
1(0x01) 回显(echo)
3(0x03) 抑制继续进行(传送一次一个字符方式可以选择这个选项)
24(0x18) 终端类型
31(0x1F) 窗口大小
32(0x20) 终端速率
33(0x21) 远程流量控制
34(0x22) 行方式
36(0x24) 环境变量
1) TCP: 192.168.1.11:49200 > 192.168.1.1:23 [SYN]
2) TCP: 192.168.1.1:23 > 192.168.1.11:49200 [SYN,ACK]
3) TCP: 192.168.1.11:49200 > 192.168.1.1:23 [ACK]
4) TELNET: 23 > 49200 IAC DO 24 ( 表示让接收方激活终端类型动 Command: Do Terminal Type)
5) TELNET: 49200 > 23 IAC WILL 24 / IAC WILL 31 (两条命令IAC WILL 24 IAC WILL 31 分别表示Command:Will Terminal Type / Command Will Negotiate About Window Size)告诉服务器同意终端类型,并且激活窗口大小.
6) TELNET: 23 > 49200 IAC DO 31 / IAC SB 18 24 01 / IAC SE (回应客户端允许协商窗口大小 / 子选项 Send your Terminal Type / 子选项结束)
7) TELNET: 49200 >23 IAC SB 31 80 26 / IAC SE ( 回应服务器,子选项 窗口大小为80/26 / 子选项结束)
8) TELNET: 49200 >23 IAC SB 18 "ANSI" / IAC SE (回应服务器,子选项 窗口类型为ANSI字符型 / 子选项结束)
9) TELNET: 23 > 49200 IAC WILL 03 / IAC WILL 01 (告知客户端 允许抑制继续进行 / 允许回显)
10) TELNET: 49200 >23 IAC DO 03 (回应服务器,接受方同意允许抑制继续进行)
11) TELNET: 49200 >23 IAC DO 01 (回应服务器,接受方同意允许回显)
12) TELNET: Data: ... (此时就开始正式传送数据,这些数据会回显到终端屏幕上)
13) TELNET: Data: ... (此时就开始正式传送数据,这些数据会回显到终端屏幕上)
14) TELNET: Data: ... (此时就开始正式传送数据,这些数据会回显到终端屏幕上)
15) TCP: 192.168.1.11:49200 > 192.168.1.1:23 [FIN ACK] (请求断开连接)
16) TCP: 192.168.1.1:23 > 192.168.1.11:49200 [ACK]
17) TCP: 192.168.1.1:23 > 192.168.1.11:49200 [FIN ACK] (请求断开连接)
18) TCP: 192.168.1.11:49200 > 192.168.1.1:23 [ACK]
....这里一些子选项协议就略过了.一般的,一般登录到主机,还要双方对某些选项进行协商.并且接收方表示同意或不同意(DO,DONT或者WILL WONT)
- [转]telnet协议内容提取
- telnet协议内容提取
- TELNET 协议规范(转)
- Telnet协议详解 (转)
- telnet协议
- Telnet协议
- Telnet协议
- TELNET协议
- telnet协议
- telnet 协议
- Telnet协议详解及使用C# 用Socket 编程来实现Telnet协议【转】
- TELNET协议规范
- TELNET协议规范
- Telnet协议概述
- TELNET协议规范
- TELNET协议规范
- 关于telnet协议还原
- Telnet演示Http协议
- Tip: Windows Phone 7 - Theme
- ADO连接access和oracle的一个区别
- qemu skyeye 仿真
- UIActionSheet配合UIPickerView的demo
- ural 1084. Goat in the Garden
- [转]telnet协议内容提取
- Windows Phone 7自动登录功能的实现方法
- RAS - Reusable Assert Specification (www.omg.org-spec-RAS-05-11-02.pdf)
- J2SE学习笔记3 — Java基本语法(4)类型转换
- javascript
- php中mysql_affected_rows()返回-1带来的“陷阱”
- 主线程退出,不代表进程会终止
- keil C51的Memory Model 说明[三种Model的选择对编译的影响]
- 2010年度总结和2011年度计划(迟来的)