• 沒有找到結果。

在網路環境中有效率的尋找最常出現的項目

N/A
N/A
Protected

Academic year: 2022

Share "在網路環境中有效率的尋找最常出現的項目 "

Copied!
46
0
0

加載中.... (立即查看全文)

全文

(1)

中 華 大 學 碩 士 論 文

在網路環境中有效率的尋找最常出現的項目

An Efficient Method for Finding Frequent Items from Network Streams

系 所 別:電機工程學系碩士班 學號姓名:M09701017 楊峪寬 指導教授:高曜煌 博士

謝坤融 博士

中 華 民 國 九十九 年 八 月

(2)

中文摘要

在現代資訊化的時代,網路跟人的關係密不可分,許許多多的溝通都透過網路,

如 E-mail、Msn、Skype、FaceBook 等。網路流(Network Streams)特性為只要網路有 接通,封包就會不斷的進來,許多的資料都存在其中,因此分析網路流變得十分重要,

隨著越來越多的網路應用方式,分析也會變得越來越複雜。

本論文的重點是要從網路流中找出最常出現的項目。為了找到最常出現的目標,

本論文修改了舊有演算法的方法,利用讓網路流資料經過演算法之後能有效率地算出 TOP N,達到下列目的:(1)自行設定一段網路流,送入演算法之後可以得到正確的 TOP N;(2)利用 Hash 儲存資料位址,減少尋找時間;(3)能快速排序,並能隨時讀 取都會是正確的結果,不用再多做任何步驟;(4)測試真正的網路流資料,演算法可 以回傳正確的 TOP N。

本論文最後在模擬上證明,修改過後的演算法能成功推算出 TOP N。

關鍵字:網路流、最常出現的項目、排名、封包分析。

(3)

ABSTRACT

In the present era of information technology, network with the inseparable

relationship between people. A lot of Communication by network, like E-mail、Msn、

Skype、FaceBook. One characteristic of network streams that packet keep coming when network connected. Many data store in network streams. So, Analyzing network streams is very important to. It will be complex when having more and more applications.

The focus of this paper is to finding frequent in the network streams. We modified the old algorithm, and use it for network streams data can be efficiently calculated after the TOP N. We will achieve the following objectives:(1)Define a network streams data, into the algorithm to get correct TOP N;(2)Using Hash to reducing the computation time;(3) Quick sort ,and can always read the result will be correct, do not have to do any more steps;

(4)Test the real network stream data of our algorithm, it can return the correct TOP N。

We will prove the algorithm will be effective by simulation, it can return correct TOP N.

Keywords:Network Streams、Frequent Item、TOP N、Libpcap。

(4)

誌謝

很高興可以在兩年之內順利完成此篇論文,首先要感激謝坤融老師兩年來的幫助,

不管是在尋找自己想做的論文題目,並在論文研究的過程中給予我方向協助我完成,

或者是在各項課業上面的指導,教育我要不斷的創新跟思考,使我在這兩年中可以對 很充分學習到相關知識。另外感謝高曜煌主任的幫助,我才能有機會無憂的完成論文,

並且在最後跟唐文華老師一起參予我的口試,點出我論文上的不足以及需要修改的地 方。

除了老師們之外,在實驗室中也得到許多好同學的幫助。感謝延鵬跟我一起對這 篇論文花費很多心血,彼此常常互相討論之下能有更多的想法,是一位我研究路上的 好夥伴。雯惠是一位十分開朗又認真的人,常常是我們之間的開心果。偉懿跟名偉都 是同實驗室裡的好球友,一起打球一起開玩笑,使日子不會過的無趣。賢俊是待人誠 懇的好人。還有很多學長、同學、學弟還有球隊朋友都在這兩年中帶給我很多幫助,

不僅是在研究上,在生活上也過得十分充實。

最後要感謝的是我的家人,要是沒有他們在背後推動就不會有現在的我,對於我 的決定都給予尊重和支持。真的很感激得到這麼多人的幫助,因為有你們才會有現在 的我,謝謝你們!!

(5)

目錄

中文摘要 ... i

英文摘要 ... ii

誌謝 ... iii

目錄 ... iv

圖目錄 ... vi

表目錄 ... viii

第一章、 緒論 ... 1

1.1 研究背景 ... 1

1.2 研究動機與目的 ... 2

第二章、 現有問題與文獻探討 ... 3

2.1 網路環境中的 Frequent Items ... 3

2.2 現在尋找 Frequent Items ... 4

2.2.1 Counter ... 4

2.2.2 Sketch ... 8

第三章、 探討改良 Spacesaving 方法 ... 10

3.1 使用 Hash 儲存資料位址 ... 11

3.2 利用 Jump Table 作排序 ... 12

3.3 在 Spacesaving 中加入 K 值 ... 17

3.4 新增 Change Table ... 18

第四章、 系統模擬環境規劃和分析 ... 20

4.1 前五名佔總票數不同比例之正確率比較 ... 20

4.1.1 環境設定 ... 20

4.1.2 模擬結果 ... 21

4.2 counter 對 zipf 數列的正確率影響 ... 29

(6)

4.3 K 值跟實際票數的差別 ... 34

4.4 實際封包測試 ... 35

第五章、 總結 ... 36

參考文獻 ... 37

(7)

圖目錄

圖 2.1 Majority 示意圖 ... 4

圖 2.2 Majority 拓展為 TOPN 示意圖 ... 5

圖 2.3 Majority 拓展為 TOPN 流程圖 ... 5

圖 2.4 Lossycounting 流程圖 ... 6

圖 2.5 Spacesaving 示意圖 ... 7

圖 2.6 Spacesaving 流程圖 ... 7

圖 2.7 sketch 流程圖 ... 8

圖 3.1 系統架構圖 ... 10

圖 3.2 將 IP 作 XOR ... 11

圖 3.3 Jump Table 初始值 ... 12

圖 3.4 IP A 進入後的 Jump 及 Jump Table ... 13

圖 3.5 IP B 進入後的 Jump 及 Jump Table ... 14

圖 3.6 IP C 進入後的 Jump 及 Jump Table ... 14

圖 3.7 IP C 再次進入後的 Jump 及 Jump Table ... 15

圖 3.8 IP A 再次進入後的 Jump 及 Jump Table ... 15

圖 3.9 K 值變化示意圖 ... 17

圖 3.10 系統流程圖 ... 19

圖 4.1 IP 進來情況分布圖 ... 21

圖 4.2 case 1在不同比例下之正確率 ... 23

圖 4.3 case 1在不同比例下之順序全對的機率 ... 23

