为了找到 SYN 、 ACK 等,你必须使用 packet.find 方法。以下只是对 POX (carp) 的 forwarding.l2_pairs 库存组件的一个小修改
假设我们已经启动并运行了 mininet
sudo mn --controller remote
在 packet = event.parsed 之后的第 41 行的 stock 组件forwarding.l2_pairs添加几行代码,我们将像这样修改
packet = event.parsed
tcp_found = packet.find('tcp')
if tcp_found:
if tcp_found.SYN:
print "SYN found"
像这样在与 mininet 不同的终端中运行 pox 组件
python pox.py forwarding.l2_pairs host_tracker openflow.discovery
现在,为了获得一些 SYN 标志,让我们进入 mininet 终端并设置一个默认的 python http 服务器
h1 python -m SimpleHTTPServer 80 &
并从主机 2 获取虚拟服务器的内容
h2 wget -O - h1
在我们运行 pox l2_pairs 组件的终端,我们检查输出
INFO:forwarding.l2_pairs:Pair-Learning switch running.
INFO:host_tracker:host_tracker ready
INFO:core:POX 0.2.0 (carp) is up.
INFO:openflow.of_01:[00-00-00-00-00-01 1] connected
INFO:host_tracker:Learned 1 2 6e:6e:ca:c9:2b:93
INFO:host_tracker:Learned 1 2 6e:6e:ca:c9:2b:93 got IP 10.0.0.2
SYN found
INFO:host_tracker:Learned 1 1 52:3b:b2:ff:ff:b7
INFO:host_tracker:Learned 1 1 52:3b:b2:ff:ff:b7 got IP 10.0.0.1
SYN found
这里要注意的是,如 POX 文档中所述,SYN、ACK 等是 tcp 属性
TCP (tcp) 属性:...... FIN (bool) - 设置 FIN 标志时为真 SYN (bool) - 设置 SYN 标志时为真......
为了获得这些属性,我们使用 find 方法将数据包的 tcp 部分分配给一个变量,然后我们使用点 (.) ex 访问这些属性。
variable.attribute
我们很高兴(如果找到)。