Ive*_*Ive 5 .net sockets sslstream
当使用SSLStream到数据的"大"的块(1微克)发送到(已经认证)客户端,分组分段/ dissasembly我看到是FAR使用正常的NetworkStream当大于.
在客户端上使用异步读取(即BeginRead()),重复调用ReadCallback,使用完全相同大小的数据块直到最终数据包(数据的其余部分).对于我发送的数据(它是一个zip文件),段的长度恰好是16363个字节.注意:我的接收缓冲区比这大得多,改变它的大小没有任何影响
据我所知,SSL以不超过18Kb的块加密数据,但由于SSL位于TCP之上,我不认为SSL块的数量与TCP数据包碎片有任何关联吗?
从本质上讲,客户端完全读取数据的时间比使用标准NetworkStream要长20倍(都在localhost上!)
我错过了什么?
编辑:
我开始怀疑SSLStream的接收(或发送)缓冲区大小是有限的.即使我使用同步读取(即SSLStream.Read()),也不再有可用的数据,无论我在尝试读取之前等待多长时间.这与我将接收缓冲区限制为16363字节的行为相同.设置底层NetworkStream的SendBufferSize(在服务器上)和ReceiveBufferSize(在客户端上)无效.
这看起来像是由私有成员定义的 SslStream 应用的数据包数据大小限制:
SSLStream._SslState.MaxDataSize
Run Code Online (Sandbox Code Playgroud)
我很难理解为什么要应用此限制,或者是否可以更改它,并在这里提出了问题
| 归档时间: |
|
| 查看次数: |
1620 次 |
| 最近记录: |