Oracle TNS协议中数据包的内部结构

本文解析了Oracle网络协议中TNS数据包的结构及处理流程。重点介绍了数据包类型6的数据标志位设置问题,以及特定条件下服务器可能出现的性能问题。此外还详细解释了数据包内容标识符的不同含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在线路上看到的包绝大多数是数据包(类型6)。对数据包而言,TNS包头后面的一个字(WORD)用来存储数据标志位(data flag)。如果这个包是一个断开连接包,那么这个字(WORD)被设为0x0040--否则,一般设为0x0000。 注意: 所有的Oracle版本中都存在一个故障(bug):在服务器处理一个数据包(类型6)的时候,该数据包的数据标志位的第2个比特已被设置,但第1个(最不重要的)比特没有被设置(例如,数字2,6,10,14等)。如果服务器受到这样的包,它就会花费点所有可利用的CPU处理时间,以一个死循环而告终。很明显,这对服务器性能会产生消极的影响。 数据标志位后面的一个字节(第11个字节)决定了数据包里的内容: 0x01表示协议商议。这里,客户机降可以接受的协议版本发送给服务器--他们是6,5,4,3,2,1和0.服务器回复一个通用的版本(例如,6或5),不过它还会发送一些额外的信息,如它使用的字符集,这个集合共有多少个字符,版本字符串和服务器标志。 0x02表示交换数据类型表示法。 0x03表示一次双任务接口(Two-Task Interface,TTI)函数调用。下面的表列出了一些函数: 0x02



本文转自maclean_007 51CTO博客,原文链接:http://blog.51cto.com/maclean/1276826

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值