Я пытаюсь закрепить сервер java-websocket от DoS-атак, ограничив размер входящего сообщения.Являются ли дейтаграммы или потоки WebSockets?
Я нашел this great Q&A on C sockets' receive buffers (который, как я полагаю, является способом ограничения размера, поскольку я не могу найти что-либо еще). В нем говорится, что существуют два типа сокетов: датаграмма и потоковая передача.
The answer говорит, что сокеты datagram просто отсекают лишние байты, что очень хорошо для моих целей, поскольку неполное сообщение является неправильным и приведет к тому, что отправитель будет внесен в черный список.
Теперь я пытаюсь определить, являются ли WebSockets дейтаграммой или потоковой передачей. Похоже, что они дейтаграммы, поскольку они используют «фреймы», но я понятия не имею. Это верно?
Если они могут быть потоковыми, как может java-websocket, клиент & сервер, настроен использовать датаграмму, если это даже подходит? Возможно ли обнаружить чрезмерно большое сообщение с дейтаграммой?
Если потоковая передача более уместна, как можно обнаружить чрезмерно большие сообщения?
размер пакета, размер буфера приема & итоговое сообщение (TCP) - совсем другие вещи. Также, когда вы получаете поток сообщений, просто не храните его в памяти до тех пор, пока он не взорвется, вы можете отказаться от данных в дороге. http://en.wikipedia.org/wiki/WebSocket – zapl
@zapl Спасибо, что искали zapi! Я понятия не имею, как это сделать или начать. Не могли бы вы отправить пример кода? Большое вам спасибо заранее! –
У меня его нет. Но вы можете просто прочитать max X байтов, а затем остановиться. http://stackoverflow.com/questions/15445504/copy-inputstream-abort-operation-if-size-exceeds-limit – zapl