圖 4.4 case 2在不同比例下之正確率 ... 24

圖 4.5 case 2在不同比例下之順序全對的機率 ... 24

圖 4.6 case 3在不同比例下之正確率 ... 25

圖 4.7 case 3在不同比例下之順序全對的機率 ... 25

(8)

圖 4.8 case 4在不同比例下之正確率 ... 26

圖 4.9 case 4在不同比例下之順序全對的機率 ... 26

圖 4.10 case 1在不同比例下之 SSK 正確率 ... 27

圖 4.11 case 4在不同比例下之順序全對的機率 ... 27

圖 4.12 case 4在不同比例下之順序全對的機率 ... 28

圖 4.13 case 4在不同比例下之順序全對的機率 ... 29

圖 4.14 Zipf(α= 0.5)之 counter 影響 ... 29

圖 4.15 Zipf(α=1)之 counter 影響 ... 30

圖 4.16 Zipf(α=1.5)之 counter 影響 ... 30

圖 4.17 Zipf(α=2)之 counter 影響 ... 31

圖 4.18 counter 在 case 1 中對不同比例之影響 ... 32

圖 4.19 counter 在 case 2 中對不同比例之影響 ... 32

圖 4.20 counter 在 case 3 中對不同比例之影響 ... 33

圖 4.21 counter 在 case 4 中對不同比例之影響 ... 33

圖 4.22 MIT 正確率 ... 35

(9)

表目錄

表 4.1 前五名佔不同比例之正確率 ... 22 表 4.2 前五名比例 50%時不同 case 的票數差 ... 34

(10)

第一章 緒論

1.1 研究背景

網際網路擁有不受空間的障礙影響的特性,可以輕鬆的從地球上的任何地方獲得 資訊,在現代人的生活中已經是不可或缺的一部分,給人帶來了很大的方便,許許多 多的事情在網路上都能辦的到,例如像在網站上閱讀新聞、ATM 轉帳、報稅、和遠 地的朋友利用網路聯繫…等,網路越來越快的情況下,資料也越來越龐大,資料流可 以看成每個網路上的封包,可以說是構成網路的元素,隨著越來越多的網路應用,這 些封包也越來越複雜。

現在封包分析大部分是被動的,經過監聽之後,將資料擷取出來分析,但是由於 資料太過於龐大且複雜,要怎麼克服這問題在封包分析上還是一大課題。

(11)

1.2 研究動機與目的

封包分析是一件十分浩大的工程,根據 ComScore 公司在 2010 年 1 月發布的調 查中,在 2009 年 12 月每天要執行約 43 億次的搜尋,要如何從這麼多次的搜尋中找 出 Frequent item,這是十分不容易,同樣的這種技術也能運用在其他地方,例如說可 以知道在網路書店上的暢銷書、哪些 DVD 是 DVD 店最常出租、可以知道哪些 IP 最常 進出…等。

Frequent item 還可以應用在異動偵測跟 DDos 攻擊的偵測。假如我們隨時都知道 Frequent item,當某個 item 突然頻繁的出現在網路封包上,並且快速的竄升到第一名,

那我們推測出可能某個地方產生了變化或發生了什麼事,以「狂牛病」為例,當這個 項目突然出現在 Frequent item 裡,那就能合理推測出可能某個地區正發生狂牛病或者 是某個政府準備正準備某種政策,這都能反映出整個社會的變化。

本研究在 Linux[8]環境下利用 Libpcap 將封包抓下來,並以封包中的 IP 為例,將 IP 擷取出來並使用改良過後的演算法作整理,試圖在有限的資源裡作到有效率的尋 找 Frequent Items。

(12)

第二章 現有問題與文獻探討

此章節 2.1 會描述在網路環境下作封包分析會碰到的問題,2.2 會介紹目前對於 現在的解決方法作整理。

2.1 網路環境中的 Frequent Items

尋找 Frequent Items 從 1980 年就有人開始研究,到目前為止大概分為兩大類,第 一類是利用 counter 為主,第二類是以 sketch 為主,詳細的之後會再說明,但是以前 的研究比較傾向於對 Data Streams(資料串流),現在我們要把這個問題從 Data Streams 拿到 Network Streams 上來探討。

要從網路封包上尋找 Frequent item 有兩個需克服的問題:(一)資料十分龐大;(二) 不斷有新的資料進來。關於第二點可說是永無止盡,這算是一個新的課題,以前的 Data Streams 也可能會很龐大,但是總會有個限制,但在網路的世界這種情況就會 改變,以網路速度 10Gbps 來說,若滿載的話,每秒可傳輸超過一千萬個封包,內容 可說是五花八門,不可勝數,且封包是不會間段,時間一直往前走封包就會持續的進 來,要如何在這種情況下快速又有效的找出 Frequent item 是非常大的挑戰。

(13)

2.2 現今尋找 Frequent Items 的方法

尋找最常出現的項目,從 1980 年代就開始有人研究。到目前為止,最常使用的 方法分成兩大類:第一類是以 counter 為基礎,第二類是以 sketch 為主[1]。

2.2.1 counter

在以 counter 為主的相關方法,Moore 和 Boyer 是這方面的始祖,他們在 1981 年 提出 Majority 演算法[2]來解決這個問題。Majority 演算法的概念和所需的運算都很簡 單,就像投票的多數決,在整個運算的過程,它僅需要記錄兩個資料,一是目前最多 票的項目,二是它目前領先的票數。當一筆新資料進來的時候,與目前的最多票比較,

若相同的話,則把目前領先的票數再加 1。若不同,還要進一步判斷,假若領先的票 數為 0,則更換最多票的項目為此刻新進的資料,同時把領先的票數設成 1。反之,

若領先的票數不為 0,則只要把目前領先的票數減 1 即可。Majority 方法的優點是所 需要的記憶體及運算量都很小,缺點是在很多狀況下,並沒有辦法得到正確的結果。

最典型的例子,如果最多票的票數沒有超過總票數的 1/2,它有很大的機率得不到正 確的結果,因其結果會受到資料進來的順序有很大的影響。此外,它當初只考慮計算 最高票的一個項目,並沒有擴展到最高票的 N 個項目。在後續的論文中,我們將出 現最頻繁的前 N 名,簡稱為 TOP N。

4

3 129.134.3.44

129.134.3.44 5 129.134.3.44

0

1 129.134.3.44

174.23.5.69 1 129.134.3.44

當進來資料跟排名中不同 當進來資料跟排名中相同

當進來資料跟排名中不同 當進來資料跟排名中相同

1.票數不為0的情況 2.票數為0的情況

圖 2.1 Majority 示意圖

