高效rudp之数据控制块管理

rudp( 可靠 UDP 传输 ) 模块中,数据控制 ( 标记为: PCB) 是保存逻辑连接相关信息的结构对象, PCB 是和端口一一对应的,它包含本地端口 、本地 IP 、远程端口、远程 IP 地址、未发送报文段队列、未确认报文段队列、接收 buffer 等。 PCB 的生成、查找、销毁等管理工作由 PCB 管理模块(简称 PCBMgr )负责。
PCB 的生成和端口的生成是同时发生的,当发起一个连接或者接受一个连接时,堆栈要分配一个当前未启用的端口号,同时生成和端口号相对应的 PCB
在很多可靠传输堆栈版本中, PCB 的管理是个链表结构,采用该结构,插入以及删除节点等维护成本比较低,便于为各种状态的节点集合做 cache 。由链表结构我们知道查询的时间复杂度为 O(n ), 在大量连接存在的情况下,查询效率不够理想。在连接的整个生存期,进行最多的是数据的传输,在数据传输过程中,由报文头中的逻辑端口号查询对应 PCB 是必经之路,所以如果采用 map 结构维护端口号和 PCB 的关系,查询时间复杂度为 O ( �Sn), 大大降低查询的时间复杂度。由此笔者推荐 PCBMgr 采用 map 结构保存端口号和 PCB 的对应关系。
 

你可能感兴趣的:(IP,UDP,传输,高效,可靠,rudp)