集群的可扩展性及其分布式体系结构之十一
2008-12-01 11:02:51 来源:WEB开发网核心提示: 上图是TCP报文的常见结构图,我们将关注TCP报文在进行TCP Splicing的时候,集群的可扩展性及其分布式体系结构之十一(2),对于头20字节(TCP header 部分)所需要进行的修改工作, TCP是全双工的协议,需要做出重传的处理, 此外,这意味着通信的双方在两个方向上都能进行
上图是TCP报文的常见结构图。我们将关注TCP报文在进行TCP Splicing的时候,对于头20字节(TCP header 部分)所需要进行的修改工作。
TCP是全双工的协议,这意味着通信的双方在两个方向上都能进行数据传送的任务,每一端都必须为两个方向上的数据流维护序列号。维护序列号实用计数器机制,保证TCP协议能够知道哪些TCP报文是被确认过表示的,哪一些是仍未确认过的,下面是TCP Splicing均衡器使用的主要计数器:
Snd_nxt:表示下一个将要发送的报文的序列号。
Snd_una:表示最近一个尚未确认的但是已经发送过的报文的序列号。等效于发送端在这次连接中收到的应答报文的最大序列号。
Rcv_nxt:表示接下来期望收到的下一个报文序号。相当于已经收到的最大报文应答序号再加上1。正常情况是Rcv_nxt<=Snd_una。
以上的三个主要序号定义了TCP连接中(单个方向上的)的序列空间。我们可以假定该序列空间从0开始计数,一直到65535,然后重复(显然,TCP的具体实现中不会从0开始进行序号计数)。大于snd_nxt的序号的报文表示那些还没有发送的报文;小于rcv_nxt序号的报文表示那些发送出去之后收到的应答报文(这些被确认过的报文很有可能还待在缓冲区里面没有传递给应用程序)。如果应答报文在发送的途中丢失或者应答超时,我们就会发现:snd_una<rcv_nxt。需要做出重传的处理。
此外,序号空间中还必须有表示滑动窗体大小的snd_wnd;以及表示当前滑动窗体中最.大的待发送报文的序号snd_max。具体的可以看下图:
报文序号空间实例图
更多精彩
赞助商链接