0

在 SDN 控制器 (Ryu) 的 python 应用程序中,如何检查数据包是否是 TCP SYN 或 SYN-ACK,以便计算这些数据包?

*if packet in is TCP*
self.total_packets += 1
4

1 回答 1

0

我不知道这个特定的库,您是否尝试过查看 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

编辑:

如果函数返回布尔值,则可以在 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
于 2021-07-07T18:57:22.233 回答