Telnet连接之间的选项协商

Telnet基于TCP传输协议,运行在应用层.提供了客户至服务器的终端交互功能.

Telnet使用一条TCP连接,不像FTP,使用TCP两个连接. TELNET服务器端使用的PORT号为23.

双方在进行Telnet连接时,要进行选项协商.
比如:使用字符方式 窗口的大小,终端的类型都要进行协商.
而协商是通过TELNET所支持的命令来实现的.

TELNET的常用命令(具体的见TCP/IP详解P303):
SE    240(F0)     子选项结束
SB    250(FA)     子选项开始
IAC   255(FF)     选项协商的第一个字节
WILL  251(FB)     发送方激活选项(接收方同意激活选项)
DO    253(FD)     接收方同意(发送方想让接收方激活选项)
WONT  252(FC)     接收方不同意
DONT  254(FE)     接受方回应WONT

TELNET的常用选项代码(具体的见TCP/IP详解P304):
1(0x01)    回显(echo)
3(0x03)    抑制继续进行(传送一次一个字符方式可以选择这个选项)
24(0x18)   终端类型
31(0x1F)   窗口大小
32(0x20)   终端速率
33(0x21)   远程流量控制
34(0x22)   行方式
36(0x24)   环境变量

比如,建立一条TELNET连接.实际过程是这样的:(192.168.1.11为客户端.192.168.1.1为服务器端)
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)

posted @ 2007-05-29 13:37  shipfi  阅读(5650)  评论(0编辑  收藏