高效rudp之数据控制块管理
原创
©著作权归作者所有:来自51CTO博客作者cmsbai的原创作品,请联系作者获取转载授权,否则将追究法律责任
在rudp(可靠UDP传输)模块中,数据控制(标记为:PCB)是保存逻辑连接相关信息的结构对象,PCB是和端口一一对应的,它包含本地端口 、本地IP、远程端口、远程IP地址、未发送报文段队列、未确认报文段队列、接收buffer等。PCB的生成、查找、销毁等管理工作由PCB管理模块(简称PCBMgr)负责。
PCB的生成和端口的生成是同时发生的,当发起一个连接或者接受一个连接时,堆栈要分配一个当前未启用的端口号,同时生成和端口号相对应的PCB。
在很多可靠传输堆栈版本中,PCB的管理是个链表结构,采用该结构,插入以及删除节点等维护成本比较低,便于为各种状态的节点集合做cache。由链表结构我们知道查询的时间复杂度为O(n),在大量连接存在的情况下,查询效率不够理想。在连接的整个生存期,进行最多的是数据的传输,在数据传输过程中,由报文头中的逻辑端口号查询对应PCB是必经之路,所以如果采用map结构维护端口号和PCB的关系,查询时间复杂度为O(㏒n),大大降低查询的时间复杂度。由此笔者推荐PCBMgr采用map结构保存端口号和PCB的对应关系。
下一篇:QQ升级程序分析
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
《高效学习OpenGL》 之 点块纹理 纹理矩阵堆栈 q坐标
点块纹理和抗锯齿点的区别:启用点块纹理:glEnable(GL_POINT_S
opengl 点块纹理 q坐标 纹理矩阵堆栈 透视变换 -
《高效学习OpenGL》 之 控制光源的位置和方向
1.如何使光源保持静止在使用完视图和模型变换之前设置光源的位置,init()的后面,
opengl 光源的位置和方向 模型变换 ide #include