2014-01-30 2 views
1

들어오는 메시지 크기를 제한하여 DoS 공격에 대해 java-websocket 서버를 강화하려고합니다.WebSockets 데이터 그램 또는 스트리밍 있습니까?

내가 찾은 this great Q&A on C sockets' receive buffers (나는 다른 것을 찾을 수 없으므로 크기를 제한하는 방법이라고 생각합니다). 여기에는 데이터 그램과 스트리밍이라는 두 가지 유형의 소켓이 있다고합니다.

The answer은 데이터 그램 소켓이 불완전한 메시지가 올바르지 않아 보낸 사람을 블랙리스트에 올릴 수 있기 때문에 데이터 그램 소켓이 단순히 내 목적에 맞는 과잉 바이트를 잘라 버린다 고 말합니다.

이제 웹 소켓이 데이터 그램 또는 스트리밍인지 확인하려고합니다. 그들은 "프레임"을 사용하기 때문에 그들이 데이터 그램 인 것처럼 보이지만, 나는 전혀 모른다. 그 맞습니까?

그들이 스트리밍 할 수 있다면, 클라이언트가 & 클라이언트 인 java-websocket을 데이터 그램을 사용하도록 구성 할 수 있습니까? 데이터 그램으로 과도하게 큰 메시지를 탐지 할 수 있습니까?

스트리밍이 더 적합한 경우 어떻게 지나치게 큰 메시지를 감지 할 수 있습니까?

+0

패킷 크기, 수신 버퍼 크기 및 결과 메시지 (TCP) 크기는 매우 다릅니다. 또한 메시지 스트림을 수신하면 메모리에 저장하지 말고 이동 중에도 데이터를 삭제할 수 있습니다. http://en.wikipedia.org/wiki/WebSocket – zapl

+0

@zapl zapi를 찾아 주셔서 감사합니다! 나는 그것을 어떻게하는지, 시작해야할지 모른다. 코드 예제를 게시 할 수 있습니까? 대단히 감사드립니다! –

+0

나는 가지고 있지 않다. 하지만 기본적으로 최대 X 바이트를 읽고 멈출 수 있습니다. http://stackoverflow.com/questions/15445504/copy-inputstream-abort-operation-if-size-exceeds-limit – zapl

답변

1

체크 this question, 현재 웹 소켓 스펙에서 데이터 그램을 사용할 수없는 것처럼 보입니다.

+0

대단히 감사합니다. 레오! 적어도 내 문제는 좁혀졌다. 자, 내가 java-websocket에 적용하는 법만 알아낼 수 있다면 ... –

관련 문제