程式設計隨記 拼包程式(一)

2021-04-01 15:31:38 字數 1287 閱讀 4405

程式設計隨記 ---- 拼包程式(一)

六月中旬的某一天,老大的一封郵件把我招進了實驗室,開始研究和專案為主的

實驗室生活。

剛進去,彼此互不熟悉。老大就讓我編寫乙個拼包程式,以此來瞧瞧我的程式設計能

力。給我講了功能之後,還給了我乙個工程框架。讓我以此作為基礎和環境來coding。

為了給我一些壓力,老大還給了乙個效能要求,每秒處理50mb資料報。而且不能

用winpcap,只能自己分析包,處理包,然後拼接成乙個tcp資料流。還給了乙個該程

序執行的環境:主幹網。哎,現在想來,主幹網成為了後面不可逾越的鴻溝。而當時

的想當然卻把這個極其重要的條件給忽略掉了。從而使自己走了很多彎路。可惜,等

我發現時,已經在很晚很晚的後來了。。。

時間給了我兩個星期。於是抽出一天的時間來研究用windump捕獲下來的包格式。

安裝了winpcap後,開啟網頁,隨便瀏覽了幾分鐘。用windump來捕獲這段時間的資料

包。誰知不可思議的事情發生了,居然捕獲的資料報為0個。怎麼可能呢?很顯然那個

地方出現了問題。關了防火牆,再重試了一遍,還是為0個資料報。問題出現在哪呢?

自己捉摸了很久,也沒研究出個所以然來。實在不行,於是在其他機子上試了下,居

然也沒法正常捕獲資料報。難道是windump的問題?這個問題一直在腦中盤踞了很久。

知道後來的某一天,使用了ethereal後才找到了原因。

在網上用google搜了搜,結果也沒找到什麼原因來。實在沒辦法,只好從mit網

上和師兄那邊分別找來了已經捕獲下來的wpcap格式的檔案。先研究一下該格式再說,

windump的問題以後有時間再去研究。

繼續利用google,在網上逛了一圈,終於找到心儀的資料,找到了wpcap格式的

具體介紹。用ue開啟wpcap格式的檔案一比較,果然如此。

打來vc6.0,開始程式設計解析wpcap格式的資料報。很輕鬆的就搞定了。

今天的任務搞定了,下次研究ip和tcp頭。

wpcap檔案格式:

每個wpcap格式的檔案頭都有24自己的特殊標頭檔案:pcap_file_header。並且頭四

個位元組必須為:0xa1 0xb2 0xc3 0xd4或者為0xd4 0xc3 0xb2 0xa1。前者表示為大端

位元組序,後者表示的是intelpc機的小端位元組序。

每個乙太網包又封裝了乙個pcap包頭。該包頭有16個位元組。前8個位元組表示時間,

後8個位元組中前4個位元組為後面的鏈路層資料報在檔案裡面的長度,後4個位元組為該鏈路

層資料報的實際長度。兩者可能不同是因為可能存在截斷的情況。

程式設計隨記 拼包程式(二)

程式設計隨記 拼包程式 二 找來了richard stevens的經典著作 tcp ip祥解 卷1 協議 仔細的 翻閱tcp和ip協議部分。從而發現截獲到的資料報前面包含若干頭 wpcap header ethernet header ip header tcp header data 前面已經分析...

Windows入門程式設計程式筆記(一)

參考 呼叫約定 有點神奇的字元 手敲基礎 滾動條 include include int winapi winmain hinstance hinst,hinstance tmp,lpstr strcmd,int nshow int messageboxprint const char szform...

程式程式設計中一點總結

以下是自己在程式設計過程中一些總結 1.盡量使用內部所代替外部鎖.用下面的例子來說明一下 class cdatalist cdatalist bool add bool update data getdata 這樣寫的 好處 在合作開發的時候,我們的程式中又不只有乙個共享資料,避免互相等待資源而產生...