高效rudp之数据控制块管理
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://cmsbai.blog.51cto.com/330479/73665 |
在rudp(可靠UDP传输)模块中,数据控制(标记为:PCB)是保存逻辑连接相关信息的结构对象,PCB是和端口一一对应的,它包含本地端口 、本地IP、远程端口、远程IP地址、未发送报文段队列、未确认报文段队列、接收buffer等。PCB的生成、查找、销毁等管理工作由PCB管理模块(简称PCBMgr)负责。
PCB的生成和端口的生成是同时发生的,当发起一个连接或者接受一个连接时,堆栈要分配一个当前未启用的端口号,同时生成和端口号相对应的PCB。
在很多可靠传输堆栈版本中,PCB的管理是个链表结构,采用该结构,插入以及删除节点等维护成本比较低,便于为各种状态的节点集合做cache。由链表结构我们知道查询的时间复杂度为O(n),在大量连接存在的情况下,查询效率不够理想。在连接的整个生存期,进行最多的是数据的传输,在数据传输过程中,由报文头中的逻辑端口号查询对应PCB是必经之路,所以如果采用map结构维护端口号和PCB的关系,查询时间复杂度为O(㏒n),大大降低查询的时间复杂度。由此笔者推荐PCBMgr采用map结构保存端口号和PCB的对应关系。
本文出自 “茶余随想” 博客,请务必保留此出处http://cmsbai.blog.51cto.com/330479/73665 本文出自 51CTO.COM技术博客 |


cmsbai
博客统计信息
热门文章
最新评论
友情链接