【问题标题】:check for TCP packet : Ryu - Python检查 TCP 数据包:Ryu - Python
【发布时间】:2021-07-08 04:15:01
【问题描述】:

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

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

【问题讨论】:

    标签: python sdn ryu


    【解决方案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
    

    编辑:

    如果一个函数返回一个布尔值,它可以用在 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
    

    【讨论】:

    • 谢谢,我自己也看到了,这不应该出现在 if 语句中吗?
    • 您介意我直接联系您重新申请SDN吗? (下午/电子邮件)
    猜你喜欢
    • 2013-11-25
    • 1970-01-01
    • 2012-12-02
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    • 2018-10-17
    相关资源
    最近更新 更多