最近我陷入了网络困境,我看到有人用 ssh 创建自己的代理。我想知道我是否可以用原始 tcp 做同样的事情?
答案1
是也不是,这取决于您对“原始 TCP”的实际定义。
一方面,任何可以通过 SSH 实现的功能,只要付出一些努力,都可以通过“原始 TCP”(或任何其他面向流的协议)来实现。事实上,SSH 本身毕竟所有操作都是通过 TCP 进行的。
另一方面,要使代理真正有用,你通常至少需要一个允许客户端指定的协议在哪里它希望代理连接...所以一旦你有这种代理协议,它有点儿不再是“原始 TCP”而成为“TCP 上的代理协议”?
(当然你的客户端软件需要知道如何使用代理……)
您是否可以在不使用 SSH 提供的加密和身份验证功能的情况下,仅使用一些通过普通 TCP 的基本命令来实现这一点?当然可以。这种类型的代理在 SSH 出现之前就已经存在;目前使用的最常见示例是“HTTP 代理”(基本上就是 HTTP,只是请求略有不同)和 SOCKS,这两种都是非常基本的协议,无需任何附加层即可直接在 TCP 上运行。
(您经常会看到 SOCKS 与 SSH 一起使用,但实际上它是一个完全独立的基于 TCP 的协议,SSH 客户端知道如何模拟它;它的流行程度为什么它通常与 SSH 一起使用。有独立的 SOCKS 服务器,例如 Dante,您可能可以在 15 分钟内编写自己的 SOCKS 代理。
一般来说,几乎任何东西都可以通过代理或隧道传输。