我的代碼試圖手動建立一個TCP
握手,然後它通過HTTP GET
發送一個請求資源的數據段。我可以使用BSD原始套接字向成功接收的SYNACK發送ACK響應嗎?
我使用原始套接字來製作標題併發送數據包,並使用libpcap檢查收到的數據包標題。
SYN
已成功發送給接收方,然後接收方以SYNACK
回覆我。到目前爲止它工作正常,但是當我收到SYNACK
時,我試着ACK
它,然後發送HTTP GET
接下來,這看起來不行。我可以在wireshark中看到頭文件可以正常使用。
所以我的問題是:我可以通過原始套接字ACK
SYNACK
就像我收到它使用相同的套接字我用來發送SYN
?是否有任何要求OPTIONS
與標題一起去完成?
我確認序號是SYNACK
,只是在那之後我發送一個段,以便通過HTTP
請求資源設置ACK
和PSH
標誌。我可以在wireshark上看到他們,但我沒有收到服務器的迴應。
如Wireshark所示,用'SYN','SYNACK'和'ACK' TCP標頭的內容更新你的問題。 – caf 2010-12-21 01:13:50
有很多事情可能會出錯。我會建議比較客戶端和服務器端的數據包捕獲。可能出錯的事情列表包括錯誤的確認號(它應該是syn-ack seq number +1)tcp段的校驗和,ip包的校驗和,也可能會在您的nic卡上進行校驗和卸載,這可能會改變校驗和。 – 2013-11-16 16:52:35