Skip to main content
 首页 » 编程设计

python之扭曲的 python : UDP Multicast Interface and Group

2025年05月04日10sky-heaven

我有 2 个关于 twisted 的 UDP 多播安全性的问题。

class UDPProtocol(twisted.internet.protocol.DatagramProtocol): 
        def startProtocol(self): 
                self.transport.joinGroup('224.0.0.1') 
        def datagramReceived(self, data, (host, port)): 
            if host == '192.126.1.65': 
                print "UDPWebscriptProtocol: received %r from %s:%d" % (data, host, port)    

我就是这样听的:

reactor.listenMulticast(10222, UDPProtocol(), listenMultiple = True, interface = '224.0.0.1') 

注意listenMulticast中的接口(interface)规范。

  1. 在 listenMulticast 中指定接口(interface)与在协议(protocol)中加入组有什么区别?
  2. 在协议(protocol)中,我检查主机接口(interface)是否具有正确的 IP(在本例中,是具有 rfc 1918 地址的私有(private)接口(interface))。有人可以欺骗这个 ip 并向我的组广播吗?还是只能欺骗IP不能接口(interface)?

一般来说,这段代码的安全性如何?

请您参考如下方法:

  1. 监听界面是您监听的界面。加入该组会告诉内核和所有路由器您想要接收该组,例如您的路由器将传递来自该组的消息,而不是像默认情况下那样丢弃它们。

  2. 我不明白。您的意思是检查传入数据报的源 IP 地址吗?我不明白你如何检查别人的主机界面。如果允许的源地址是私有(private)的,则唯一可能的欺骗来自该私有(private)子网内部。