为什么 SSH 最大数据包大小为 32k?

信息安全 SSH 标准
2021-08-18 06:32:14

我的问题有两个部分。

首先,为什么 SSH 服务器必须具有至少 32678 位的最大数据包大小?对于 SSH 的大多数用途(不包括文件传输)来说,这似乎有点过分。这种大小的 SSH 数据包很常见,还是专门用于文件传输?

其次,忽略标准并支持较小的最大数据包大小是否不明智?我正在开发一个 RAM 使用率非常低的 SSH 堆栈,我根本无法支持如此大的数据包大小。例如,我能否支持最高 4096 的数据包,并确保某些服务(例如文件传输)从未使用过?

谢谢

1个回答

首先,为什么 SSH 服务器必须具有至少 32678 位的最大数据包大小?

因为它是IETF 标准 (RFC 4253),如果您希望与使用此标准的其他应用程序保持互操作性,您应该遵循它。如果你选择不同的情人值,迟早你可能会遇到意想不到的错误。

说其他工具不支持这么大的数据包是不正确的。OpenSSH 我们使用256 K的最大数据包大小。

其次,忽略标准并支持较小的最大数据包大小是否不明智?

嗯……你可以试试。如果实现的方式是有一个您可以稍后更改的常量,您将实现它并查看您的客户和您的用例会发生什么。它始终取决于您的目标是什么兼容性。如果您想支持您经营的少数客户,那可能还可以,但如果您的目标是为未知客户提供公共服务,那可能是个坏主意。