本文主要是介绍关于代理的改进想法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
网络编程,如今已经封装为socket编程,无意大大的缓解了编程的难度。因为网络设备其实是多种多样的,上层人员如果去掌握这些网络设备,然后再实现他们的功能,可能不是很现实。
socket编程将程序简化为下面的形式:
然而A和B之间,其实还有很多其他的节点。
如果C是一个服务器,那有没有办法让A->B直接绕过C进行通信呀
如果A和B都是公网地址,好像比较简单,但是现在的应用很多都是,C是官网地址,A和B都是私网地址。
我在想socket上能不能做些修改或者伪装啥的,让A和B直接通信,C只负责调度问题,这样可以大大减少C的负担。
理想状态下,如果都是实行这个机制的话,以后的通信结构,就会变成第三方管理和调度,A和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技术详解》系列文章),很有帮助。
参考:
- P2P技术详解(三):P2P技术之STUN、TURN、ICE详解
这篇关于关于代理的改进想法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!