检查 TCP 数据包:Ryu - Python
check for TCP packet : Ryu - Python
在 SDN 控制器 (Ryu) 的 python 应用程序中,如何检查传入的数据包是 TCP SYN 还是 SYN-ACK,以便对这些数据包进行计数?
*if packet in is TCP*
self.total_packets += 1
我不知道这个特定的库,您是否尝试查看 lib.packet.tcp 模块?我认为您需要的方法是 has_flags()
.
来自https://github.com/faucetsdn/ryu/blob/master/ryu/lib/packet/tcp.py有一个例子:
>>> pkt = tcp.tcp(bits=(tcp.TCP_SYN | tcp.TCP_ACK))
>>> pkt.has_flags(tcp.TCP_SYN, tcp.TCP_ACK)
True
编辑:
如果一个函数 returns 是一个布尔值,它可以用在 if 作为条件:
if pkt.has_flags(tcp.TCP_SYN) or pkt.has_flags(tcp.TCP_SYN, tcp.TCP_ACK):
self.total_packets += 1
仅针对 SYN 标志的测试也应该与 SYN 和 SYN-ACK 数据包匹配。
if pkt.has_flags(tcp.TCP_SYN):
self.total_packets += 1
在 SDN 控制器 (Ryu) 的 python 应用程序中,如何检查传入的数据包是 TCP SYN 还是 SYN-ACK,以便对这些数据包进行计数?
*if packet in is TCP*
self.total_packets += 1
我不知道这个特定的库,您是否尝试查看 lib.packet.tcp 模块?我认为您需要的方法是 has_flags()
.
来自https://github.com/faucetsdn/ryu/blob/master/ryu/lib/packet/tcp.py有一个例子:
>>> pkt = tcp.tcp(bits=(tcp.TCP_SYN | tcp.TCP_ACK))
>>> pkt.has_flags(tcp.TCP_SYN, tcp.TCP_ACK)
True
编辑:
如果一个函数 returns 是一个布尔值,它可以用在 if 作为条件:
if pkt.has_flags(tcp.TCP_SYN) or pkt.has_flags(tcp.TCP_SYN, tcp.TCP_ACK):
self.total_packets += 1
仅针对 SYN 标志的测试也应该与 SYN 和 SYN-ACK 数据包匹配。
if pkt.has_flags(tcp.TCP_SYN):
self.total_packets += 1