Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法使用Scapy sendp()发送MPTCP数据包_Python_Networking_Tcp_Scapy - Fatal编程技术网

Python 无法使用Scapy sendp()发送MPTCP数据包

Python 无法使用Scapy sendp()发送MPTCP数据包,python,networking,tcp,scapy,Python,Networking,Tcp,Scapy,我在一个pcap文件中捕获了一个多路径TCP流量,该文件具有一个支持MPTCP的修改内核。在使用Scapy的流量中,数据包的第2层报头给出了类似下面的内容,我无法理解,因为它不像以太网报头 >>> p = sniff(offline="my.pcap", count=1)[0] >>> p.show() ###[ cooked linux ]### pkttype = sent-by-us lladdrtype= 0x1 lladdrlen =

我在一个pcap文件中捕获了一个多路径TCP流量,该文件具有一个支持MPTCP的修改内核。在使用
Scapy
的流量中,数据包的第2层报头给出了类似下面的内容,我无法理解,因为它不像以太网报头

>>> p = sniff(offline="my.pcap", count=1)[0]
>>> p.show()
###[ cooked linux ]###
  pkttype   = sent-by-us
  lladdrtype= 0x1
  lladdrlen = 6
  src       = '4@\xb5\x8e\x15\x92'
  proto     = IPv4
###[ IP ]###
     version   = 4L
     ihl       = 5L
...
...
...
当我尝试使用
sendp()
发送上述数据包时,我在转储中看不到任何内容(tcpdump和Wireshark)。我想,由于没有目标mac地址,
sendp()
无法发送。但目标ip地址在那里。当我尝试使用send()发送时,它会显示一条警告:“警告:未找到到达目的地的Mac地址。正在使用广播。”

但是,从那时起,我使用
tcpdump
从实时通信中捕获了该数据包,它是如何仅使用目标ip地址发送的?在Scapy/Python中是否有解决方法


我还想了解一些在Python中使用MPTCP的建议。

使用的pcap文件包含不正确的数据包。使用启用MPTCP的内核启动,并进行了新的测试。这是我从包含有效以太网地址的MPTCP数据包中得到的

>>> ack_pkt = sniff(offline="../mptcp/mptcpdemo.pcap", count=14)[0]
>>> ack_pkt.show()
###[ Ethernet ]###
  dst       = 00:**:**:**:**:44
  src       = 34:**:**:**:**:92
  type      = IPv4
###[ IP ]###
     version   = 4L
     ihl       = 5L
     tos       = 0x0
     len       = 72
...
...
...
###[ TCP ]###
...
...
...
   options   = [('MSS', 1460), ('SAckOK', ''), ('Timestamp', (523099492, 0)),
   ('NOP', None), ('WScale', 7), (30, '\x00\x81\x8bxb\xdfZ\xbdS\t')]
选项的最后一部分包含
Kind=30
,表示这是一个MPTCP数据包