婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Linux進程網絡流量統計的實現過程

Linux進程網絡流量統計的實現過程

熱門標簽:400電話申請找哪家公司 新鄉人工智能電話機器人加盟 地圖標注需要提交啥資料入駐 地圖標注w是什么方向 河南省鄭州市地圖標注 臨汾電銷機器人費用 福州呼叫中心外呼系統哪家好 昆明外呼系統 七大洲地圖標注

前言

linux都有相應開源工具實時采集網絡連接、進程等信息其中網絡連接一般包括最基本的五元組信息(源地址、目標地址、源端口、目標端口、協議號)再加上所屬進程信息pid, exe, cmdline)等。其中這兩項數據大多可直接讀取linux /proc目錄下的網絡狀態連接文件/proc/net/tcp、/proc/net/udp), 進程狀態目錄(/proc/pid/xx) 。

在某些應用安全場景需要結合進程網絡連接、流入流出流量等數據可分析出是否在內網存在惡意外傳敏感數據現象在網絡監控 時發現 服務器大量帶寬被占用但不清楚由系統具體哪個進程占用 。為此都需要獲取到更細粒度的進程級網絡流量數據綜合分析。

在linux proc目錄下可查到主機級網絡數據,例如/proc/net/snmp提供了主機各層IP、ICMP、ICMPMsg、TCP、UDP詳細數據,/proc/net/netstat 文件 InBcastPkts、 OutBcastPkts、InOctets、OutOctets字段表示主機的收發包數、收包字節數據。很可惜沒有 進程級流入流出網絡流量數據。

為此參考nethogs原理實現統計進程級網絡流量方式。

基本數據

涉及proc以下幾個目錄或文件網絡狀態文件/proc/net/tcp、/proc/net/udp, 進程文件描述符目錄/proc/pid/fd。

網絡狀態文件/proc/net/tcp

我們重點關注五元組+狀態+inode號分別在第2、3、4、11列

其中第23列分別是主機字節序ip:port ,例如”0500000A:0016″ -> “10.0.0.5″, 22

第4列是狀態信息狀態字段含義如下:

“01″: “ESTABLISHED”,
“02″: “SYN_SENT”,
“03″: “SYN_RECV”,
“04″: “FIN_WAIT1″,
“05″: “FIN_WAIT2″,
“06″: “TIME_WAIT”,
“07″: “CLOSE”,
“08″: “CLOSE_WAIT”,
“09″: “LAST_ACK”,
“0A”: “LISTEN”,
“0B”: “CLOSING”

第11列是inode號 linux系統文件系統中的一個文件系統對象包括文件、目錄、設備文件、socket、管道等的元信息。


進程文件描述符

/proc/pid/fd目錄下列出當前進程打開的文件信息其中0、1、2表示標準輸入、輸出、錯誤。

網絡連接是以socket:開頭的文件描述符,其中[]號內的是inode號這樣與網絡狀態文件/proc/net/tcp下的inode號可對應起來

以pid:25133進程為例, 文件描述符是10、12 對應inode號分別是512505532、512473483的網絡連接,同時在下圖中的/proc/net/tcp都可以查找到對應連接的詳細信息。

根據上述文件信息可以從/proc/net/tcp建立起網絡連接五元組->inode的映射, 而 /proc/pid/fd建立起連接inode ->進程的映射。

這樣 通過inode號作為橋梁關聯起系統內的進程與網絡連接的信息。

實現流程

為了實時獲取網絡連接流量在linux主機上使用開源libpcap庫來抓取網絡報文。整個實現流程圖如下包含以下5個關鍵步驟。

抓包

使用抓包Libpcap庫獲取到網絡packet結構。

解析報文

解析出packet的五元組(源地址、目標地址、源端口、目標端口、協議號)信息和當前包的流量大小。

緩存更新

在ConnInodeHash查找五元組組成的key對應的inode號如果不存在重新讀取/proc/net/tcp與udp刷新ConnInodeHash緩存建立起連接與inode的映射并重新讀取/proc/pid/fd目錄對所有文件描述符遍歷過濾出以socket:開頭的連接刷新InodeProcessHash緩存重新建立inode與進程的映射。

hash查找

根據查找到inode號在InodeProcessHash查找相應進程pid。

統計流量

根據報文地址,判斷網絡連接方向,累加進程流入、流出數據。

總結

對linux主機抓包,結合網絡狀態文件、進程文件描述符實現一種細粒度的進程級網絡流量采集方式。

通過linux 文件inode號作為橋梁,關聯出進程、網絡連接的關系,可以統計進程接收/發送的總量/平均值等各維度數據,也可以分析出進程各個網絡連接的流量數據,這些在主機流量安全分析、網絡監控排查等場景方面可作為重要依據。但同時也需要注意的是持續通過libpcap抓包對主機性能有損耗影響。

以上所述是小編給大家介紹的Linux進程網絡流量統計的實現過程,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

標簽:四川 臨沂 鎮江 海口 烏海 股票 紅河 岳陽

巨人網絡通訊聲明:本文標題《Linux進程網絡流量統計的實現過程》,本文關鍵詞  Linux,進程,網絡,流量,統計,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Linux進程網絡流量統計的實現過程》相關的同類信息!
  • 本頁收集關于Linux進程網絡流量統計的實現過程的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 巴林右旗| 周口市| 涿鹿县| 长泰县| 宝坻区| 新余市| 武威市| 海伦市| 肃宁县| 汉川市| 易门县| 龙山县| 延寿县| 漠河县| 镇江市| 浪卡子县| 宣恩县| 昌吉市| 依安县| 古丈县| 巴彦淖尔市| 天祝| 长丰县| 洛阳市| 柳州市| 金沙县| 安溪县| 泰来县| 大安市| 福鼎市| 临清市| 丰县| 五家渠市| 教育| 泰兴市| 台东市| 嘉荫县| 巴中市| 原平市| 绩溪县| 新化县|