售前电话
135-3656-7657
售前电话 : 135-3656-7657
1、重传控制
前已述及,TCP采用超时重传机制,其关键问题是如何确定重传定时器的值0从理论上来说,应该取为报文往返传输时间(RTF-Round-TripTime)。在点到点数据链路中,RTF基本上是固定值;而在Internet中,RTT随网络负荷状态会有很大的变化。通常按下式进行动态调整:
RTF=aRTI'+(l-a)M式中,M为实测环回时间,就是收到段确认时间和段发出时间之差。a为平滑因子,典型值为a=7/8。重传定时值可按下述两种方法确定:
·定时值=/J*R订,/3=2。
.定时值=RTF+4*D,D=aD+(l-a)IRIT-MI。
其中,第二种方法更为灵活,为目前大多数TCP实现所采用。
进一步要考虑的一个问题是,当重传后收到确认时如何动态估算R竹,其难点是无法判知该确认段是对原始报文段的确认还是对重发报文段的确认,也就是无法确定M。为此,目前采用的算法是:每重传一次,RTF增加一倍。
2.滑动窗口控制
在TCP中,滑动窗口大小是动态变化的,由接收方控制,其值等于接收方缓冲区的可用空间,藉以保证报文段到达接收方后不会溢出。其机理可由图2.38说明:
设接收方TCP实体分配有4KB缓冲区。发送方首次发送2KB报文段,接收方回送确认时就将窗口大小设定为2KB,告诉发送方缓冲区只剩2KB空间了。发送方第二次再送2KB报文段,接收方缓冲区全部占满,于是回送确认并置窗口大小为零,即闭塞发送方。当应用进程读走2KB数据层,接收方再主动发送一个控制段,告之窗口大小已开至2KB。
当窗口为零时,发送方允许发送两种报文段。一是紧急数据,其目的是中断远端进程。二是发送1字节的测试段,其目的是让对端再回送一次窗口大小,以防对方发送的窗口已打开的通告段丢失造成连接永久性的关闭。
3.传输控制的改进算法
TCP传输的一个重要性能是带宽利用率。由于IP报头和TCP段头要占40个字节(不计任选部分),因此一次传送的数据虽越大,传输资源的利用率就越高。但是TCP协议本身并没有考虑这个问题,它允许逐个字节的传送以加快传送速度,在某些情况下就会产生严重的问题。现以图2.39为例予以说明。
图(a)表示一个至远程交互式编辑器的TE1NEf连接。本地用户每输入一个字符,TCP就将其送出(1字节数据)。编辑器侧TCP立即回送确认段(无数据)。当编辑器读入该字节后又回送窗口更新段(尤数据),最后编辑器处理完后将字符交TCP送回(1字节数据)。这样,为了送1个字符耗用了162字节的带宽。此问题出在发送方发送l字节的报文段。
图(b)假设发送方TCP一次发送大量数据,使接收方缓冲区满,窗口关闭。但是接收方进程处理时一次只读入1个字节。每读入1个字节,接收方TCP发现缓冲区有1个字节的空间,就立即发送窗口更新通告,于是发送方再送1个字节,窗口又关闭。如此,又造成逐个字节发送的情况。此问题出在接收方不动脑子,一发现有1个字节的缓存空间就迫不急待地发送窗口更新通告,故称为傻瓜窗口综合症(sillywindowsyndrome)。
现已对上述两类问题提出解决方案:
(1)发送方策略:奈格尔(NaG1e)算法
当发送方进程每次一个字节地向TCP写入数据时,TCP只发送第1个字节,将后续字节缓存。待收到第1字节的确认后,再将缓冲区中的所有字节装成一个报文段发出,然后继续缓存。如果接收方处理太慢,致使发送方缓存数据量已达窗口的一半或已为一个最大长度报文段,则可发送--个新的数据报。此算法已在TCP实现中广为使用Q(2)接收方策略:克拉克(Clark)方案接收方须待缓冲区可用空间达最大报文段长度或达缓冲区容量半时才向发送方通告窗口更新。
(2)接收方策略:克拉克(Clark)方案
接收方须待缓冲区可用空间达最大报文段长度或达缓冲区容量-半时才向发送方通告窗口更新。