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