2014-04-11 40 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字節,所以你可能需要保存一對。