在该系统中,为完成TCP粘合并且保证TCP通信的可靠性,必须能够正确识别接收到的数据包类型;同时由于实际网络数据传输的延时,在一个客户端通信过程中可能会插入很多其他客户端发起的新的连接请求,系统内部根据对CAM查找返回的地址来区分不同的数据流,因此要对内部地址空间进行有效的释放回收,为处理网络通信异常中断而导致内部地址无法回收而引入定时器机制;在数据发送部分,客户端数据发送模块伪装成服务器与客户端完成TCP三次握手协议;服务器数据发送模块则伪装成客户端与服务器完成TCP三次握手协议。双方在通信过程中转发对方的数据包。
2.2.1 数据收发
对于系统的发送接口来说,所有发送数据包的转发由数据包映射单元完成,因此发送接口仅完成简单的数据包转发功能。而当系统接收到数据包时,要对数据包进行协议解析,从而决定数据包后端处理的方式。在接收部分主要对三种数据包进行区分:(1)双方发起连接的SYN数据包。这表示一个新连接的发起,因此交给地址管理单元,为它分配一个新的地址空间,同时要求发送端返回一个ACK数据包;(2)客户端发来的GET数据包中含有客户端所需信息的URL地址,将该数据包送给字符串匹配表以获得该信息所在后端服务器的位置;(3)双方通信的普通数据包。该数据包交给数据包映射单元实现双发的通信。具体接收的状态转换图如图3所示。
2.2.2 地址管理单元
在地址管理的方式上,在此处利用一个地址链表进行管理,如图4所示。
每次地址管理单元接收到新的请求连接就从链表的头部取出该可用地址空间,将新请求的SIP、DIP信息写入该地址的CAM中,同时在该地址对应的SSRAM的页面中写入相关的信息,假设链表中取出地址为n,页面大小为m,则SSRAM中对应的页面起始地址l为:
l=n×m
当地址管理单元接收到字符串匹配表返回的后端服务器位置信息时,首先通过该数据包的SIP、DIP从CAM中查找该数据流对应的地址,通过上述计算公式找出SSRAM中对应的页面,写入返回信息。
对于地址空间的回收,为防止通信异常中断而无法回收地址,在系统中采用定时器机制,即在一段时间后对SSRAM中的定时器标志位进行检测,一旦发现该标志位过时则通知地址管理单元回收地址。地址管理单元收到某一地址过时的信息后,将该地址挂在地址管理链表尾部,同时清除该地址CAM中的SIP、DIP信息。这样当同一IP发起新的连接时就不会查找到过时信息。