2012-11-02 122 views
4

我有一個轉移套接字。我試圖在看到它們時更改數據包上的端口。當我這樣做時 - 我是否需要重新計算TCP校驗和以及IP校驗和?轉移套接字的TCP校驗和計算

我試圖做到這一點,但我看到tcpdump中的重置數據包。我不知道這是否是因爲我正在計算tcp校驗和錯誤,或者其他事情是否正在進行。

我使用本網站的校驗和方法:

http://www.enderunix.org/docs/en/rawipspoof/

我想與使用轉接插座,如果我改變一件事情,它應該是相當簡單的,但似乎並不如此。有沒有一個TCP校驗和計算器在那裏我可以用來驗證我得到正確的價值?

回答

0

見科RFC 1631的校驗和調整,在NAT/PAT必須做出3.3。您不必瀏覽整個數據包,只需根據您修改的字節來調整校驗和。

+0

有趣。在他們的C函數中,你是否明確知道args舊指針和新指針指的是什麼?我是否需要創建兩個變量,其中包含新舊數據? – Derek

+0

'optr'指向你要從舊數據包中刪除的內容,而nptr指向你在新數據包中插入的內容。所以如果你只是改變端口號,optr指向原始端口,nptr指向替換端口。您可以使用兩個變量,或者可以指向數據包中的位置。 – Barmar

+0

好的 - 這很有道理。我不確定是否需要擁有舊數據包和數據包的完整副本。 – Derek