tcp代理如何重用连接?

Xsank 发布于 2015/07/31 10:08
阅读 453
收藏 0

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

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

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


@乌龟壳 ,@中山野鬼

加载中
0
乌龟壳
乌龟壳

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

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

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

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

乌龟壳
乌龟壳
回复 @Xsank : 根据实际情况分析,原理就是,怎么变只要保证信息完整就行了。但是有各种实际的限制比如性能啊,防火墙啊一系列东西,你得自己权衡。
Xsank
Xsank
就是说单纯tcp协议曾来说使用过五元组来描述一个完整的连接,如果多个src对应一个dst会出现dst不知道把消息转给谁的情况吧? 如果还是基于tcp协议做代理,那么修改方法比如基于tcp协议封装一个协议,在上层做区分?
返回顶部
顶部