首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法用sendp()发送MPTCP数据包

无法用sendp()发送MPTCP数据包
EN

Stack Overflow用户
提问于 2014-11-25 07:11:56
回答 1查看 465关注 0票数 1

我在一个支持MPTCP的修改内核的pcap中捕获了一个多路径TCP流量。Scapy流量中数据包的第二层报头提供了类似于下面的内容,我无法理解,因为它不像以太网报头。

代码语言:javascript
复制
>>> 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()发送时,它显示了一个警告:"WARNING: Mac address to reach destination not found. Using broadcast."

但从那以后,我就用tcpdump从一个实时通信中捕获了这个数据包,它是如何用目标ip地址发送的呢?在Scapy/Python中有什么解决办法吗?

我还想为在Python中使用MPTCP提供一些建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-05 04:56:58

使用的pcap有错误的数据包。使用启用MPTCP的内核引导并执行新的测试。这就是我从包含有效以太网地址的MPTCP数据包中得到的信息。

代码语言:javascript
复制
>>> 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数据包。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27120703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档