赖勇浩(http://laiyonghao.com)
最近在折腾项目在腾讯开放平台的上线问题。其中有一点是网络协议的设计与实现。应用层协议很容易解决:我们使用 google protobuf 的 RPC。一开始,我们直接在 TCP 协议之上实现的,随着以下 3 个需求的出现,我的麻烦大了:
1、服务器应用运行在腾讯云计算服务器时,需要接入 TGW(见
http://wiki.open.qq.com/wiki/TGW),这需要对我们的应用协议进行改造;
2、腾讯云计算的服务器
只能开放 8001-8010 总共 10 个端口给应用服务器程序,申请开放更多端口是非常麻烦的,所以需要自己实现一个端口转发(PF)协议;
3、作为一个网游,客户端和服务器端的通信必须加密,所以需要实现安全协议(SEC)。
这些协议都很简单,实现起来也在我的能力范围之内,所以今天请教大家不是怎么实现端口转发,或者如何设计通信的加解密;而是当这些协议和开发和运营场景结合起来时需要实现以下 6 个组合(见上图):
6、基于 TCP 的 RPC,防火墙内的多个应用进程间通信用;
5、带加密的基于 TCP 的 RPC,开发期或在非腾讯平台运营时用;
4、带端口转发的加密的基于 TCP 的 RPC,应用场景同上;
3、在 4 的基础上加上 TGW 协议;部署在腾讯云计算正式运营时用;
2、在 5 的基础上加上 TGW 协议;
1、在 6 的基础上加上 TGW 协议。
以上的协议中,3、4、6 是我们马上就要用到的。
当然,实现的时候,我可以自己手动写 6 个协议类,然后根据使用场景实例化合适的类给 RPC 作为传输层协议使用就可以了。但作为对程序设计有点追求的人,我希望能够只是设计 TGW、PF、SEC 3 个类,然后在使用时进行组合。如何设计这 3 个类,就是我今天想请教大家的问题。
再补充几点:设计的方案最好能够比较方便地用几种语言实现,就我们项目而言,至少要方便使用 Python 和 ActionScript 3 实现。
以上是问题的描述,欢迎大家一起探讨,谢谢大家。
分享到:
相关推荐
求教 现在的主流3D网络游戏开发都使用哪些技术.pdf
求教现在的主流3D网络游戏开发都使用哪些技术.doc
在ACCESS里,数据库插入的时候,运行出现问题,求高手们帮忙,万分感谢
NULL 博文链接:https://jiangxiao-2000.iteye.com/blog/1897709
C#界面编写学习,51单片机学习
递归与栈溢出 anya Re: Excel 规划求解问题,求助,请教!! anya Re: anya:请教一个问题 anya Re: 如何给汉字分界? anya Re: 八皇后算法问题请教? anya Re: 急寻图象压缩算法 anya 游戏中最佳路径的问题 ...
S函数最大功率跟踪采用的是三次插值方法求教指出错误-mppt.mdl 这是仿真模型和错误原因图 附件: sfun_mppt.m S函数程序 mppt.mdl 插值仿真模型 错误.jpg ...
公式求教共4页.pdf.zip
基于CAN的OSEKCOM规范研究与实现 简要介绍了OSEK COM 规范和CAN 总线 技术,提出了一个基于CAN 的TH-OSEK COM通信模型和实现方案,并对该方案的应用情况做了分析和展望。
1.2 可行性研究与需求分析 3 1.2.1 可行性研究 3 1.2.2 需求分析 3 1.3.1 家教求职管理 4 1.3.2 家长求教管理 4 1.3.3 网页制作管理 4 1.3.4 软件开发管理 5 2 系统功能设计 6 2.1 系统主窗体 7 2.2 家教信息管理...
求教电力系统仿真-039THDAT.DAT 小弟要做毕业设计,才对matlab入门。现在要用matlab仿真一个39-bus的电力系统在一个故障(如其中一条母线三相短路)清除后的一小段时间,各种发电机的功角特性图,请大神告知详细...
从文件读取数据到员工对象中,并对员工对象属性比较和修改: 在文件emp.txt中存有雇员信息,分别有字段emp_id(编号),emp_name(姓名),job(工作),salary(薪资)将雇员信息从文件中读出,放入雇员类Emp的实例中,并遍历...
PHP推广链接的修改,求教 这两个文件可以随时互换的,只是推广链接的形式不同;
;输出4行*,第一行一个*,第二行2个* ,依次递加,居中显示。 assume cs:code,ds:data, ss:stack data segment data ends stack segment dw 256 dup (0) stack ends code segment ... loop1: mov bp,0
S函数最大功率跟踪采用的是三次插值方法求教指出错误-sfun_mppt.m 这是仿真模型和错误原因图 附件: sfun_mppt.m S函数程序 mppt.mdl 插值仿真模型 错误....
MSN错误解决方法详解,msn求教:80072eff错误,暂时无法使用您的联系人列表_百度知道
求教一道关于求解最优化问题的编程问题~
请高手破解注册码,软件没有加壳,所有请告诉把注册码搞出来