TCP 传输控制协议( 七 )


N了 。请注重,TCP也可以在确认FIN时不返回自己的FIN,直到用户关闭连接时再返回自
己的FIN 。
情况2:TCP从网络上接收到一个FIN
假如在没有请求的情况下收到FIN,TCP可以返回ACK并通知用户连接已经关闭 。用户可以
以CLOSE响应,TCP在发送完剩下的数据后发送自己的FIN,然后TCP等待对这个FIN的确认
,在接收到后,它关闭连接 。假如确认超时,可以关闭连接并通知用户完事 。
情况3:双方同时关闭
双方同时关闭会导致交换FIN 。双方会在收到对自己FIN的确认后关闭连接 。
 
3.6. 优先和安全
TCP的操作必须在两个优先级相同的端口间进行 。TCP使用的优先和安全参数在IP协议中
定义 。我们这里所说的安全/间隔就是指的IP中定义的优先,用户组和处理规定 。假如不
符合则发送RST 。这些内容请大家看上一节中的叙述 。TCP在操作过程中也会检查接收数
据段的优先级,还可以在操作中提高优先级 。虽然运行在无安全环境中,主机也必须能
够处理安全参数 。
3.7. 数据通信
建立了连接以后就是传送数据了,TCP通过重新传送保证每个数据段到达对方,因为有了
重新传送,所以对方可能接收到两个相同的包,那就必须根据内部的序列号判定哪个数
据段是可以接收的 。发送方通过使用SND.NXT跟踪下一个要发送的数据段,而接收方则跟
踪RCV.NXT来知道下一个要接收的数据段 。发送方要还未确认的最老的序列号保存于SND
.UNA 。
当发送方形成数据段并发送它后SND.NXT增大;当接收方接收到数据段后RCV.NXT增大并
发送确认;当发送方接收到确认后SND.UNA增大 。它们三者在不同的时间增大,这是因为
传送时延造成的 。而增大多少则由数据段中数据的大小决定 。注重:连接进入ESTABLIS
HED状态后,所有的段必须包括当前的确认信息 。而CLOSE用户操作的性质类型于推操作
,这和在接收到的数据段中的FIN标记一样 。
重传超时
因为网络中有不类型的网络,而使用TCP的范围又很广,因此重传超时必须动态决定 。下
面给出一个例子,通过例子可以看出确定重传超时的过程 。下面有两个变量说明时延的
问题,一个是环路时间(RTT),它是由一个序列码得到的,这个序列码在发送时给出,
在接收到确认时被覆盖;另一个平滑环路时间(SRTT):
SRTT = ( ALPHA * SRTT )((1-ALPHA) * RTT)
通过上面的式子,可以得到重传超时(RTO):
RTO = min[UBOUND,max[LBOUND,(BETA*SRTT)]]
其中UBOUND是超时的上界(如1分钟),LBOUND是超时的下界(如1秒钟),ALPHA是平滑
因子(如0.8到0.9),BETA是延时变量(如1.3到2.0) 。
传送紧急消息
TCP的紧急机制是答应发送者使接收者接收一些紧急消息,并让接收方在接收到这一消息
后马上通知用户 。这种机制是在数据流是加入一个点,指出这是紧急数据的结束点,当
接收方要接收到这个点之前,它会通知用户进入紧急状态,在接收到这个点的数据后,
它会通知用户进入通常状态 。假如这个紧急点在用户进入紧急状态时更新,这个更新必
须对用户透明 。
应用一个紧急域的方法可以达到上述目的,而URG控制标记则指明紧急域是否被使用,而
且在数据段中必须加入指示紧急点的序列号,假如没有这个标记则说明没有紧急点 。如
果需要发送紧急数据,发送方必须起码发送一个字节 。


治理窗口
假如我们学习过网络基础,我们一定知道有一个窗口协议,TCP中每个数据段都包括下一

推荐阅读