原創 TAHI報文「製作」簡介

2021-04-12 21:44:08 字數 4379 閱讀 4095

報文「製作」簡介

...

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

**,參考資料的各個章節很有針對性,也都值得一看。

所有版權規

喜瑪拉雅(

[email protected])1.

《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 是一種用於回歸的機器學習演算法,該演算法由多棵決策樹組成,所有樹的結論累加起來做最終答案。當把目標函式做變換後,該演算法亦可用於分類或排序。本文...