Я пытаюсь построить scapy трехстороннее рукопожатие. Но когда я отправляю пакет подтверждения в ответ на пакет SYN-ACK, я получаю пакет FA вместо завершения трехстороннего рукопожатия. Мой код.
from scapy.all import*
ip = IP(dst = "192.168.0.1")
syn = TCP(dport=35021, flags="S", seq=100)
synack = sr1(ip/syn, iface = "D-Link DUB-E100 USB 2.0 Fast Ethernet Adapter")
ack = TCP(dport=35021, flags="A", seq=101, ack=synack.seq+1)
ans=sr1(ip/ack, iface = "D-Link DUB-E100 USB 2.0 Fast Ethernet Adapter")
Результат, который я получаю в конце,
>>> ans
<IP version=4 ihl=5 tos=0x0 len=40 id=22653 flags=DF frag=0 ttl=64 proto=tcp chksum=0x6003 src=192.168.0.1 dst=192.168.0.254
options=[] |<TCP sport=35021 dport=ftp_data seq=4141767969L ack=101 dataofs=5 reserved=0 flags=FA window=1500 chksum=0x4a61 u
rgptr=0 |<Padding load='\x00\x00\x00\x00\x00\x00' |>>>
Но когда я отправляю некоторые данные в пакете ACK, устанавливая флаги = PA, я получаю правильный ответ на данные, которые я отправляю.
Разве он не должен вести себя так: сначала завершить трехстороннее рукопожатие, а затем отправить данные? Я использую scapy в Windows10 с python 2.7 и последней версией scapy.