(14)

近幾年來,陸續有些論文將 Majority 的方法擴展至解決 TOP N 的應用。Demaine et al. 在 2002 年 [3] 和 Karp et al. 在 2003 年 [4] 分別提出稱為 Frequent 的演算法,

他們的主要精神,在於隨時保持 N 筆紀錄,每筆紀錄一樣包含目前屬於 TOP N 的項 目,以及他們領先的票數。當有一個新的項目進來時,如果它已經屬於 TOP N,則將 它的領先票數加 1。否則,若目前記錄的項目還不到 N 筆,直接把新進的項目加入 TOP N 裡。否則,將 TOP N 的每筆記錄的領先票數減 1。若有某些項目的票數已經減 成 0,則把他們從 TOP N 踢除,如圖 2.2,流程如圖 2.3。

7 6

8

C D E

13 11

A B

7 6

8

C D E

13 12

A B

B進來

6 5

7

C D E

12 11

A B

F進來

2 1

3

C D E

8 7

A B

1 1

2

C D F

7 6

A B

F進來

新資料進入

票數加1

在不在排名裡?

不在

最後一名票數

是否為0

所有票數減1

用新項目取代最後 一名,票數為1

圖 2.2 Majority 拓展為 TOPN 示意圖 圖 2.3 Majority 拓展為 TOPN 流程圖

Manku 和 Motwani 在 2002 年提出 Lossycounting 的演算法 [5]。這個方法,每 筆資料除了記錄領先的項目和票數以外,多儲存了一個 delta 值。Delta 主要的用意在 記錄該項目可能的最大值和最小值的差異。假如新進的資料,已經落在 TOP N 裡頭,

就把它可能的最小值加 1。否則的話,產生一筆新的紀錄,並將它的最小值設定為 1,

而 delta 則設定為 n/k。Lossycounting 演算法需要週期性的檢查 TOP N 裡的每個項目,

如果它的上限小於 n/k,就把它從 TOP N 踢除,流程如圖 2.4。

(15)

新資料進入

票數加1

在不在排名裡?

不在

新增一個位置, 票數為1

判斷是否小於Δ

刪除掉

圖 2.4 Lossycounting 流程圖

Metwally et al. 在 2005 年提出一種稱為 Spacesaving 的演算法 [6]。這個方法與 Frequent 演算法非常類似,每筆資料也是記錄項目和票數。當新進的資料已經落在 TOP N 裡,其處理方式與 Frequent 演算法一模一樣,也是把它的票數加 1。但是,當 新進的資料不屬於 TOP N 時,就把當時最後一名直接剔除,換成新進的資料,並把 它的票數設定為被剔除的最後一名的票數加 1,如圖 2.5,程式流程如圖 2.6,本論文 會將此方法延伸發展。

(16)

7 6 8

C D E

13 11

A B

7 6

8

C D E

13 12

A B

B進來

7 7

8

C D F

13 12

A B

F進來

8 7

8

C G D

13 12

A B

G進來

圖 2.5 Spacesaving 示意圖

新資料進入

票數加1

在不在排名裡?

不在

取代最後一名, 票數為原本最 後一名的票數

加1

圖 2.6 Spacesaving 流程圖

(17)

2.2.2 Sketch

以 Sketch 為基礎的方法,主要是 Charikar et al. 在 2002 年提出來的 [7]。其基 本的作法是把 TOP N 和其出現次數記錄在一個 heap 之中,再加上一個 t × b 計數器 來儲存所有項目的出現次數的預估值,這些 t × b 的計數器就稱為 sketch。如果一筆 新的資料進來,先把其 sketch 中次數的預估值加 1,若新進的資料屬於 TOP N,則將 heap 中該項目出現的次數加 1。若新進的資料不屬於 TOP N,則從 heap 中取出新進 資料出現的預估次數,若其預估次數大於 heap 中 TOP N 的出現次數,則把新進資料 放進 heap,並把 heap 中 TOP N 次數最少的項目剔除。所以 sketch 主要的貢獻,在於 如何利用 t × b 的計數器來有效率的紀錄所有項目的出現次數。其 sketch 維護的方式,

主要透過 2t 個 hash 函數 hi()和 si()來達成,i = 1 .. t。其中 hi()的值為{1, .. , b},而 si() 的值為{+1, -1}。假設 q 為新進的項目,則依下述式子修改 sketch 內容:hi(q) = hi(q) + si(q),對所有的 i = 1 .. t。若要算 q 的出現次數,則求 mediani{ hi(q)‧si(q)}即可。

新資料進入

將TOP N裡票數+1

在TOP N裡? 在sketch裡?

在sketch中新增一 筆資料,票數為1

不在 不在

將資料跟票數拉到 TOP N,將最少票數 的放回sketch 將sketch裡票數+1

比TOP N裡的最 小票數大?

圖 2.7 sketch 流程圖

(18)

以 counter 為基礎的方法通常運算較為簡單,對記憶體的需求也低。但因為它只 記錄 TOP N 的資料,對於整個資料流並無完整的資訊。而 sketch 的方法需要額外的 運算,但利用 sketch 這樣的資料結構,記錄所有項目的出現次數(預估值),所以比起 counter 為基礎的方式提供更完整的資訊。

之前大部分論文的模擬環境,都假設資料出現次數的分佈為 Zipf。本篇論文將探 討在不同的分佈下,counter 演算法的表現,並提出新的方法,在這種非 Zipf 分佈的 資料流中,提高得到正確排名的機率。

(19)

第三章 探討改良 Spacesaving 方法

本論文的演算法是將 Spacesaving 延伸,目的是要作到三點:(一)提高正確率;(二) 加快處理速度;(三)有效率的儲存。 為了達到這些目的,將 Spacesaving 作了些改良,

利用 Hash 去做資料位址的整理以節省時間,新增 Jump Table、Change Table、K 值等 來提高正確率,一開始進來的新資料經過 Hash 判定在不在系統之內,會有兩種情況,

1.在系統內:有分為在 TOP N 裡跟在 Change Table 裡,在 TOP N 裡就將票數加上去 後利用 Jump Table 作排序,在 Change Table 裡的話就將票數加上去並拉回到 TOP N 用 Jump Table 作排序;2.不在系統內:把最後一名換掉,票數加上去後利用 Jump Table 作排序。等 Jump Table 作完排序之後,再把新的 TOP N 資訊回傳給 Hash 作記錄,

也要把 Jump Table 更新的資訊回傳給 TOP N 或 Change Table,圖 2.1 為系統架構圖。

Chang Table

Data Hash

TOP N

Jump Table

圖 3.1 系統架構圖

