들어오는 메시지 크기를 제한하여 DoS 공격에 대해 java-websocket 서버를 강화하려고합니다.WebSockets 데이터 그램 또는 스트리밍 있습니까?
내가 찾은 this great Q&A on C sockets' receive buffers (나는 다른 것을 찾을 수 없으므로 크기를 제한하는 방법이라고 생각합니다). 여기에는 데이터 그램과 스트리밍이라는 두 가지 유형의 소켓이 있다고합니다.
The answer은 데이터 그램 소켓이 불완전한 메시지가 올바르지 않아 보낸 사람을 블랙리스트에 올릴 수 있기 때문에 데이터 그램 소켓이 단순히 내 목적에 맞는 과잉 바이트를 잘라 버린다 고 말합니다.
이제 웹 소켓이 데이터 그램 또는 스트리밍인지 확인하려고합니다. 그들은 "프레임"을 사용하기 때문에 그들이 데이터 그램 인 것처럼 보이지만, 나는 전혀 모른다. 그 맞습니까?
그들이 스트리밍 할 수 있다면, 클라이언트가 & 클라이언트 인 java-websocket을 데이터 그램을 사용하도록 구성 할 수 있습니까? 데이터 그램으로 과도하게 큰 메시지를 탐지 할 수 있습니까?
스트리밍이 더 적합한 경우 어떻게 지나치게 큰 메시지를 감지 할 수 있습니까?
패킷 크기, 수신 버퍼 크기 및 결과 메시지 (TCP) 크기는 매우 다릅니다. 또한 메시지 스트림을 수신하면 메모리에 저장하지 말고 이동 중에도 데이터를 삭제할 수 있습니다. http://en.wikipedia.org/wiki/WebSocket – zapl
@zapl zapi를 찾아 주셔서 감사합니다! 나는 그것을 어떻게하는지, 시작해야할지 모른다. 코드 예제를 게시 할 수 있습니까? 대단히 감사드립니다! –
나는 가지고 있지 않다. 하지만 기본적으로 최대 X 바이트를 읽고 멈출 수 있습니다. http://stackoverflow.com/questions/15445504/copy-inputstream-abort-operation-if-size-exceeds-limit – zapl