DRDA協議分析

    DRDA(Distributed Relational Database Architecture )分佈式關係數據庫體系結構。

    分佈式關係數據庫體系結構(DRDA)是一個跨IBM平臺訪問、遵循SQL標準的數據庫信息的IBM標準。它是IBM的信息倉庫框架中的重要組成部分,該框架定義了龐大的後臺服務器,客戶機可通過較小的基於工作組的中介服務器來訪問它。

    DRDA具有下列功能: 

    1、定義了客戶機和後臺數據庫之間的接口協議。    

    2、提供了IBM的DB2、DBM、SQL/DS和SQL/400數據庫系統的互連框架。  

    3、支持多供應商提供的數據庫系統。  

    4、支持分佈式數據庫上的事務(工作單元)處理。 

    在DRDA中,客戶機叫做應用請求器(ARS),後臺服務器叫做應用服務器(AS),協議叫做應用支持協議(ASP),提供AR和AS間的接口。整個過程操作在SNA網上,但也計劃支持OSI和TCP/IP。有一個附加的協議叫做數據庫支持協議(DSP),它使一個AS能對另一服務器扮演AR的角色。通過這種方法服務器之間能相互通話並傳遞來自客戶AR的請求,如圖D-25所示。最初的協議對一個數據庫只支持一個結構化查詢語言(SQL)的語句,但未來的版本將對一個或多個數據庫提供多個語句的支持。  

    DRDA是IBM環境中建立客戶機/服務器計算的基礎之一。其它基礎是高級的對等聯網(APPN)和分佈式數據管理(DDM)。通過信息倉庫和DRDA,IBM計算機將它的企業中心組成部分的大型計算機,用作各種類型信息(包括多媒體信息)的存儲平臺。

 

DB2使用的DRDA通訊協議研究


    觀察的結果是基於wireshark。wireshark是否正確直接決定了下面的結果是否正確。

    DB2的版本是V9,使用JAVA的JDBC連接。驅動是db2jcc.jar。其他連接方式沒有嘗試過。

DRDA是使用TCP作爲傳輸層協議。

一個數據包有n個DRDA。

DRDA = DDM + n* PARAMETER。(n>=0)。

DDM
作用:描述這個DRDA
組成:(以字節爲單位)
2--length(這個DRDA的長度)
1--Magic
1--Fomat
2--correlID(連接的ID)
2--length2(?)
2--code point(描述這個DRDA的用途)

PARAMETER
作用:存放數據
組成:(以字節爲單位)
2--length(這個PARAMETER的長度)
2--code point(描述這個數據的用途)
length-4 -- data (EBCDIC字符)


一:建立連接:
第一次交互:客戶端和數據庫服務器交換彼此硬件和軟件的信息。
客戶端:
DDM Code point :EXCSAT(0x1041)
PARAMETER Code point :EXTNAM(0x115e) external name 客戶端
PARAMETER Code point :SRVNAM(0x116d) server name 客戶端
PARAMETER Code point :SRVRLSLV(0x115a) server product release level 客戶端版本
數據庫:
DDM Code point :EXCSATRD(0x1443)


第二次交互:
1.客戶端把數據庫名,用戶名,密碼和使用軟件的信息發送到服務器。接受認證。

DDM Code point :SECCHK(0x106e)請求驗證
PARAMETER Code point :RDBNAM(0x2110)數據庫名
PARAMETER Code point :USERID(0x11a0)用戶名
PARAMETER Code point :PASSWORD(0x11a1)密碼(沒加密)

2.服務器把驗證結果返回給客戶端
驗證成功:
DDM Code point :ACCRDBRM(0x2201)access to RDB completed
驗證失敗:

服務器馬上提出TCP關閉請求。



二:select,insert,update,delete語句(select比較複雜)
客戶端:
DDM Code point :SQLSTT(0x2414) (ASCII字符) 裏可以找到SQL語句
注意:執行select,insert,delete,update語句的時候會發來2句SQL,第二句纔是真正的語句


服務器:
一般是返回幾個SQLCARD(0x2408)和ENDUOWRM(0x220c)End Unit of work condition和其他信息


select失敗:
DDM Code point :OPNQFLRM(0x2212)open query failure
select成功:
DDM Code point :OPNQRYRM(0x2205) Open Query Complete


insert,delete,update失敗:
返回一系列SQLCARD(0x2408),表示失敗的原因(注意,成功也會返回SQLCARD)
insert,delete,update成功:
DDM Code point :RDBUPDRM(0x2218) RDB update reply message




三:結束連接:
1.客戶端發來請求。
DDM Code point:RDBCMM(0x200e)
2.服務器返回信息。
DDM Code point:ENDUOWRM(0x220c)
TCP斷開連接


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章