在排名裡面每筆資料裡都有四個記錄的東西:1.vote 數; 2.change 數; 3.K 值;

4.jump 數。利用 TOP N 來儲存排名;期望用 Hash 縮短資料進來後尋找到排名的時 間;Change Table 能夠配合 K 值提高正確率;最後使用 Jump Table 來做快速的排序,

減少處理時間。以下小節對每項記錄的東西和方塊運作方法作詳細的解釋。

(20)

3.1 使用 Hash 儲存資料位址

在尋找 Frequent Items 過程中常常會要儲存大量的資料,那要怎樣從以儲存的大 量資料中找出需要的?最簡單就是從頭開始一個一個慢慢找,直到找出所需要的項目,

但是假如不幸要找的資料是落在最後面的話,那樣要耗費大量的時間才能找到。為此 使用 Hash 去儲存資料的位置,這樣的話,當有一筆新資料進來需要作核對時,可以 利用 Hash 快速的知道這筆資料存不存在你的 Frequent Items 中。

要怎麼樣使用 Hash 呢?以 IP 為例,IP 是一個在封包中是 32bit 的資料,當我們 取得著 32bit 的資料後,將它分開成 4 等分作 XOR,如圖 2.1 為例,一個 69.185.88.85 的 IP 經過兩次 XOR 之後會變成 177,從 32 個 bit 縮減到 8bit,這樣的話,原本要搜 尋 232個 IP 資料變成只要先搜尋 28個資料,可以達到節省許多時間。

01000101 10111001 01011000 01010101

01001101 11111100

10110001

圖 3.2 將 IP 作 XOR

以 IP 為例,Hash 裡面要存放兩個東西:1.IP。2.此 IP 現在所在的排名。這樣就 能縮短時間加速去找出新進來的 IP 存不存在系統內,在的話就能更進一步找到它目 前的排名;不在的話,就要新創一個 Hash 位置給新的 IP,讓他可以加入 TOP N,並 把要踢掉的 IP 之 Hash 位置給清掉。

(21)

3.2 利用 Jump Table 排序

排序對於本論文是一個重要的課題,當你儲存的資料越來越多,要將他們確實的 整理好順序是一件很不容易的事,當票數一有變動,排名也有可能要跟著變動,但兩 兩比較的方式會嚴重拖慢速度,為了加快速度,本論文的方法是增加 Jump Table 跟 Jump 來做快速的調換 TOP N 跟 Change Table。利用這兩項資料來做快速且正確的交 換判斷以維持排名。運作方法是同一票數的資料利用 Jump 值指到 Jump Table 裡的同 一位置,藉由 Jump Table 去作排名變動的判斷,圖 3.3 為初始值,一開始除了第一名 之外,其它的指標全部指向第一名。

圖 3.3 Jump Table 初始值

當有新的封包進來時,會經由 Hash 尋找在不在 Top N 排名裡,發現在 Top N 的 話把其票數加 1,並檢查 Jump 指到的 Jump Table 裡面的值為何。若為 0 則不用作交 換,若不為 0,則根據數字來做排名的交換。等判斷完要不要作交換或作完交換動作 後,我們就要開始更新 Jump 跟 Jump Table。更新的方法是依據交換過後的上面一個 排名的 Jump,先檢查自己跟上一排名的票數是否相同,假如不同則將 Jump 設為 1,

相同的話便要觀看上一排名的 Jump 值。若上一排名的 Jump 不為 1,則把自己 Jump 設為跟上面一樣,但若為 1,便要跟 Jump Table 要個位置來儲存上一排名的排名數,

(22)

並把 Jump 指到剛剛設定的 Jump Table 位置。什麼時候可以刪除 Jump Table 裡面的資 料呢?就是當你要變換排名前,上一個排名跟下一個排名的 Jump 值皆為 1 且你本身 的 Jump 值不為 1,這時候就能把原本 Jump 值指到的 Jump Table 位置釋放出來等待 下次可以給另外的排名使用。

下面利用五個圖來解釋運作流程,圖 3.4 到圖 3.8 為一開始進來五筆資料後的 Jump 跟 Jump Table 結果,進來順序為 A、B、C、C、A。當第一筆資料 A 一進來是 放在最後一名,經過 Jump 和 Jump Table 後會跳到第一名,然後把下面一個排名的 Jump 值改為 1,並把 Jump Table 裡的 2 位置裡面的值改為 2,讓下面的排名指到 2 去,如 圖 3.4。

圖 3.4 IP A 進入後的 Jump 及 Jump Table

第二筆資料 B 進來後也會經過 Jump 跟 Jump Table 後會跳到第二名,此時檢查上 一排名的票數相同且 Jump 為 1,便在 Jump Table 多設定一個位置 3,值為 1,讓 B 的 Jump 值指到 Jump Table 的 3。Jump Table 位置 2 裡面的值變更為 3。

(23)

圖 3.5 IP B 進入後的 Jump 及 Jump Table

第三筆資料 C 進來經過 Jump 跟 Jump Table 作用後跳到第三個排名,接著因為有 三筆資料票數都為 1,於是 B 跟 C 都指向第一名的 A,B 的 Jump 不變,C 的 Jump 值依據上一個排名 B 的 Jump 值也設定 3,Jump Table 位置 3 的值為 1 不變。Jump Table 的位置 2 的值則修改為 4。

圖 3.6 IP C 進入後的 Jump 及 Jump Table

(24)

第四筆資料 C 進來後,因為排名裡已經有了,經過 Hash 搜索到之後將票數+1,

根據 Jump 跟 Jump Table 和第一名的 A 做交換,然後重新設定 Jump 值跟 Jump Table,

結果如圖 3.7。第五筆資料 A 進來後,情況跟上一筆接近,因為排名裡已經有了 A 這 個資料,所以經過 Hash 找到後,利用 Jump 跟 Jump Table 交換並重新設定,結果如 圖 3.8。

圖 3.7 IP C 再次進入後的 Jump 及 Jump Table

圖 3.8 IP A 再次進入後的 Jump 及 Jump Table

(25)

Jump Table 的好處是當同票數很多,排名一變動需要更新時,不用逐一去修改 Jump 值,只要修改 Jump Table 裡面的值即可,可以減少程式執行的動作。譬如說當 2~7 名假如票數都相同時,那 2 的 Jump 會為 1,而 3~7 的 Jump 會指到 Jump Table 裡的某一位置,那位置裡儲存著 2,代表他們票數增加時要跟第 2 名作交換。假設此 時第 4 名進來並作完交換之後,第 3 名的 Jump 變為 1,4~7 都必須改成增加票數時 要跟第 3 名作交換,假如沒有 Jump Table 而是直接存在 Jump 裡,那變成我們要把 4~7 名的 Jump 都改 1 次,也就是說要改 4 次。但是有 Jump Table 之後,我們只要在他們 之前指到的位置裡面的值,由 2 改為 3 就好,僅僅只需要修改 1 次,當同票數越多時,

