数据包(tds)通讯结构

数据包(tds)通讯结构

ID:23468483

大小:91.00 KB

页数:13页

时间:2018-11-08

数据包(tds)通讯结构_第1页
数据包(tds)通讯结构_第2页
数据包(tds)通讯结构_第3页
数据包(tds)通讯结构_第4页
数据包(tds)通讯结构_第5页
资源描述:

《数据包(tds)通讯结构》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、数据包(tds)通讯结构:首先我们分析一下sql通讯的具体构架:这就是客户端进行连接的过程:当客户端连接到服务器时,应用程序请求连接远端计算机,Dbnetlib.dll将打开到连接中所指定的计算机网络名上的TCP端口1433的连接。所有运行SQL服务器2000的计算机都监听此端口。当一个客户端Dbnetlib.dll连接到该端口时,服务器将返回一个监听服务器上运行的所有实例的数据包。对于每个实例,该数据包报告该实例正在监听的服务器网-库和网络地址。应用程序计算机上的Dbnetlib.dll收到该

2、数据包后,选择在应用程序计算机和SQL服务器实例上都启用的网-库,然后连接为此数据包中的网-库列出的地址。微软公司sql服务器服务器组件接收来自客户端的sql语句并处理这些sql语句。下图显示处理来自sql服务器客户端的sql语句所涉及的主要组件:SQL应用程序tds(不同版本的应用程序用不同的TDS协议)服务器Ct-LibraryorDB-LibrarySQLServer服务器本地数据库·下面有几点说明:·1.表格格式数据流·客户端使用称为表格格式数据流(tds)的sql服务器专用应用程序级协

3、议来发送sql语句。sql服务器2000接受tds的下列版本:由运行来自sql服务器2000的sql服务器客户端组件版的客户端发送的tds8.0。tds8.0客户端支持sql服务器2000的所有功能。由运行来自sql服务器7.0版的sql服务器客户端组件版的客户端发送的tds7.0。tds4.2客户端不支持sql服务器2000中引入的功能,而且服务器有时必须调整发送回tds7.0客户端的数据。例如,tds7.0客户端不支持sql_variant数据类型,因此sql服务器2000必须将所有sql_

4、variant数据都转换成unicode数据类型。由从sql服务器6.5、6.0和4.21a中运行sql服务器客户端组件的客户端所发送的tds4.2。tds4.2客户端不支持sql服务器2000中引入的功能,也不支持sql服务器7.0中引入的功能,而且服务器有时必须调整发送回tds4.2客户端的数据。例如,tds4.2客户端不支持unicode数据类型,因此在给客户端发送unicode数据类型之前,sql服务器2000必须先将其转换成字符数据,这样做可能会丢失扩展字符。tds4.2客户端还不支持

5、比255个字节长的字符、varchar、二进位的或varbinary值,因此在将任何超过255的值发送给客户端之前,sql服务器2000必须先将其截断。2.服务器网-库tds数据包由用于sql服务器的微软公司OLEdecibel分贝提供程序、sql服务器odbc驱动程序或分贝分贝-库dll生成。tds数据包然后被传递给sql服务器客户端网-库,客户端网-库将tds数据包封装为网络协议数据包。在服务器上,服务器网-库接收网络协议数据包,且析取tds数据包并将其传递给关系数据库服务器。在将结果返回给

6、客户端时,这一进程反向执行。每台服务器都可以同时监听几个网络协议,并为其监听的每个协议各运行一个服务器网-库二.在sql服务器数据库传输过程中利用tds协议传输数据,下面我具体地分析tds包的结构:一般来说,所有的数据包都有一个8个字节的通用包头1字节1字节2字节2bytes1bytes1bytes

7、----------

8、----------

9、---------

10、----------

11、-------+-----------

12、

13、数据包

14、数据包

15、包的

16、

17、

18、

19、

20、的类型

21、的

22、大小

23、信号数

24、包数

25、窗口

26、

27、

28、

29、标志位

30、

31、

32、

33、状态

34、+----------+----------+---------+----------

35、-------

36、-----------

37、结构为:0字节为包的类型:其中:0x01TDS4.2或7.0查询包0x02TDS4.2或5.0请求包0x04服务器的回应包0x06取消0x0FTDS5.0查询包0x10TDS7.0请求包(可能是bitwise加旗的)1字节为包的状态:0x00还有包后续包....0...=(没有事件通知).....0..=(没有参与请求)......0.=(没有参与

38、确认).......0=(没有后续缓冲器)0x01最后一个包2字节为TDS包长4字节为信道数6字节包的数目7字节窗口状态0为不使用1为使用-------->登录根据通用包头的结构我们可以了解到个任意包的类型是什么,但不管是什么包(查询包,请求包,还是响应包),一般情况下它一次最多只能传送512各字节,因此任何包它都要小于等于512个字节,也就是说如果发送包大于512个字节计算机在数据传输的时候就要把他分成几个部分,下面是一个请求包(tds5.0)他分成了两个包(共597个字节):第一个包:字节结

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。