2016-05-19 35 views
0

我試圖發送一個TCP段與一臺Linux機器(內核3.16)上設置另一個用於測試目的與Scapy的SYN + FIN控制位:Linux堆棧阻止SYN + FIN段嗎?

from scapy.all import * 

sport = random.randrange(1024, 65535) 
dport = 45000 

pkt = IP(dst=X.X.X.X)/TCP(sport=sport, dport=dport, flags="SF") 
send(pkt) 

段可以使用Wireshark上可以看出發件人,但是,它似乎並沒有被髮送到XXXX,因爲該機器上的wireshark根本沒有看到該段。 Linux內核是否阻止發送SYN + FIN段(因爲段中的這種控制位組合應該永遠不會發生)?否則,這種行爲可能是什麼原因?我怎樣才能實現發送SYN + FIN段?

+0

爲什麼?通過尚未建立的連接發送FIN是否合法? – EJP

+0

這是不合法的。它將測試Linux堆棧在接收到Linux時如何反應。 –

回答

1

通常情況下,一個段不會同時設置SYN & FIN標誌,因爲它違反了TCP規則。它確實取決於操作系統,但TCP通常會發回RST。

還有類似的線索關於此事,請參見What happens when SYN and FIN flags in TCP headers are both set to 1?

+0

目的是實際測試,發送一個真正的細分,以證實RFC的狀態。 「這真的取決於操作系統」:確切地說,但理論在這裏還不夠。這個問題非常依賴操作系統(Linux)。 –