此方式越是節省時間,只需要記得假如當某個 Jump Table 的位置沒人使用時,要把它 釋放出來,等待下一次的新資料建立。這樣一來就算記錄 N 名,裡面有 N 種票數,

Jump Table 最多也只會有 N 個,不會累積越來越多。

綜合上面那些運作方式,就能輕鬆在計算 TOP N 時順便排出他的順序,但卻不 會因為 N 的增加而延長程式處理時間,因為我們的排序方法只是利用指標簡單的作 出交換動作,不必多進來一筆資料就需要修改大量資料。總歸來說,我們的排序方式 跟 N 的多少沒關係,就算 N 再多也能輕鬆並快速的作出交換動作以達到正確的排名 順序,且在做完統計後就已經是排名好的了,要讀取結果時不用再作任何動作,可以 說十分地方便。

(26)

3.3 在 Spacesaving 中加入 K 值

舊有的 Spacesaving 方法中只記錄了 IP 跟票數,當有不同 IP 進來做排名的替換,

票數並不會歸 0,而是會一直加上去,造成會有大量的票數可能是虛假的,但是卻是 由很多不同新進的 IP 所造成的,可能會使得真正的票數失真,為了改善這一個缺點,

本論文在 Spacesaving 中多增加兩項記錄,分別為 change 數與 K 值,利用這兩項資料 讓真正的票數不失真,並提高正確率。圖 3.9 為一筆資料裡所記錄的資訊,分別有資 料名稱、vote(票數)、change(更換數)、K、jump 值等。

107 83 78

2214 2341 2212

20 2420

3 2492

2321 2424 2290

A B C

2440 D

2495 E

107 83 78

2214 2341 2212

20 2420

1 2493

2321 2424 2290

A B C

2440 D

2494 F

F進來

107 83 77

2214 2341 2212

20 2420

3 2492

2321 2424 2289

A B C

2440 D

2495 E

C進來

圖 3.9 K 值變化示意圖

(27)

不同於舊有的 Spacesaving 利用票數來做排序,本論文使用 K 值來作排序,K 值 計算方法為K =votechange。在過程中資料需要換掉時以 change 數為基準,先把 change 數+1,然後 vote 數會等於 change+1,而 K 就會等於 1,這是當有新資料要換 進表裡時候的情況;若是已經存在表裡,那麼就只會在 vote 上+1,change 數不變,

就能推出 K 值。如此一來新進的資料進來的 K 值都固定為 1 了,而已經存在表裡的 資料也可以正常的運作把自己的名次往前擠。

3.4 新增 Change Table

Change Table 的概念來自於原本的 Spacesaving 舊方法,只要多取 N 名就可以增 加正確率,以同樣的概念往下繼續延伸,本論文將表分為二,一個是原本的排名表,

另一個就為 Change Table。原本的排名表的運作跟 Spacaesaving 的方式一樣,但是當 要取代最後一名之前,要先檢查本來的最後一名的 K 值是否大於 2,小於 2 就直接取 代,大於 2 的話就需要動要用 Change Table 了,先把原本的最後一名放在 Change Table 再由新資料取代掉。之後假如有新資料進來是在 Change Table 裡,就要將此資料從 Change Table 拉回到排名裡,並把記錄在 Change Table 的 vote 也加回去,流程如圖 3.10。其中當檢查需不需要放到 Change Table 時,會設定 2 是因為假如設太高會導致 從排名中被踢出來的不容易進入 Change Table,一開始有嘗試過隨時間去改變這個值,

可是發現正確率都會下降,所以最後選擇使用 2 來當界定。

(28)

Hash裡有沒有記錄?

開始(Data進入)

在排名裡還是在 Change Table裡?

沒有 排名裡的最後一名

可不可以放入 Change Table?

將Change Table的 最後一名換掉

利用Jump Table作排序 更新Hash

取代排名裡的 最後一名 vote+1

算出K值

拉回排名裡 把Change Table裡面記錄

的vote一併加回去

可以

不可以

排名裡

Change Table裡

圖 3.10 系統流程圖

Change Table 最大的好處在於能存放一些曾經進入排名裡,但因為被其它很多不 同的資料所擠掉可以保留住,利用這種情況希望能做到提高正確率。

(29)

第四章 系統模擬環境規劃和分析

本章節的模擬以將封包的 IP 作排名為目的情況下,設定許多不同的情況去模擬,

4.1 先針對當前五名佔總票數不同比例的情況之正確率,4.2 會使用 Zipf[6]去觀察 counter 對 Spacesaving(圖中稱 SS)跟本論文演算法的差別(以下稱 SSK),4.3 是將 Spacesaving 的票數跟 SSK 的 K 值去做個統計比較,4.4 為模擬網路上的真實情況。

4.1 前五名佔總票數不同比例之正確率比較

在排名的演算法中,前五名 IP 的比例對正確率有很大的影響,當 IP 佔的比例越 大就能讓演算法的正確率越高,反之,IP 佔的比例越小就能讓演算法的正確率越低,

為了能看出其影響大小,我們設定了四種前五名比例的票數總類,分別是 6.2%、33

%、50%、90%。

4.1.1 環境設定

模擬設定如下:IP 固定為 200 個,counter 設定為 10,前五名的票數不變,分 別為 527、511、466、388、372,改變其它票數大小去達成前五名比例為 6.2%、33

%、50%、90%,另外一個會影響演算法正確性的就是 IP 近來的順序,為此設計了 4 種情況,case 1:前五名 IP 集中於中段進來;case 2:前五名 IP 集中於前段進來;

case 3:前五名 IP 集中於後段進來;case 4:前五名 IP 平均的進來。前五名的 80%

會出現在總票數的某一段 30%,如圖 4.1。

(30)

圖 4.1 IP 進來情況分布圖

但是隨著比例越來越高,在高峰時進來的前五名的數量會做調整。設定好輸入票 的方式之後就開始測試,我們使用亂數抽取的方式,執行 1 萬次,雖然是亂數,但是 Spacesaving 跟 SSK 的 IP 進去順序是相同的,這樣就能測試出相同情況下之正確率 了。

4.1.2 模擬結果

