2008年5月19日 星期一

計數counter - 統計 - 排序 - 分析

在學網路工程時,常常要做分析,但首先要有計數的技巧,也就是記錄有多少的SA進入 , 或者多少DA 等等資料, 當然會做一個表格 , 就為統計的功能 , 而統計在C++中,我們通常都是用陣列方式儲存,但會有空間和效能降低缺點,於是乎要學習 Link-list 指功能,
首先要建立結構表,然後要想像建立一個Table資料表:

mac[6] , ipsrc ,counter ,*next


typedef struct ip_head{
u_char mac[6];
struct in_addr ipsrc;
int counter;
struct ip_head *next;
} NODE1;


NODE1 *pnew1;
pnew1=(NODE1 *)malloc(sizeof(NODE1));

我們要有Hash func.的分類概念,將IP分配到不同的位址,當碰到collision 時,則利用Link-list改善. 當有新的資料進來時,要用 over-head 的前插鍊結,此時要有一些資料結構的觀念:


void insert_head(struct in_addr ip_src,int src_num){

NODE1 *pnew1;

pnew1=(NODE1 *)malloc(sizeof(NODE1));

pnew1->ipsrc=ip_src;

pnew1->counter=1;

pnew1->next=pnew_head[src_num];

pnew_head[src_num]=pnew1; return;

}


等到這些作業完畢後,就要做排序工作,就像從小排到大,如此才能去做之後的分析

,而排序要建立新的一個鍊結串列,要將舊的Table 一一比較然後往前插,或往後插入,其中會遇到一些資料結構的問題.在此提出:



此鍊結指標要有四個:

pnew_head : 永遠指著頭 Head

pnew : 暫存資料的buffer 指標

pnew_tail1 : 目前這結指標所指的地方

pnew_tail2: 指著 pnew_tail1 的下一個鍊結串列

-----------------------------

20080504 tcap9.c modify sniffex.c

沒有留言:

[c#] process 使用方法

寫法1. Process proc = new Process(); / /PowerShell.exe path proc.StartInfo.FileName = @"c:\Windows\System32\ WindowsPowerShell\v1.0\ powe...