关于代理的改进想法

网络编程,如今已经封装为socket编程,无意大大的缓解了编程的难度。因为网络设备其实是多种多样的,上层人员如果去掌握这些网络设备,然后再实现他们的功能,可能不是很现实。

socket编程将程序简化为下面的形式:

A
B

然而A和B之间,其实还有很多其他的节点。

A
C
B

如果C是一个服务器,那有没有办法让A->B直接绕过C进行通信呀

A
C
B

如果A和B都是公网地址,好像比较简单,但是现在的应用很多都是,C是官网地址,A和B都是私网地址。
我在想socket上能不能做些修改或者伪装啥的,让A和B直接通信,C只负责调度问题,这样可以大大减少C的负担。

理想状态下,如果都是实行这个机制的话,以后的通信结构,就会变成第三方管理和调度,A和B的数据直达。

1
2
3
4
5
6
7
A
E
C
F
B
  • 在传统的数据流,想将数据从A传到B,需要链路是 1->2->3->4,也就是A->E->C->E->B。
  • 如果E和F是数据管理协调节点的话,那数据就应该走5->6链路,通过A->C->B。
  • 如果C节点是数据管理协调节点的话,那实际的数据就是走7链路,也就是A->B直达。

让我想到了什么呢,杜绝中间商赚差价。个人想法,欢迎交流。


现在有实现了,应该和RFC5389 中定义的STUN(Session Traversal Utilities for NAT)的TCP穿透差不多的想法。

除了这个,现在的P2P穿透主要是使用的UDP协议。

现在比较火的内网穿透开源程序frp主要的穿透方式应该是TURN(Traversal Using Relays around NAT:Relay Extensions to Session Traversal Utilities for NAT),就靠中间服务器来做数据的转递。

可以看看这个帖子文章-(P2P技术详解》系列文章),很有帮助。


参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值