正確率分為兩種計算方式:1.演算法出來的前五名與預設的前五名相同,順序不 計;2.演算法出來的前五名與預設的前五名相同,且順序完全相同。結果如表 4.1。

經過模擬之後可以看出,SSK 在 6.2%時的 case 2 跟 case 4 有提升正確率,當比 例達到 33%時,case 1 跟 case 3 也有獲得很大的提升,都會有 82.6%;比例超過 50%

之後都能到 100%,而 Spacesaving 在比例 33%的 case 3、比例 50%的 case 1 和 case 3、

比例 90%時才可以有效的運作出正確的 IP 資料。

(31)

前 5 名票數佔總票數 6.2% 前 5 名票數佔總票數 33%

Method SSK Spacesaving Method SSK Spacesaving 正確率 順序全對 正確率 順序全對 正確率 順序全對 正確率 順序全對 case 1 0% 0% 0% 0% case 1 82.8% 28.8% 0% 0%

case 2 95.2% 78.4% 0% 0% case 2 100% 100% 0% 0%

case 3 0% 0% 0% 0% case 3 82.6% 14.3% 100% 76.4%

case 4 100% 99.4% 0% 0% case 4 100% 100% 0% 0%

前 5 名票數佔總票數 50% 前 5 名票數佔總票數 90%

Method SSK Spacesaving Method SSK Spacesaving 正確率 順序全對 正確率 順序全對 正確率 順序全對 正確率 順序全對 case 1 100% 87.3% 100% 80.3% case 1 100% 100% 100% 100%

case 2 100% 100% 0% 0% case 2 100% 100% 100% 100%

case 3 100% 80.8% 100% 78% case 3 100% 100% 100% 100%

case 4 100% 100% 0% 0% case 4 100% 100% 100% 100%

表 4.1 前五名佔不同比例之正確率

為了可以看出各種不同 case 對於各種不同比例的影響,將 case 1~case 4 畫成圖 表,如圖 4.2~4.9,從下列圖表中可以看出,除了 case 3 之外,其他三種情況下 SSK 都會優於 Spacesaving。但是 SSK 在 6.2%下的 case 1 跟 case 3 正確率還是要再提升。

為了改善這問題,針對 6.2%跟 33%的 case 1 跟 case 3,我們嘗試了將資料分段,將進 來的資料隔一段時間就儲存一次,分成 n 段,這樣的做法是希望可以把一些不必要的 票數濾掉,讓前五名可以多存在排名裡,等到最後的時候把前面 n 段的排名資料在全 部統計一次,期望可以從其中某一段中得到前五名以拉高正確率,如圖 4.10~圖 4.13,

X 軸為分段的次數。但是這樣做也有風險,當前五名資料剛好擠進排名要開始往上爬 時,假如剛好碰到分段就等於要重新開始,那麼就可能得到反效果。

(32)

在 case 1 的情況下,Spacesaving 在比例為 6.2%時正確率為 0%,比例為 33%時 正確率為 0%,當比例過 50%之後可以達到 100%正確率;SSK 在比例 6.2%的正確率 為 0%,但在 33%的時候已經可以提升到 82%,順序全對的機率也可以有 28.8%,同 樣 50%之後正確率也會達 100%。

圖 4.2 case 1 在不同比例下之正確率

圖 4.3 case 1 在不同比例下之順序全對的機率

0%

20%

40%

60%

80%

100%

6.2% 33% 50% 90%

case 1 正確率

SS SSK

0%

20%

40%

60%

80%

100%

6.2% 33% 50% 90%

case 1 順序全對的機率

SS SSK

前五名佔總票數之%數 正

確 率

前五名佔總票數之%數 正

確 率

(33)

在 case 2 的情況下,Spacesaving 在比例為 6.2%時正確率為 0%,33%時正確率為 0%,在比例為 50%的時候還是為 0%,要等到 90%才能達到 100%正確率;SSK 在比 例 6.2%的正確率就可以提升為 95.2%,順序全對的機率有 78.4%,更在比例為 33%

之後都能達到 100%,順序全對的機率也可以有 100%。

圖 4.4 case 2 在不同比例下之正確率

圖 4.5 case 2 在不同比例下之順序全對的機率

0%

20%

40%

60%

80%

100%

6.2% 33% 50% 90%

case 2 正確率

SS SSK

0%

20%

40%

60%

80%

100%

6.2% 33% 50% 90%

case 2 順序全對的機率

SS SSK

前五名佔總票數之%數 正

確 率

前五名佔總票數之%數 正

確 率

(34)

在 case 3 的情況下,Spacesaving 可以比 SSK 有優勢的地方,因為 Spacesaving 對於後面進來的票數比較有利,Spacesaving 在比例為 6.2%時正確率為 0%,而到 33%

時正確率可以提升到 100%;SSK 在比例 6.2%的正確率為 0%,雖然 33%的時候可以 提升到 82%,但是還是略低於 Spacesaving,順序全對的機率 14.3%也低於 Spacesaving 的 76.4%;等比例到達 50%之後 SSK 才能追上 Spacesaving,正確率都會達 100%,順 序全對的機率也會較高。

圖 4.6 case 3 在不同比例下之正確率

圖 4.7 case 3 在不同比例下之順序全對的機率

0%

20%

40%

60%

80%

100%

6.2% 33% 50% 90%

case 3 正確率

SS SSK

0%

20%

40%

60%

80%

100%

6.2% 33% 50% 90%

case 3 順序全對的機率

SS SSK

前五名佔總票數之%數 正

確 率

前五名佔總票數之%數 正

確 率

(35)

在 case 4 的情況下,Spacesaving 要在比例為 90%的時候才可以達到 100%正確率;

而 SSK 不管在何種比例下都為 100%,連順序全對的機率皆為 100%。

圖 4.8 case 4 在不同比例下之正確率

圖 4.9 case 4 在不同比例下之順序全對的機率

0%

20%

40%

60%

80%

100%

6.2% 33% 50% 90%

case 4 正確率

SS SS-1

0%

20%

40%

60%

80%

100%

6.2% 33% 50% 90%

case 4 順序全對的機率

SS SSK

前五名佔總票數之%數 正

確 率

前五名佔總票數之%數 正

確 率

(36)

SSK 在分段的情況下,case 1 的時候比例 33%只要分為兩段來記錄就能跑出 100%

的正確率,而 6.2%要等分到五段或是七段才能達到 100%的情況,6.2%的其他分段也 不是都錯,最後跑出來的前五名其中也會對 3~4 個,但是我們正確率算法是要前五名 都有進入才能算正確。而為什麼分五段或七段會特別高,因為 6.2%的前五名票數占 總票數很低的比例,而 case 1 剛好是中段進入,而分五段跟七段的時候剛好會分到中 段,因此剛好可以記錄到前五名票數,但分三段的話中段的範圍有點大,6.2%的票數 太少可能會因為互擠而顯示不太出來。

