報文「製作」簡介
...
1 概述
...
1鏈路層
...
2packet_ipv4
. 2
packet_ipv6
. 3
packet_arp
. 4
packet_rarp
. 4
tcp. 4
udp. 5 舉例
...
6ipv4 tcp
報文...
6其他說明
...
7版權申明
...
8參考資料
...
8tahi
這套開發工具的報文各個字段相當於乙個個的類,你可以分別填充類中各個欄位的值來生成乙個物件,即組成乙個你想要的報文。如果你不指定某些欄位的值,那麼這些欄位會採用預設值,預設值請參考文件《
ipv6 verification tool users manual(
rev.2.3
)》第六章中列表出的預設值。
下面各個部分中的圖表,開頭的為該「類」的名字,下面各部分為「類」中的各個變數。有些變數後面有「()」,表示這個變數的型別是這個括號中的某個「類」。例如,圖
1表示類「
frame_ether
」,這個類有兩個變數「
header
」和「packet
」。「header
」的型別是「
hder_ether
」,「packet
」的型別可以是「
packet_ipv6
」、「packet_ipv4
」、「packet_arp
」或「packet_rarp」。
在類「hdr_ipv4
」和「hdr_ipv6
」的下面都有乙個大框框,裡面放了多個變數,因為變數太多,沒有將這些變數分開。
1
2 3
4 5
6 7
8
9 tcp
舉例:
fem_tcp6(
send_tcp, //packet name
_hether_tn2nut, //link-layer address
,
,
)
payload
示例:
payload payload8
所以,所有的
tcp報文都可以通過自己構造乙個
payload
來實現。但是這樣做非常傻。。。 上面
tcp舉例採用了
tahi
工具中已經撰寫好的一些巨集,請參閱這套工具中的「
stdpacket.def
」檔案。
10
11
這裡的舉例是我自己撰寫的最樸實的例子,沒有採用這套工具中提供的一些現成的巨集,所以可能閱讀起來比較直觀,希望能對你理解本文有所幫助。
我們要組裝的
tcp報文非常簡單,
tcp中所帶的資料為「
0x123456789abcdef」。
我們從最上層做起,首先組裝好
payload:
payload tcp_payload
組裝好tcp頭:
hdr_tcp tcp_header
tcp頭中省略的字段採用預設值。
通過以上兩步,根據
圖7即可組成乙個「
upp_tcp」:
upp_tcp upper_tcp
上面幾步已經將傳輸層及其上層部分填充好了,下面開始填充網路層和鏈路層部分。
我們這個報文是
ipv4
報文,所以根據
圖3來填充。
我們忽略「
exthdr
」,而「
upper
」責採用我們剛剛做好的「
upper_tcp
」,我們還需要乙個「
hdr_ipv4
」,即ipv4
的頭部,這個頭部根據
圖4來填充:
hdr_ipv4 ip4_header
忽略的字段採用預設值。上面呼叫的「
v4(***)
」為將字串轉換成位址的函式,請參閱
《ipv6 verification tool users manual(
rev.2.3)》
4.3.3
部分。
於是我們可以做好整個網路層(及其上層)了,根據圖3:
packet_ipv4 ip4_packet
下面我們在來構建鏈路層。根據
圖1,「
packet
」我們在上面已經構建好了,現在還差乙個鏈路層的頭部「
header
」,型別為「
hdr_ether
」。我們根據
圖2來構建這個頭部:
hdr_ether ether_header
上面呼叫的「
ether(***)
」請參考文件
《ipv6 verification tool users manual(
rev.2.3)》
4.3.1
部分。
我們的報文的各個元件已經就緒完畢,下面我們根據
圖1來組裝從鏈路層開始的完整的報文:
frame_ether my_packet
這個報文的名字就是「
my_packet」。
將以上**寫進乙個「
.def
」檔案,然後在「
.seq
」檔案就可以呼叫「
my_packet
」來傳送這個報文。對於「
.def
」和「.seq
tahi
測試指令碼撰寫指南》
以上**我已經測試通過。
組成乙個
ipv4
的udp
報文也和上面的步驟類似。
ipv6
的報文組裝在這套測試工具已些好的
perl
**中非常多,具有很好的參考價值。
《ipv6 verification tool users manual(
rev.2.3
)》第四章
4.3部分中提到的一些函式,組裝報文的
data
ipv6
的報文的各個部分等等,都可以拿來使用。
具體的例子請參考
tahi
這套開發工具已經撰寫好的測試
ipv6
的perl
**,參考資料的各個章節很有針對性,也都值得一看。
所有版權規
喜瑪拉雅(
《ipv6 verification tool users manual(
rev.2.3)》
2.《tahi
測試指令碼撰寫指南》
原創 oracle sequence簡介
sequence簡介 2013 12 26 一 概述 sequence是序列號的意思,每次取的時候它會自動增加。sequence與表沒有從屬關係,與表一樣屬於使用者。二 主要內容 1 create sequence語法 首先使用者要有create sequence或者create any seque...
UML簡介(原創)
臭雞蛋什麼的等下再扔,uml是個很大的主題,輪不到我來做什麼總結,只是談談我的觀點 軟體工程領域在1995年至1997年取得了前所未有的進展,其成果超過軟體工程領域過去15年來的成就總和。其中最重要的 具有劃時代重大意義的成果之一就是統一建模語言 uml unified modeling langu...
原創 GBDT(MART)概念簡介
gbdt gradient boosting decision tree 又叫mart multiple additive regression tree 是一種用於回歸的機器學習演算法,該演算法由多棵決策樹組成,所有樹的結論累加起來做最終答案。當把目標函式做變換後,該演算法亦可用於分類或排序。本文...