資料介紹
軟件簡介
tcplstat是基于libpcap網絡嗅探程序包的網絡監控工具,它能旁路捕獲所有經過網絡設備過濾規則的TCP數據,跟蹤當前所有TCP連接會話,記錄所有經過的TCP分組,當連接斷開或到達最大記錄數時倒出統計信息,包含但不限于連接兩端網絡地址、建立時間戳、三步握手各分組延遲、四步分手各分組延遲,數據分組明細、往來分組間延遲和相反方向分組延遲的最小、平均、最大統計值。
tcplstat在旁路工作,所以不會對應用造成任何影響,也無需侵入應用,即可獲得網絡數據往來分組明細和統計信息。
tcplstat在實現基礎網絡監控功能時還實現了采集分析SQL耗時和HTTP耗時信息,同樣也是旁路捕獲,不影響應用也無需改造應用,幫助應用優化性能。
tcplstat是開源的,除了引用了Linux內核的紅黑樹和鏈表源碼外,自身源碼只有1500行左右,源碼結構簡單易讀。
安裝
(理論上tcplstat可以安裝在任何有libpcap的環境,包括Linux、WINDOWS、AIX等,以下以Linux操作系統為例)
2.1. 源碼編譯安裝
從tcplstat源碼托管站點(網址在最后)下載最新源碼包,解開并進入源碼目錄
$?tar?xvzf?tcplstat.tar.gz ... ¥?cd?tcplstat/src
按需修改安裝目錄
$?vi?makeinstall _BINBASE????????=???????$(HOME)/bin
注意:編譯環境需要開發包libpcap-devel,請預先安裝好。
編譯、安裝tcplstat
$?make?-f?makefile.Linux gcc?-g?-fPIC?-O2?-Wall?-Werror?-fno-strict-aliasing?-I/home/calvin/include?-I.?-I/home/calvin/include??-c?list.c gcc?-g?-fPIC?-O2?-Wall?-Werror?-fno-strict-aliasing?-I/home/calvin/include?-I.?-I/home/calvin/include??-c?rbtree.c gcc?-g?-fPIC?-O2?-Wall?-Werror?-fno-strict-aliasing?-I/home/calvin/include?-I.?-I/home/calvin/include??-c?rbtree_ins.c gcc?-g?-fPIC?-O2?-Wall?-Werror?-fno-strict-aliasing?-I/home/calvin/include?-I.?-I/home/calvin/include??-c?Util.c gcc?-g?-fPIC?-O2?-Wall?-Werror?-fno-strict-aliasing?-I/home/calvin/include?-I.?-I/home/calvin/include??-c?main.c gcc?-g?-fPIC?-O2?-Wall?-Werror?-fno-strict-aliasing?-I/home/calvin/include?-I.?-I/home/calvin/include??-c?PcapCallback.c gcc?-g?-fPIC?-O2?-Wall?-Werror?-fno-strict-aliasing?-I/home/calvin/include?-I.?-I/home/calvin/include??-c?ProcessTcpPacket.c gcc?-g?-fPIC?-O2?-Wall?-Werror?-fno-strict-aliasing?-I/home/calvin/include?-I.?-I/home/calvin/include??-c?AddTcpPacket.c gcc?-g?-fPIC?-O2?-Wall?-Werror?-fno-strict-aliasing?-I/home/calvin/include?-I.?-I/home/calvin/include??-c?OutputTcplSession.c gcc?-g?-fPIC?-O2?-Wall?-Werror?-fno-strict-aliasing?-o?tcplstat?list.o?rbtree.o?rbtree_ins.o?Util.o?main.o?PcapCallback.o?ProcessTcpPacket.o?AddTcpPacket.o?OutputTcplSession.o?-L/home/calvin/lib?-L.?-L/home/calvin/lib?-lpcap? $?make?-f?makefile.Linux?install cp?-rf?tcplstat?/home/calvin/bin/
編譯鏈接只產生了一個可執行程序tcplstat
,也可自行復制到目標目錄。
顯示版本信息
$?tcplstat?-v tcplstat?v0.5.0?build?Feb??6?2018?22:40:44 copyright?by?calvin?2018
使用
命令行參數說明
不帶命令行參數執行顯示所有命令行參數
$?tcplstat USAGE?:?tcplstat?-v ?????????????????-l ?????????????????[?-i?(network_interface)?]?[?-f?(filter_string)?]?[?-o?[ESPDd]?]?[?--sql?]?[?--http?]?[?--max-packet-trace-count?]?[?--log-file?(pathfilename)?] -o?E?:?Output?EVENT ???S?:?Output?SESSION ???P?:?Output?PACKET ???D?:?Output?PACKET?DATA ???d?:?Output?DEBUG --sql?:?Output?SQL?time?elapse NOTICE?:?See?pcap-filter(7)?for?the?syntax?of?filter
-
-i
設置網絡設備接口,不設置則默認使用any
-
-f
設置網絡過濾規則,比如tcp port 445
嗅探所有連接到端口445的往來TCP分組,具體參見pcap-filter(7)
-
-o
一旦捕獲到TCP分組,輸出數據類型,E表示輸出分組事件,S表示連接斷開輸出會話統計信息,P表示連接斷開輸出TCP分組統計信息,D表示連接斷開輸出TCP分組數據信息,d表示輸出調試信息 -
--sql
捕獲SQL統計耗時信息 -
--http
捕獲HTTP統計耗時信息 -
--max-packet-trace-count
針對長連接不釋放,總是不能偵測到連接斷開也就不能輸出會話總結信息,該選項設置TCP分組累積到多少時強制輸出并清空TCP分組明細信息,默認為1000,下次輸出會話統計信息時前綴從'E |'變成'E -' -
--log-file
輸出到日志文件,不設置文件則輸出到屏幕
注意:執行tcplstat需要root權限。
一個示例(即時輸出TCP分組事件)
第一屏運行tcplstat
#?tcplstat?-f?"tcp?port?445"?-o?E
第二屏向445端口發送一個字符串,然后被samba服務器無情強行斷開
$?echo?"hello"?|?nc?114.215.179.129?445
第一屏輸出
E?|?2018-02-07T20:09:21.249992?|?LHT[113]?|?SMAC[]?DMAC[]?|?SIP[114.215.179.129]?DIP[114.215.179.129]?|?SPORT[44200]?DPORT[445]?SEQ[3750544418]?ACKSEQ[0]?SYN[1]?ACK[0]?FIN[0]?PSH[0]?RST[0]?URG[0]?|?[0]BYTES E?|?2018-02-07T20:09:21.250004?|?LHT[113]?|?SMAC[]?DMAC[]?|?SIP[114.215.179.129]?DIP[114.215.179.129]?|?SPORT[445]?DPORT[44200]?SEQ[974809372]?ACKSEQ[3767321634]?SYN[1]?ACK[1]?FIN[0]?PSH[0]?RST[0]?URG[0]?|?[0]BYTES E?|?2018-02-07T20:09:21.250018?|?LHT[113]?|?SMAC[]?DMAC[]?|?SIP[114.215.179.129]?DIP[114.215.179.129]?|?SPORT[44200]?DPORT[445]?SEQ[3767321634]?ACKSEQ[991586588]?SYN[0]?ACK[1]?FIN[0]?PSH[0]?RST[0]?URG[0]?|?[0]BYTES E?|?2018-02-07T20:09:21.251501?|?LHT[113]?|?SMAC[]?DMAC[]?|?SIP[114.215.179.129]?DIP[114.215.179.129]?|?SPORT[44200]?DPORT[445]?SEQ[3767321634]?ACKSEQ[991586588]?SYN[0]?ACK[1]?FIN[0]?PSH[1]?RST[0]?URG[0]?|?[6]BYTES E?|??????????????????0??1??2??3??4??5??6??7??8??9??A??B??C??D??E??F????0123456789ABCDEF E?|?????0x00000000???68?65?6C?6C?6F?0A?????????????????????????????????hello.?????????? E?|?2018-02-07T20:09:21.251507?|?LHT[113]?|?SMAC[]?DMAC[]?|?SIP[114.215.179.129]?DIP[114.215.179.129]?|?SPORT[445]?DPORT[44200]?SEQ[991586588]?ACKSEQ[3867984930]?SYN[0]?ACK[1]?FIN[0]?PSH[0]?RST[0]?URG[0]?|?[0]BYTES E?|?2018-02-07T20:09:21.251661?|?LHT[113]?|?SMAC[]?DMAC[]?|?SIP[114.215.179.129]?DIP[114.215.179.129]?|?SPORT[44200]?DPORT[445]?SEQ[3867984930]?ACKSEQ[991586588]?SYN[0]?ACK[1]?FIN[1]?PSH[0]?RST[0]?URG[0]?|?[0]BYTES E?|?2018-02-07T20:09:21.256246?|?LHT[113]?|?SMAC[]?DMAC[]?|?SIP[114.215.179.129]?DIP[114.215.179.129]?|?SPORT[445]?DPORT[44200]?SEQ[991586588]?ACKSEQ[3884762146]?SYN[0]?ACK[1]?FIN[1]?PSH[0]?RST[0]?URG[0]?|?[0]BYTES E?|?2018-02-07T20:09:21.256267?|?LHT[113]?|?SMAC[]?DMAC[]?|?SIP[114.215.179.129]?DIP[114.215.179.129]?|?SPORT[44200]?DPORT[445]?SEQ[3884762146]?ACKSEQ[1008363804]?SYN[0]?ACK[1]?FIN[0]?PSH[0]?RST[0]?URG[0]?|?[0]BYTES ...
E開頭的行為一個TCP分組,各列分別是發生時間戳、鏈路層頭結構、發送方MAC、接收方MAC、發送方IP、接收方IP、發送方PORT、接收方PORT、序列號、反饋序列號、分組類型標志集合、有效荷載數據長度。
另一個示例(短連接斷開后輸出統計信息)
第一屏運行tcplstat
#?tcplstat?-f?"tcp?port?445"?-o?SPD
第二屏向445端口發送一個字符串,然后被samba服務器無情強行斷開
$?echo?"hello"?|?nc?114.215.179.129?445
第一屏輸出
S?|?[114.215.179.129:44205]->[114.215.179.129:445]?|?2018-02-07T20:20:41.903338?|?0.016535?|?0.000016?0.000015?,?0.000006?0.000741?0.001477?0.000006?0.000749?0.001492?,?0.000036?0.014964?0.000021?|?2?6 P?|?????2018-02-07T20:20:41.903338?|?0.000000?0.000000?|?[114.215.179.129:44205]->[114.215.179.129:445]?|?S.....?0 P?|?????2018-02-07T20:20:41.903354?|?0.000016?0.000016?|?[114.215.179.129:44205]<-[114.215.179.129:445]?|?S..A..?0 P?|?????2018-02-07T20:20:41.903369?|?0.000015?0.000015?|?[114.215.179.129:44205]->[114.215.179.129:445]?|?...A..?0 P?|?????2018-02-07T20:20:41.904846?|?0.001477?0.001492?|?[114.215.179.129:44205]->[114.215.179.129:445]?|?..PA..?6 D?|??????????????????0??1??2??3??4??5??6??7??8??9??A??B??C??D??E??F????0123456789ABCDEF D?|?????0x00000000???68?65?6C?6C?6F?0A?????????????????????????????????hello.?????????? P?|?????2018-02-07T20:20:41.904852?|?0.000006?0.000006?|?[114.215.179.129:44205]<-[114.215.179.129:445]?|?...A..?0 P?|?????2018-02-07T20:20:41.904888?|?0.000036?0.000036?|?[114.215.179.129:44205]->[114.215.179.129:445]?|?.F.A..?0 P?|?????2018-02-07T20:20:41.919852?|?0.014964?0.014964?|?[114.215.179.129:44205]<-[114.215.179.129:445]?|?.F.A..?0 P?|?????2018-02-07T20:20:41.919873?|?0.000021?0.000021?|?[114.215.179.129:44205]->[114.215.179.129:445]?|?...A..?0 ...
S開頭的行為一個連接統計信息,各列分別是連接方地址、被連接方地址、建立連接時間戳、連接總存在時間、三步握手各分組延遲、四步分手各分組延遲、往來分組間延遲和相反方向分組延遲的最小、平均、最大統計值,總分組數,有效載荷數據總大小。
P開頭的行為一個連接中的一個TCP分組統計信息,各列分別是分組發生時間戳、往來分組間延遲和相反方向分組延遲、連接方地址、分組發送方向、被連接方地址、分組類型標志集合、有效荷載數據長度。
可以看出,自己想獲得什么樣的數據,就組合命令行參數-o
后面的字母集合即可,最詳細的信息參數組合是ESPDd
再一個示例(采集統計SQL耗時)
捕獲SQL的原理很簡單,檢查每一個TCP分組中是否存在SQL語句,如果有則做個標記,等待下一個有效載荷的反向TCP分組到來后,計算時間差即是SQL執行時間。
這里以PostgreSQL為例,MySQL、Oracle等同樣有效。
第一屏運行tcplstat
#?tcplstat?-f?"tcp?port?8432"?--sql
第二屏用psql打開數據庫連接,查詢所有表總記錄數
calvin=#?\d ???????????????????????????????關聯列表 ?架構模式?|???????????????????名稱???????????????????|??型別??|?擁有者? ----------+------------------------------------------+--------+-------- ?public???|?alphastock_company_info??????????????????|?資料表?|?calvin ?public???|?alphastock_company_ipo???????????????????|?資料表?|?calvin ?public???|?alphastock_stock_code????????????????????|?資料表?|?calvin ?public???|?alphastock_stock_kline???????????????????|?資料表?|?calvin ?public???|?alphastock_stock_kline_max_closing_price?|?資料表?|?calvin ?public???|?financing_chinawealth????????????????????|?資料表?|?calvin ?public???|?whoispider_domain????????????????????????|?資料表?|?calvin (7?行記錄) calvin=#?select?count(*)?from?alphastock_company_info; ?count? ------- ??3596 (1?行記錄) calvin=#?select?count(*)?from?alphastock_company_ipo?; ?count? ------- ??3596 (1?行記錄) calvin=#?select?count(*)?from?alphastock_stock_code?; ?count? ------- ??3596 (1?行記錄) calvin=#?select?count(*)?from?alphastock_stock_kline?; ??count?? --------- ?8826375 (1?行記錄) calvin=#?select?count(*)?from?financing_chinawealth?; calvin-#?; ?count?? -------- ?168148 (1?行記錄)
第一屏輸出
Q?|?2018-02-07T20:28:07.978745?0.000869?|?select?count(*)?from?alphastock_company_info; Q?|?2018-02-07T20:28:10.427744?0.000605?|?select?count(*)?from?alphastock_company_ipo?; Q?|?2018-02-07T20:28:12.923744?0.000737?|?select?count(*)?from?alphastock_stock_code?; Q?|?2018-02-07T20:28:15.291747?42.884759?|?select?count(*)?from?alphastock_stock_kline?; Q?|?2018-02-07T20:29:35.218747?3.505407?|?select?count(*)?from?financing_chinawealth?; ...
Q開頭的行為一條SQL耗時統計,各列是開始執行時間戳、執行耗時、SQL語句。
可以看到表alphastock_stock_kline
很大,SQLselect count(*) from alphastock_stock_kline
花了42秒,表alphastock_company_ipo
很小,SQLselect count(*) from alphastock_company_ipo
花了0.6毫秒。
整個采集統計過程完全以旁路方式進行,不影響應用也無需侵入應用。
最后
歡迎使用tcplstat,如果你使用中碰到了問題請告訴我,謝謝 ^_^
- 光伏電站監控系統網絡拓撲圖
- EDA工具CADENCE原理圖與PCB設計說明 55次下載
- 網絡檢測工具軟件QuickPing安裝程序下載 6次下載
- 基于無線寬帶的林業監控網絡架構設計方案 12次下載
- 液晶電視升級工具mboot使用及強制升級方法 11次下載
- 16位CRC驗證碼生成VI工具下載 54次下載
- 神經網絡的工具箱詳細資料說明 6次下載
- 使用無線傳感網絡實現智能機房環境監控系統的設計資料說明 12次下載
- 如何使用GSM網絡進行智能監控模塊的設計 2次下載
- 網絡調試助手工具NetAssist應用程序免費下載 26次下載
- 如何使用ZigBee對環境監控網絡路由協議進行研究論文 10次下載
- DSP 網絡視頻監控
- InfiniBand集群監控工具CLS的設計與實現
- 基于SNMP的網絡監控系統
- TD-SCDMA網絡測試工具及手段
- 網絡監控工具Nagios和Zabbix的功能和使用場景 333次閱讀
- 網絡診斷工具traceroute的使用 152次閱讀
- 網絡監控工具有哪些 網絡監控用幾芯網線 802次閱讀
- Linux下常見的十幾款CPU監控工具 2267次閱讀
- 電力監控系統網絡安全監測裝置介紹 4307次閱讀
- 如何使用Python通過SNMP監控網絡設備? 1148次閱讀
- Netcap:安全和可擴展的網絡流量分析工具 2965次閱讀
- Linux下的網絡負載監控工具 1119次閱讀
- Linux比較實用的工具分享 1993次閱讀
- 基于嵌入式系統的網絡視頻監控系統設計 2606次閱讀
- 10個最佳局域網監控工具值得收藏 1.7w次閱讀
- 監控網絡使用情況的Linux命令行工具 4599次閱讀
- 網絡數字監控系統的構成與應用 1907次閱讀
- SLOC技術提供高清網絡安防監控解決方案 1955次閱讀
- IP網絡視頻監控技術的十大誤解 974次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多