圖 4.10 case 1 在不同比例下之 SSK 正確率

圖 4.11 case 4 在不同比例下之順序全對的機率

0%

20%

40%

60%

80%

100%

1 2 3 4 5 6 7

case 1 正確率

6.2%

33%

0%

20%

40%

60%

80%

100%

1 2 3 4 5 6 7

case 1 順序全對的正確率

6.2%

33%

counter 數 counter 數 正

確 率

正 確 率

(37)

SSK 在分段的情況下,case 3 要分四段之後,正確率就能到達 100%,但是順序 全對的機率還是偏低,這方面還有待加強的地方。

圖 4.12 case 4 在不同比例下之順序全對的機率

圖 4.13 case 4 在不同比例下之順序全對的機率

0%

20%

40%

60%

80%

100%

1 2 3 4 5 6 7

case 3 正確率

6.2%

33%

0%

20%

40%

60%

80%

100%

1 2 3 4 5 6 7

case 3 順序全對的正確率

6.2%

33%

counter 數 counter 數

正 確 率 正 確 率

(38)

4.2 counter 對 zipf 數列正確率影響

這邊我們使用 Zipf 的資料型態,主要是希望可以看出當 counter 增加到多少時,

正確率會達 100%。什麼是 counter 呢?在演算中每筆記錄的資料稱為一個 counter,以 Spcaesaving 來說一個 counter 記錄了 IP 跟票數,而 SSK 一個 counter 記錄了 IP、票數、

