TNS 协议传输可以使用 TCP/IP 协议、使用 SSL 的 TCP/IP 协议、命名管道和 IPC 协议传输,其中 TCP/IP 协议传输是使 用明文传送。
这里只分析基于 TCP/IP 协议上的 TNS 数据。
简介
TNS(Transparent Network Substrate) 协议用于客户端连接Oracle数据库,它可以使用其他一些协议进行通信,如:TCP/IP, IPX/SPX, IPC, Named Pipes等。
结构
TNS 包由一个header和payload 组成
0 8 16 31
+--------------+--------------+
| Packet Length| Packet Chksm |
+------+-------+--------------+ 8 byte header
| Type | Rsrvd | Header Chksm |
+------+-------+--------------+
| P A Y L O A D |
+-----------------------------+
字段说明:
Packet Length: 包长度字段
Packet Chksm:检测包
Header Chksm: 检测头
Type: 包类型
Rsrvd: 未使用
如上图:Packet Chksm 和 Header Chksm 通常是不变的,值为0.
Type字段是包的类型字段, 下面列出type 值对应的类型说明:
Type
Description
1
Connect
2
Accept
3
ACK
4
Refuse
5
Redirect
6
Data
7
NULL
8
----
9
ABORT
10
----
11
Resend
12
Marker
13
Attention
14
Control
Payload
Connect
连接类型数据如下所示:
Transparent Network Substrate Protocol
Packet Length: 254
Packet Checksum: 0x0000
Packet Type: Connect (1)
Reserved Byte: 00
Header Checksum: 0x0000
Connect
Version: 313
Version (Compatible): 300
Service Options: 0x0000
Session Data Unit Size: 2048
Maximum Transmission Data Unit Size: 32767
NT Protocol Characteristics: 0xc60e
Line Turnaround Value: 0
Value of 1 in Hardware: 0100
Length of Connect Data: 196
Offset to Connect Data: 58
Maximum Receivable Connect Data: 512
Connect Flags 0: 0x61
Connect Flags 1: 0x61
Trace Cross Facility Item 1: 0x00000000
Trace Cross Facility Item 2: 0x00000000
Trace Unique Connection ID: 0x0000000000000000
Connect Data: (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=ORCL)(CID=(PROGRAM=
C:\oracle\product\10.2.0\client_1\bin\sqlplus.exe)
(HOST=WINXPSP2)(USER=vmware)))(ADDRESS=(PROTOCOL=TCP)
(HOST=192.168.1.102)(PORT=1521)))
0.018134 192.168.1.108 192.168.1.102 TNS Request, Connect (1), Connect
0000 00 0c 29 0c 9a c7 00 0c 29 fd 07 3d 08 00 45 00 ..).....)..=..E.
0010 01 26 05 0b 40 00 80 06 70 a4 c0 a8 01 6c c0 a8 .&..@...p....l.