ORACLE 协议分析 1 TNS 介绍 TNS 协议是ORACLE 服务端和客户端通讯的协议
TNS 协议传输可以使用TCP/IP协议、使用SSL 的TCP/IP 协议、命名管道和IPC 协议传输,其中 TCP/IP 协议传输是使用明文传送
这里我们只分析基于 TCP/IP 协议上的TNS 数据
ORACLE 网络通讯协议TNS 有许多版本,并且大部分向下兼容,我们主要 oracle 9
0 客户和服务间的传输协议,他的协议版本号为 312,其兼容到 300
TNS 协议有一个通用的头,通用头包含一个请求数据类型
不同的服务请求和数据传输使用不同的请求数据类型
对于通常意义的查询操作一般使用数据类型,当出现错误或其他情况时可能使用其他类型
在分析过程中发现以下类型数据: 查询语句出错会用标记(marker)类型 客户端向服务器请求失败(如不存在的服务ID),服务器会发送拒绝(refu se)类型 客户机登陆会发送连接类型,而服务器返回一个重定向类型数据 当重定向端口连接完成后客户端重现发送连接类型数据,服务器返回接受类型数据,然后能够正常通讯
2 TNS 数据格式 TNS 数据包含一个通用的包头,这个包头包含包校验,包长度和包类型等信息
不同的类型的数据实现不同功能的数据传输
Common Packet Header 8 通用包头 Data 可变 数据 2
1 通用包头格式 每个 TNS 完整数据都包含一个通用包头,他说明接受数据的长度及其相关校验和解析的信息
Length 2 包的长度,包括通用包头 Packet check su m 2 包的校验和 Ty pe 1 TNS 类型 Flag 1 状态 Header check sum 2 通用头的校验和 注: Length:包长度(包括包头) Type: 数据包的类型 类型号 类