change 數、K 值、jump 數等。那 Zipf 又是什麼呢?其公式為

) ( α ζ i

α

Fi = N

,其中的

α

α

ζ i

A i

) 1 (

|

|

=1

=

,Fi 為第 i 名的票數,N 為總票數,|A|為個數,α為影響每票之間的

變數,

α

=0時每項資料的票數都會相同,越大每票之間落差就會隨之增加。在我們 模擬裡,設定 N=100000、|A|=200,α分為 0.5、1、1.5、2 四種情況。

當 Zipf 的α=0.5 時,Spcaesaving 需要到 129 個 counter 才能達成 100%,而 SSK 只需要 6 個,可以看出在 Zipf(α=0.5)情況下 SSK 方式優於 SS,如圖 4.14。

圖 4.14 Zipf(α= 0.5)之 counter 影響

0%

20%

40%

60%

80%

100%

0 20 40 60 80 100 120 140

Zipf( α=0.5)

SS SSK

正 確 率

counter 數

(39)

當 Zipf 的α=1 時,Spcaesaving 需要到 48 個 counter 才能達成 100%,而 SSK 只需要 6 個,可以看出在 Zipf(α=1)情況下 SSK 方式優於 SS,如圖 4.15。

圖 4.15 Zipf(α=1)之 counter 影響

當 Zipf 的α=1.5 時,Spcaesaving 需要到 19 個 counter 才能達成 100%,而 SSK 只需要 6 個,可以看出在 Zipf(α=1.5)情況下 SSK 方式優於 SS,如圖 4.16。

圖 4.16 Zipf(α=1.5)之 counter 影響

0%

20%

40%

60%

80%

100%

0 10 20 30 40 50 60 70 80

Zipf( α=1)

SS SSK

0%

20%

40%

60%

80%

100%

0 10 20 30 40

Zipf( α=1.5)

SS SSK

counter 數 counter 數

正 確 率 正 確 率

(40)

當 Zipf 的α=2 時,Spcaesaving 需要到 12 個 counter 才能達成 100%,而 SSK 只 需要 6 個,可以看出在 Zipf(α=2)情況下 SSK 方式優於 SS,如圖 4.17。

圖 4.17 Zipf(α=2)之 counter 影響

由上可以知道 counter 會影響到正確率,於是將這方法也套用在 4,1 節的模擬中,

測試看看 counter 對於各種不同比例的票數和各種 case 的影響,當 case 1 的時候,6.2%

的時候,SS 需要 170 個 counter,而 SSK 需要 160 個;33%的時候,SS 需要 20 個 counter,

而 SSK 需要 15 個;50%之後,SS 跟 SSK 都只需要 10 個 counter 就能達到 100%正確 率,如圖 4.18。當 case 2 的時候,6.2%的時候,SS 需要 130 個 counter,而 SSK 需要 20 個;33%和 50%的時候,SS 需要 20 個 counter,而 SSK 需要 10 個;90%時,SS 跟 SSK 都只需要 10 個 counter 就能達到 100%正確率,如圖 4.19。當 case 3 的時候,

6.2%的時候,SS 需要 160 個 counter,而 SSK 需要 40 個;33%的時候,SS 需要 20 個 counter,而 SSK 需要 10 個;50%之後,SS 跟 SSK 都只需要 10 個 counter 就能達 到 100%正確率,如圖 4.20。當 case 4 的時候,6.2%的時候,SS 需要 150 個 counter,

而 SSK 需要 10 個;33%的時候,SS 需要 10 個 counter,而 SSK 需要 18 個;50%的 時候,SS 需要 10 個 counter,而 SSK 需要 15 個;90%時,SS 跟 SSK 都只需要 10 個 counter 就能達到 100%正確率,如圖 4.21。

0%

20%

40%

60%

80%

100%

0 10 20 30 40 50

Zipf( α=2)

SS SSK

counter 數 正

確 率

(41)

圖 4.18 counter 在 case 1 中對不同比例之影響

圖 4.19 counter 在 case 2 中對不同比例之影響

0 20 40 60 80 100 120 140 160 180

6.2% 33% 50% 90%

case 1

SS SSK

0 20 40 60 80 100 120 140

6.2% 33% 50% 90%

case 2

SS SSK

前五名佔總票數之%數 counter 數

前五名佔總票數之%數 counter 數

(42)

圖 4.20 counter 在 case 3 中對不同比例之影響

圖 4.21 counter 在 case 4 中對不同比例之影響

0 20 40 60 80 100 120 140 160 180

6.2% 33% 50% 90%

case 3

SS SSK

0 20 40 60 80 100 120 140 160

6.2% 33% 50% 90%

case 4

SS SSK

前五名佔總票數之%數 counter 數

前五名佔總票數之%數 counter 數

(43)

4.3 K 值跟實際票數的差別

為了驗證 K 值可以比舊有的演算法票數有效率,將 4.1 節中 50%的結果拿出來詳 細比較,6.2%跟 33%成功率都還不是很高,所以選擇 50%,結果如表 4.2,K 值和實 際票數的票數差不到 5%,而 SS 的票數最多會比實際票數多 25%,由此可以證明 K 值跟當初設定時的想法一樣,能大概保留住真實票數,這樣就能利用這一點去做出正 確的排名。

case 1 case 2

實際票數 SS 模擬票數 SSK 模擬 K 值 實際票數 SS 模擬票數 SSK 模擬 K 值 第一名 527 594 524 第一名 527 527 516 第二名 511 578 511 第二名 511 511 507 第三名 466 521 463 第三名 466 466 462 第四名 388 463 386 第四名 388 448 384 第五名 372 447 368 第五名 372 438 366

case 3 case 4

實際票數 SS 模擬票數 SSK 模擬 K 值 實際票數 SS 模擬票數 SSK 模擬 K 值 第一名 527 647 525 第一名 527 683 526 第二名 511 638 510 第二名 511 642 510 第三名 466 598 462 第三名 466 587 466 第四名 388 536 382 第四名 388 547 387 第五名 372 522 367 第五名 372 516 372

表 4.2 前五名比例 50%時不同 case 的票數差

(44)

4.4 實際封包測試

為了模擬實際的環境,本論文採用 MIT Lincoln Laboratory[9]於 1998 年收集的封 包,封包分析的第一步就是要將需要封包從網路中擷取出來,在現在最普遍的就是 Libpcap[10],它是一個 C 的函式庫,有很多程式都是用 Libpcap 寫的,如 Wireshark[11]、

Tcpreplay[12]、 Tcpdump[13]等,MIT Lincoln Laboratory 也是使用 Libpcap,且支 援很多套軟體,本論文選擇使用 Tcpdump 去模擬真實的網路環境。利用 Tcpdump 讀取 從 MIT Lincoln Laboratory 抓下來的封包,時間為 18 個小時的記錄,一共有 118 個 IP,

170156 個封包,前五名的 IP 跟票數分別為(1) 135.13.216.191,10625 票;(2)

207.46.130.139 ,9781 票;(3) 172.16.117.52,7490 票;(4) 172.16.114.148,7119 票;

(5) 172.16.117.5,6911 票。加入 counter 這個元素進去一起跑模擬,SS 需要到 37 個 counter 才能達到 100%的正確率,而 SSK 只要 10 個 counter 就可達到 100%正確率,

結果如圖 4.22。

圖 4.22 MIT 正確率

0%

20%

40%

60%

80%

100%

0 10 20 30 40 50

MIT 正確率

SS SSK

counter 數 正

確 率

(45)

第五章 總結

本論文使用了 Libpcap 跟 SSK 演算法從網路串流中找出最頻繁的項目,用 Hash 跟 Jump Table 做到減少處理步驟;用 K 值跟 Change Table 提高正確率,經過模擬測 試之後可以知道 SSK 正確運作,當有最頻繁項目出現時,SSK 有效地回傳正確 TOP N,

幾乎都能達到 100%的正確率。

Spacesaving 在前 N 名跟其它票數落差越大時越能成功,而且有時候成功率的差 距會十分大,但是 SSK 則是較為穩定,在大部分的情況下都能成功,在模擬 Zipf 資 料時就能看出,當α改變時,SSK 較為輕鬆不用增加太多 counter,而 SS 最多需要 129 個 counter。SSK 唯一在 4.1 節的 case3 的情況下略輸於 Spacesaving,因為

Spacesaving 對於越後面進來的數據越有利,至於其它的 case,SSK 都優於 Spacesaving,

而且在模擬真實環境的時候也能成功的推算出前五名。

(46)

參考文獻

[1] N. Alon, Y. Matias, and M. Szegedy. The space complexity of approximating the frequency moments. In ACM Symposium on Theory of Computing, pages 20-29, 1996.

[2] B. Boyer and J. Moore. A fast majority vote algorithm. Technical Report ICSCA-CMP-32, Institute for ComputerScience, University of Texas, Feb. 1981.

[3] E. Demaine, A. L´opez-Ortiz, and J. I. Munro. Frequency estimation of internet packet streams with limited space. In European Symposium on Algorithms (ESA), 2002.

[4] R. Karp, C. Papadimitriou, and S. Shenker. A simple algorithm for finding frequent elements in sets and bags. ACM Transactions on Database Systems, 28:51-55, 2003.

[5] G. Manku and R. Motwani. Approximate frequency counts over data streams. In International Conference on Very Large Data Bases, pages 346-357, 2002.

[6] A. Metwally, D. Agrawal, and A. E. Abbadi. Efficient computation of frequent and top-k elements in data streams. In International Conference on Database Theory, 2005.

[7] M. Charikar, K. Chen, and M. Farach-Colton. Finding frequent items in data streams.

In Procedings of the International Colloquium on Automata, Languages and Programming (ICALP), 2002.

[8] Linux, http://en.wikipedia.org/wiki/Linux

[9] MIT Lincoln Laboratory: Information Systems Technology,

http://www.ll.mit.edu/mission/communications/ist/corpora/ideval/docs/index.html

[10] Libpcap, http://www.tcpdump.org/pcap3_man.html

[11] Wireshark, http://www.wireshark.org/

[12] Tcpreplay,

http://tcpreplay.synfin.net/

[13] Tcpdump , http://www.tcpdump.org/

參考文獻

相關文件

在山上,課輔是一個媒介,有了課輔班,孩子找到下課可以 去的地方,也因為透過課輔,聯繫起部落裡大家的情感「山上的 孩子真的很皮,很難教……」、「……就算小孩問 ( 家長 ),他 們

 真值表必須在關鍵字table table table table及endtable endtable endtable之 endtable 間。. 

「這裡就是你的避難所。世間的一般庸人都在那裡

3) 請先充分地搓 揉預計切除的部 分。這樣使外皮 會與裡面芯線產 生間隙。.. 4) 將網路線夾在剝 皮工具的最外側溝

3) 請先充分地搓 揉預計切除的部 分。這樣使外皮 會與裡面芯線產 生間隙。?. 4) 將網路線夾在剝 皮工具的最外側溝

也就是設定好間隔時間(time slice)。所有的 程序放在新進先出的佇列裡面,首先CPU

 可利用 HTML 控制項 中的 Table 控制項進 行排版動作.  (最好將 Table

密碼系統中,通常將想要保護的密碼訊息稱為 plain text。而將經過加密後產生的加密訊息稱為 cipher text。在這 中間的過程,會用到可以對外供應的 Public Key 以及私人保