2014-04-11 41 views
2

过滤UDP数据包我设计在UDP上一个简单的协议,现在我已经意识到,别人也可以发送一个数据包到我侦听的端口。这样的数据包将obviusly是不正确的我的应用程序(我现在不担心安全问题)意外发送到我的端口

过滤这些无效信息的方式?我正在考虑在每个数据包的开头添加一些固定的幻数,但它应该多大?足够16位吗?

回答

0

我相信,典型的解决方案是要求握手(可能包括一个“足够长”幻数)在会议开始。当然,“会话”是你的协议需要跟踪的东西,UDP没有这个概念。为所有当前会话保留一个列表ip,port和last packet接收时间应该这样做:然后你可以丢弃未预先握手握手的同伴的所有数据包。这不仅可以防止随机未知应用程序流量中断您的应用程序,还可以防止多个合法对等点阻止其他流量。

此外,您可以添加任意会话ID或增加数据包的序列号(与津贴丢失的数据包),对数据包,如果你需要,以确保对与你同意哪个会议,这是。

+0

这对UDP来说完全不合适。 – EJP

+0

介意解释为什么?简单的应用程序可能需要完全没有“会话”的知识(在这种情况下,一个简单的幻数在每一个数据包可能不够好),但使用UDP了很多东西...... 作为一个例子HTTP://www.gamers .ORG/dEngine /地震/ QDP/qnp.html – jku

+0

@EJP请参见注释以上(忘了说出你的第一个) – jku

0

可能。 Java对.class文件使用32(0xcafebabe)。但是实际的UDP只有534字节,所以你可能需要保存一对。