scapy трехстороннее рукопожатие

Я пытаюсь построить 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.


person Kashif Ahmad    schedule 17.08.2017    source источник