三台计算机, A在公网 B,C在不同的内网
问题:C如何连接B的22端口
理论: 首先C发起连接到A的8000端口,建立一个【C机器的第1个连接】
然后B发起连接到A的8000端口,连接后,找到C建立的连接,进行PIPE,
C发起连接到本地的22端口建立【C机器的第2个连接】,【C机器的第2个连接】和【C机器的第1个连接】进行PIPE
问题: C机器不知道该何时去建立【C机器的第2个连接】,如何能知道B机器已经连接到了A机器,并且建立好了PIPE?
如何能知道B机器已经连接到了A机器,并且建立好了PIPE?
这个B通过A给C发个消息通知下就好了吧
貌似原帖中有笔误,你的目标应该是【B 连接 C 的 22 端口】,对吧?
A 在收到 B 的连接请求后,应该通过【C机器的第1个连接】给 C 发送一个消息,C 收到这个消息,就知道该去建立【第 2 个连接】了,同时对【第 1 个连接】进行协议转换,改为与【第 2 个连接】进行双向转发。
BTW,A 应该监听两个不同的端口,一个接收来自服务提供方(C)的连接,一个接收来自消费方(B)的连接,你现在这样都在 8000 端口接收连接,A 很难区分出一个新来的连接的目的。
如何能知道B机器已经连接到了A机器,并且建立好了PIPE?
这个B通过A给C发个消息通知下就好了吧
貌似原帖中有笔误,你的目标应该是【B 连接 C 的 22 端口】,对吧?
A 在收到 B 的连接请求后,应该通过【C机器的第1个连接】给 C 发送一个消息,C 收到这个消息,就知道该去建立【第 2 个连接】了,同时对【第 1 个连接】进行协议转换,改为与【第 2 个连接】进行双向转发。
BTW,A 应该监听两个不同的端口,一个接收来自服务提供方(C)的连接,一个接收来自消费方(B)的连接,你现在这样都在 8000 端口接收连接,A 很难区分出一个新来的连接的目的。