在 TCP 连接上使用 SSL 是否有带宽开销?我当然了解加密和解密数据包的处理/内存使用开销,但就带宽而言,如果有的话,有什么区别?
例如,给定一个 64KB 的 XML 文件,通过 HTTP 和 HTTPS 传输文件的大小会有什么明显差异吗?(当然,忽略mod_deflate
和)mod_gzip
答案1
有些,但主要是在协商阶段。一旦过了这个阶段,带宽性能就接近 1:1。
所有使用的算法(我想是所有..如果我错了请纠正我)都会转换数据,保持输入和输出之间的大小相同。
这里需要注意的是,密码具有特定的“块大小”,即每个数据块必须达到加密的大小;如果消息不够大,则会插入垃圾数据进行填充。这些块大小非常小(最大的块是 RSA,其中消息大小等于密钥大小,因此为 1-2 千比特,但这仅用于握手),但在处理大量小消息时可能会产生开销。
答案2
由于开销,数据包有效负载减少。SSL 加密密钥大小也是一个因素。密钥越大,为了安全起见,所需的处理能力就越大。
要测试 SSL,请使用 SCP 通过 SSH 或 SFTP 将文件复制到服务器。现在尝试使用 FTP 进行相同的复制。我建议您通过 SSH 使用 RSYNC,然后将 RSYNC 作为守护进程(无加密)。
如果 SSL 处理是一个因素,请为您的服务器购买 SSL 加速器。