Oracle的TNS協議解析

TNS協議基礎介紹

TNS協議主要用於Oracle數據庫的通訊使用,TNS可以基於多種協議進行傳輸,本文將分析基於TCP/IP的TNS。

  • 報文頭
    TNS協議總共8字節+payload(傳輸內容,可變)。
    Packet Length: 包長度字段(2字節)。
    Packet Chksm:檢測包(2字節)。
    Header Chksm: 檢測頭(2字節)。
    Type: 包類型(1字節)。
    Rsrvd:未使用(1字節)。
    詳情如下圖:
    在這裏插入圖片描述
  • 報文中type說明
    針對包類型Type(1字節)共分爲14個類型,詳情如下圖:
    在這裏插入圖片描述
    具體類型變換流程如下:
    1.Oracle進行連接時,客戶端向服務端發起建立請求,此時type=1。
    2.當服務端接收後,會向客戶端發起接受請求,此時type=2,如果重新發送時,此時type=11,並重新執行第一步。
    3.當服務端拒絕時,會向客戶端發起拒絕請求,此時type=4。如:TNS-12514錯誤,即提供的SID字符串無效。
    4.如果服務端接受請求後,客戶端開始發送數據,此時type=6。
    具體效果可見下圖:
    在這裏插入圖片描述
  • Data包(類型6)的報文解析
    1.Data Flag: 數據標識。
    2.ID:包ID。
    3.TTI: TTI(Two-Task Interface) ID。
    4.DATA: 有效數據。
    詳情如下圖:
    在這裏插入圖片描述
    Data Flag 通常是 0x0000, 當所有數據發送完畢指示文件結尾,值爲 0x0040
    開始發送Data數據時,Data Flag爲 00 00。
    在這裏插入圖片描述
    當數據發送完畢時,Data Flag爲 00 40。
    在這裏插入圖片描述
    包ID的基礎信息如下:
    在這裏插入圖片描述
    以上是TNS協議的基礎介紹,下章節爲爲oracle的抓包分析。

Oracle抓包分析

當Oracle客戶端發起連接時,向服務端發送的TNS報文中,TYPE類型爲1(連接)。
在這裏插入圖片描述

當Oracle服務端確認後,向客戶端發送的TNS報文中,TYPE類型爲2(接收)。
在這裏插入圖片描述
客戶端接收後,向服務端發送請求,此時TNS報文中,TYPE類型爲6,Data報文內,DataID爲 de ad be ef(Sercure Network Service 安全網絡協議,如:認證,加密等),隨後服務端也會向客戶端發送安全網絡協議的報文信息。
在這裏插入圖片描述
當安全網絡協議確定後,雙方會發送Data ID爲1的協議協商操作。如下圖:
在這裏插入圖片描述
當協議協商成功後,客戶端向服務端發起請求,此時DataID爲2。
在這裏插入圖片描述
雙方確認後,便發起正常請求,此時DataID爲3。
在這裏插入圖片描述
後續的DataID效果類似,只是在不同操作的標識區分,因爲涉及內容太多,再次就不一一介紹了,大家可根據第一章節的協議基礎介紹,結合自身TNS的抓包內容進行分析即可。

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