2012-08-01 27 views
0

在我的應用程序中,我通過原始套接字將數據包發送到另一臺計算機,然後將數據包返回並通過原始套接字將返回數據包寫入另一臺計算機。 我的應用程序是在Ubuntu上運行的C++應用程序,使用nfqueue。如何測試數據包是否發送正確?

我想測試兩個computer1和computer2發送的數據包,以檢查它們是否如預期。 我需要編寫一個自動化測試來檢查我的程序,這個自動化測試需要監聽eth加載發送的數據包,並檢查它們是否如預期的那樣(ip,端口,有效載荷)。

我正在尋找一個簡單的方法(工具(用簡單的API),代碼)來做到這一點。 我需要一個簡單的方法來聆聽(自動化)到eth。 我認爲測試將檢查發件人,但可能很難找到一個API來監聽eth(我通過原始套接字發送),因此建議的API將檢查接收者計算機也是好的。 測試應用程序可以用C++,java,python編寫。

+0

我不完全清楚你想做什麼,但會像[wireshark](http://www.wireshark.org)這樣的工具作爲你的測試工具嗎? – 2012-08-01 15:43:13

+0

我希望現在的問題更清楚。我需要自動測試。 – 2012-08-01 15:45:34

+0

測試將證明什麼?測試期間沒有發生腐敗?如果您需要流量完整性,請使用加密簽名。 IE瀏覽器。 [TLS](http://en.wikipedia.org/wiki/Transport_Layer_Security)。 – 2012-08-01 15:50:16

回答

0

我在reciver coputer上運行tcpdump並將所有數據包保存到文件。 我用python分析tcpdump,並在測試中檢查數據包是否按預期發送。

0

自動生成大量隨機數據包,將列表提供給兩臺計算機並開始發送,並在收到時將它們與列表進行檢查。計算機1將發送並等待來自計算機2的答覆。計算機2將檢查分組,然後發送成功或失敗分組。將結果記錄在任意一臺計算機上(無所謂),然後可以從日誌文件生成統計信息。如果需要,在兩個方向使用此方法來測試兩個連接。在Python中應該非常簡單。

或發瘋,並使用漢明碼: http://en.wikipedia.org/wiki/Hamming_code(維基) http://lionel.textmalaysia.com/hamming-code-in-python.html(解釋和一些代碼)

+0

我正在尋找api來捕獲發送的數據包 – 2012-08-01 16:11:11

+1

那麼你肯定是做錯了那麼。捕獲數據包應該是你工作中最簡單的部分。除非你必須停止使用原始套接字,因爲你將最終進入一個你不想成爲的地方。 – NKamrath 2012-08-01 18:27:23

0

來檢查數據包已正確發送是通過驗證的唯一辦法是在接收端的完整性。

+0

你如何建議檢查它(自動化)。我願意並希望妥協,並且會檢查通過傾銷發送或聽取發件人eth。 – 2012-08-01 15:58:11

+0

你可以檢查格式,大小等。確保你使用TCP,因爲它更可靠。 – 2012-08-01 16:04:44

+0

我正在尋找一個API來捕獲發送的數據包 – 2012-08-01 16:10:50

相關問題