0

我一直在为 TCP 和 UDP 网络编写一个库,并考虑使用数据包。目前我已经实现了一个包类,它可以像 C++ 标准库的流类一样使用(它有 << 和 >> 用于输入和读取数据)。我计划像这样发送数据包:

bytes 1-8        - uint64_t as the size of the packet.
bytes 8-size     - contents of the packet.

但是有一个问题。如果恶意客户端发送以 TB 为单位的大小和随机乱码作为填充物怎么办?服务器的内存充满了随机乱码,它将冻结/崩溃。

让服务器决定接收数据包的最大允许大小是个好主意吗?

或者我应该丢弃数据包并将数据作为流传输(读/写将完全由库的用户决定)?

(PS:我不是以英语为母语的人,所以请原谅我可能对语言的可怕使用。)

4

1 回答 1

1

是的,在服务器端设置最大允许大小。设置它以使服务器不会冻结/崩溃,但不会更小。可预测的行为应该是最高目标。

于 2013-05-27T13:08:51.280 回答