0

在 mininet 中,我能够在我的自定义 POX 控制器中的服务器h1和主机之间建立 TCP 连接,如下所示:h4c0

h1.cmd('python -m SimpleHTTPServer 80 &')
thread.start_new_thread(tcp_thread, h4)

def tcp_thread(src):
    for i in range(10):
        src.cmd('wget -O - 10.0.0.1')
        time.sleep(5) 

h4根据 TCP 标准向服务器请求 HTTP 页面并保持正常确认服务器。在这里,我希望能够强制使用它们之间的另一条路径h4发送数据包。ACK我在转发或创建路径方面没有问题,但在发送Ack数据包之前如何捕获或提取数据包确实存在问题,h4因此我可以根据需要转发它们。

谢谢你。

4

1 回答 1

0

如果你有一个 PacketIn 函数,你可以添加一些代码行来捕获 ACK 标志

packet = event.parsed
tcp_found = packet.find('tcp')
if tcp_found:
  if tcp_found.ACK:
    print "ACK found"
    # do your things

ACK 标志是 POX wiki 中所述的 tcp 属性

TCP (tcp) 属性:...... FIN (bool) - 设置 FIN 标志时为真 ACK (bool) - 设置 ACK 标志时为真......

为了获得这些属性,我们使用 find 方法将数据包的 tcp 部分分配给一个变量,然后我们使用点 (.) ex 访问这些属性。

variable.attribute
tcp_found.ACK
于 2016-05-19T20:41:20.280 回答