最近在研究Oracle下的TNS协议,需要对每个数据包进行详细的分析。但是一直找不到好的资料,希望各位大侠多多赐教呀

解决方案 »

  1.   

     TNS (Transparance   Network   Substrate,透明网络底层)协议是ORACLE服务端和客户端通讯的协议。TNS协议传输可以使用TCP/IP协议、使用SSL (Secure Sockets Layer)的TCP/IP协议、命名管道和IPC协议传输,其中TCP/IP协议传输是使用明文传送。这里我们只分析基于TCP/IP协议上的TNS数据。      TNS协议有一个通用的头,通用头包含一个请求数据类型。不同的服务请求和数据传输使用不同的请求数据类型。对于通常意义的查询操作一般使用数据类型,当出现错误或其他情况时可能使用其他类型。在分析过程中发现以下类型数据:    查询语句出错会用标记(er)类型    客户端向服务器请求失败(如不存在的服务ID),服务器会发送拒绝(refuse)类型    客户机登陆会发送连接类型,而服务器返回一个重定向类型数据     当重定向端口连接完成后客户端重现发送连接类型数据,服务器返回接受类型数据,然后能够正常通讯. TNS数据包含一个通用的包头,有通用包头、连接包、接受包、拒绝包、重定向包、标记包、控制包(没有该结构)、数据包等八种包。客户端对数据库的操作主要是通过数据包来完成,数据包有一个2字节的状态包和多个命令包组成,命令有主命令和次命令,所有对数据库的操作都是通过主命令和子命令的组合来完成的。(而且现在已知的主命令19条)。TNS协议中数据传输主要用一个标志和长度字符来传输数据,具体采用两种数据结构。
      

  2.   

    恩,我想知道的是更详细的信息。比如,TNS认证过程需要传输40多个数据包,其中一些包是什么作用我还不清楚
      

  3.   

    data部分看不太懂啊,楼上几位分析的怎么样了,有什么进展发篇技术文档来看看
      

  4.   

    data部分看不太懂啊,楼上几位分析的怎么样了,现在有解析出来的吗 我目前正在解析可惜 找不到data部分的偏移量 有知道的请指点下 谢谢了