我試圖在本地網絡上發送SYN數據包並使用Wireshark監視它們,一切正常,除非當我嘗試將數據包發送到我自己的IP地址時,它似乎「似乎」因爲它表示發送了1個數據包,但它並未真正發送,因此我無法在Wireshark中看到數據包,也無法看到數據包的任何答案。我的設置是計算機A(192.168.0.1),TCP Socket服務器在端口40508上偵聽,計算機B(192.168.0.2)。Scapy SYN發送我們自己的IP地址
在計算機B我測試:
ip=IP(src="192.168.0.2",dst="192.168.0.1")
SYN=TCP(sport=40508,dport=40508,flags="S",seq=12345)
send(ip/SYN)
它工作正常,我看到的Wireshark SYN數據包和從192.168.0.1的SYN/ACK響應
在計算機A我測試:
ip=IP(src="192.168.0.1",dst="192.168.0.2")
SYN=TCP(sport=40508,dport=40508,flags="S",seq=12345)
send(ip/SYN)
它也能正常工作,我看到SYN數據包和RST/ACK(192.168.0.2上的端口40508上沒有服務器偵聽,因此它發送RST/ACK)響應來自192.168.0.2
但是當我嘗試在計算機A:
ip=IP(src="192.168.0.2",dst="192.168.0.1")
SYN=TCP(sport=40508,dport=40508,flags="S",seq=12345)
send(ip/SYN)
沒有出現在Wireshark的,彷彿包從未發送,但它說,像其他測試:發送1包。並沒有返回任何錯誤。如果我在計算機B上運行相同的測試並嘗試將數據包發送到它自己的IP地址,我也遇到了同樣的問題。
對於我的程序,我真的需要發送一個SYN數據包到我自己的IP地址,有沒有辦法做到這一點,或者是不可能的?
由於提前,
Nolhian
換句話說,數據包是在回送接口上發送的。 – Borealid 2010-07-10 05:24:40
謝謝你的答案,我檢查過,就是這樣,數據包在loopback接口上,wireshark在lo上看到它。由於我沒有來自數據包的SYN/ACK答案,我猜它從來沒有達到192.168.0.1,我還試圖把另一個端口沒有聽到它,仍然沒有RST/ACK答案。所以我試圖讓服務器監聽127.0.0.1而不是192.168.0.1,但仍然沒有,生成的數據包在環回發送,但它沒有響應。如果服務器是在127.0.0.1,我寫了一個TCP套接字連接的Python客戶端,它工作正常... – Nolhian 2010-07-10 06:41:48
我真的迷失在那裏:(任何想法,爲什麼它永遠不會在本地響應,但它會相同的生成數據包由另一臺計算機發送,或者當TCP套接字嘗試連接(甚至是本地)時? – Nolhian 2010-07-10 06:42:17