ORACLE数据库-TNS协议分析详解

发布时间 : 星期三 文章ORACLE数据库-TNS协议分析详解更新完毕开始阅读

Magic

121

2.8.11 0x03 0x51 Set password

当用户使用GRANT更改密码时,客户先通过0x0352发送用户信息,然后通过0x0351发送密码信息。

Request id Magic1

User name length Magic2 Username

1 4 1 99 User name length

Session key Host info

32 可变

用户名长度

2.8.12 0x03 0x52 Set user

当用户使用GRANT更改密码时,客户先通过0x0352发送用户信息,然后通过0x0351发送密码信息。

Request id Magic1

User name length Magic2 Username

1 4 1 99 User name length

Host info

可变

用户名长度

2.8.13 0x03 0x5E SQL

一般的SQL查询语句是封装在0x035e命令结构中,用该命令请求数据时,服务器

返回数据和确认命令数据。

? 如果查询命令错误,则返回错误代码和错误消息。 ? 如果查询正常,服务器返回执行结果数据和确认命令。 它的结构如下:

Request id Magic1 Data Format Magic3

1 80 48

返回列数 总是为0x07

可变 SQL查询语句

2.8.14 0x03 0x73 AUTH2

用户登录过程发送用户密码和用户信息,包括用户名,终端名称,客户端程序,机器,客户端进程号。

2.8.15 0x03 0x76 AUTH1

用户登录过程发送用户相关信息,包括用户名,会话密钥,终端名称,客户端程序,机器,客户端进程号和对服务器一些设置(语言,时区等)。

2.8.16 0x03 0x77 desc table

当用户通过DESC TABLE tablename命令查询用户表属性信息时,客户端发送0x0377命令到ORACLE服务器。

Request id Magic1

Table name length Magic2 Data Format

1 4 1 16

返回列数 表名长度

可变 SQL查询语句

2.8.17 0x04 0x01 ACK

各种数据库操作会通过0x04命令来返回结果,如是否正常运行,影响行数,影响的表格,操作类型等,如果错误还要返回错误消息,以下0x0402,0x0405均为数据库查询

返回,但是还不知道什么情况适用这三种应答。

数据应答报结构如下: Magic1 Record num Error num Magic2 Type Magic3 Obj Id Magic4 Ack id Magic5 Msg length Msg

4 4 2 8 1 2 2 19 1 46 1 Msg length

记录数,该操作影响记录数 返回错误代码

操作类型(如select,insert,create等)

操作对象ID,如表的对象ID

确认号(为该请求号+1)

消息长度 消息

2.8.18 0x04 0x02 ACK

同0x0401

2.8.19 0x04 0x05 ACK

同0x0401

2.8.20 0x06 0x00 行结果信息

如果0x06 01命令传送数据未完成则后续数据用0x06 00命令传输,且每行只传输和前一行不同的列。

行结果数据结构信息

Magic1 Column Num Magic2

Column distributing Magic3

2 2 23 1

返回列数

总是为0x07

可变 等于[Column Num/8]

Row Data Row Split Row Data Row Split … Row Data

行数据(Row Data)结构信息

Data Format Data Format …

Data Format

注:

? 对于第一行列数为Column Num

可变 可变 可变 可变 …

可变 可变 列数据 可变 列数据 …

可变 列数据

? 非第一行,每行列数和列分布信息根据行分隔结构获取 ?

行分隔结构信息

Id

Column Num Column distributing Magic3

注:

? Column distributing 为该行列分布信息,如果第i列不为空,则Column

distributing的第I bit为1 ?

1 2 1

总是0x15 返回列数 总是为0x07

可变 等于[Column Num/8]

2.8.21 0x06 0x01开始行结果信息

SQL查询语句返回结果主要包括字段信息和数据,其中字段数据用0x1019传输,数据有0x0601和0x0600传输。

对于0x0601命令只返回开始几行数据(一般为一行),第一行显示所有的列,以后每行传输和前一行不同的列,即如果和前一行数据相同,则不传送数据,如果多行的某一列都相同,则只传送最开始一行的该列数据。

Magic1 Column Num Magic2

Column distributing Magic3

2 2 23 1 1

返回列数

总是为0x00 总是为0x07

联系合同范文客服:xxxxx#qq.com(#替换为@)