我正在尝试建立一个scapy 3路握手。但是当我发送一个响应SYN-ACK数据包的确认数据包时,我收到一个FA数据包,而不是完成3次握手。我的代码是。
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数据包中发送一些数据设置'flags = PA'时,我得到了对我发送的数据的正确响应。
不应该表现得像先完成3次握手然后发送数据吗? 我在Windows10上使用scapy和python 2.7以及scapy最新版本。