netmon工作原理

來源:互聯網
上載者:User
參考文獻:

netmon中解析非1433連接埠的TDS協議

TDS的解析

在前面一篇部落格netmon中解析非1433連接埠的TDS協議中我們提到了netmon如何去解析非1433連接埠的TDS。我們是通過在tcp.npl這個檔案中添加具名執行個體的tcp連接埠號碼,讓該連接埠的tcp包跳轉到tds.npl中去解析。下面我們來看一下tds.npl中有哪些內容呢?首先我看到在tds.npl中定義了一個 TDSPacketTypeTable:

View Code

Table TDSPacketTypeTable( value ){    switch( value )    {        case 0x01: "SQLBatch";        case 0x02: "PreTDS7Login";        case 0x03: "RPCRequest";        case 0x04: "Response";        case 0x06: "Attention";        case 0x07: "BulkLoadBCP";        case 0x0E: "TransMgrReq";        case 0x10: "Login7";        case 0x11: "SSPIMessage";        case 0x12: "Prelogin";        case 0x17: "SSL";        default:   "Undefined";    }}

這裡面的這些值是不是很熟悉?是的,這些就是我們TDS包的名字,比如我們會見到TDS:SQLBatch、TDS:Response等等。這些名詞都是有netmon中的tds.npl這個parser解析出來,其實網路包中傳輸過來的就是一些位元據,通過這個value netmon解析出其中的內容。

OSI七層網路通訊協定

在Network Protocols and TDS Endpoints中提到:

"When the SQL Server Database Engine communicates with an application, it formats the communication in a Microsoft communication format called a tabular data stream (TDS) packet. The network SQL Server Network Interface (SNI) protocol layer, which replaces the Net-Libraries for SQL Server 2000 and Microsoft Data Access Components (MDAC), encapsulates the TDS packet inside a standard communication protocol, such as TCP/IP or named pipes.

上面提到了TDS packet會被tcp協議封裝。這就涉及到了OSI七層網路通訊協定的內容。OSI將網路通訊工作分為七層,由高到低依次為物理層、資料連結層、網路層、傳輸層、會話層、展示層和應用程式層。

各層的作用和應用

1.物理層。物理層規定了啟用、維持、關閉通訊端點之間的機械特性、電氣特性、功能特性以及過程特性。物理層為上層協議提供了一個傳輸資料的物理媒體。屬於物理層定義的典型規範包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。

2.資料連結層。資料連結層在不可靠的物理介質上提供可靠的傳輸。資料連結層的作用包括:物理地址定址、資料的成幀、流量控制、資料的檢錯、重發等。資料連結層協議的代表包括:SDLC、HDLC、PPP、STP、框架轉送等。

3.網路層。網路層負責對子網間的資料包進行路由選擇。網路層還可以實現擁塞控制、網際互連等功能。網路層協議的代表包括:IP、IPX、RIP、OSPF等。

4.傳輸層。傳輸層是第一個端到端,即主機到主機的層次。傳輸層負責將上層資料分段並提供端到端的、可靠的或不可靠的傳輸。此外,傳輸層還要處理端到端的差錯控制和流量控制問題。

傳輸層協議的代表包括:TCP、UDP、SPX等。

5.會話層。會話層管理主機之間的會話進程,即負責建立、管理、終止進程之間的會話。會話層還利用在資料中插入校正點來實現資料的同步。

6.展示層。展示層對上層資料或資訊進行變換以保證一個主機應用程式層資訊可以被另一個主機的應用程式理解。展示層的資料轉換包括資料的加密、壓縮、格式轉換等。

7、應用程式層。應用程式層為作業系統或網路應用程式提供訪問網路服務的介面。應用程式層協議的代表包括:Telnet、FTP、HTTP、SNMP等。

在各層之間,資料是以什麼單位進行傳輸的?

這個問題比較有意思,資料在各層之間的單位都是不一樣的,在物理層資料的單位稱為位元(bit);在資料連結層,資料的單位稱為幀(frame);在網路層,資料的單位稱為資料包(packet);傳輸層,資料的單位稱為資料區段(segment)。在netmon中有一個frame number這個列。應該就是資料連結層的傳輸單位。

netmon trace解析

netmon會解析出許多內容,下面分析一些主要的內容,如下表格所示:

Phase What How Why
Intial connection TCP:Flags=......S., SrcPort=60201, DstPort=37937,  TCP handshake Initial connection
TCP:Flags=...A..S., SrcPort=37937, DstPort=60201, mapping tcp session to socket
TCP:Flags=...A...., SrcPort=60201, DstPort=37937,  Sync starting sequence
  Sync  sliding window
Prelogin TDS:Prelogin, Version = 7.3 (0x730b0003),  Version, Encryption, SQL allocate worker and thread for new connection setting up contexts (encryption and MARS)
TDS:Response, Version = 7.3 (0x730b0003),  ThreadID, MARS
  InstanceName
Login   TLS handshake  
TLS:TLS Rec Layer-1 HandShake: Server Hello. Certificate. Server Hello Done.  
TLS:TLS Rec Layer-1 HandShake: Client Key Exchange.; TLS Rec Layer-2 Cipher Change Spec; TLS Rec Layer-3 HandShake: Encrypted Handshake Message. authentication and identification
TLS:TLS Rec Layer-1 Cipher Change Spec; TLS Rec Layer-2 HandShake: Encrypted Handshake Message. channel encryption negotiation,
TLS:TLS Rec Layer-1 SSL Application Data  
TDS Batch/ response TDS:SQLBatch, Version = 7.3 (0x730b0003),   TDS command /response Process SQL request
TDS:Response, Version = 7.3 (0x730b0003), 
Keepalive TCP:[Keep alive]Flags=...A...., SrcPort=60201, DstPort=37937,  maintain idled session reduce connection overhead.
TCP:[Keep alive ack]Flags=...A...., SrcPort=37937, DstPort=60201,  Deal with idle time before connection.close
Disconnect TCP:Flags=...A...F, SrcPort=61543, DstPort=37937, TCP session finish  
TCP:Flags=...A...., SrcPort=37937, DstPort=61543, Close c/s session, delete port pair
TCP:Flags=...A...F, SrcPort=37937, DstPort=61543, Recycle the worker, SPID etc.
TCP:Flags=...A...., SrcPort=61543, DstPort=37937,  Release TCP session memory.

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.