tcprstat和tcpdump一樣,使用libpcap庫進行抓包,然後再通過程式對抓取的tcp包進行分析。
tcprstat對tcp包分析的大概流程如下:
<img src="http://www.bo56.com/wp-content/uploads/2014/06/process_ip.jpg" alt="process_ip" width="552" height="313" class="alignnone size-full wp-image-396" /></a><br /> 1、通過分析來源ip和目标ip,看那個ip是本地ip,來判斷是進來的包(請求包)還是出去的包(響應包)。
2、如果包的資料大小為0,那麼就跳過,不再處理。資料大小為0的視為tcp控制包。
3、如果資料包為進來的包(請求包),則插入一條記錄到哈希表。
4、如果資料包為出去的包(響應包),則用現在的包和之前插入哈希表中的響應包做時間差計算。并把之前的包在哈希表中删除。
資料包分析的代碼在process-packet.c檔案中,方法如下:
ps:在這個檔案中,process_packet 方法使用者擷取頭資訊。