tcp代理如何重用连接?

发布于 2021-11-30 13:50:51 字数 310 浏览 730 评论 3

在写一个tcp代理服务器时,socket拷贝可以简单实现,但是如果当连接数很大时,代理服务器会出现大量连接。

假设接收客户端连接为src,服务端建立连接为dst,由于src端连接数无法减少,能否减少dst端的连接数呢?

ps:单纯使用tcp协议,在实验将多个src连接拷贝到同一dst连接时,代理失败


@乌龟壳 ,@中山野鬼

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦里兽 2021-11-30 23:25:41

就是说单纯tcp协议曾来说使用过五元组来描述一个完整的连接,如果多个src对应一个dst会出现dst不知道把消息转给谁的情况吧? 如果还是基于tcp协议做代理,那么修改方法比如基于tcp协议封装一个协议,在上层做区分?

眼眸里的那抹悲凉 2021-11-30 18:15:18

回复
根据实际情况分析,原理就是,怎么变只要保证信息完整就行了。但是有各种实际的限制比如性能啊,防火墙啊一系列东西,你得自己权衡。

少女情怀诗 2021-11-30 17:27:53

tcp是流协议,没有数据结构的信息,如果要合并dst,必须在src数据上再加一层协议来描述是哪个src,不然目标服务器不知道是谁发来的。

如果src的协议本身具有一定的包结构,并且包本身可以识别身份,那在代理处稍微解析下包的边界,然后按照一定次序发送就行了。

如果是没有特定结构,src是个无结构的流,dst也是无结构的流,那只能src和dst一一对应。

无论怎么改,其实都是信息的传递而已,改造前把socket本身当作一个信息考虑进去,就知道如果合并dst后,需要怎样调整以保证信息不丢失就行了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文