RST过程
除了SYN-SENT状态外的其它状态中,所有的RST数据段可以通过检查SEQ域查明 。假如序列号在接收窗口中,RST是有效的 。当连接处于SYN-SENT状态时,假如ACK域确认SYN,那么RST也是合法的 。
RST的接收方首先确认它的合法性,然后进行状态转换 。假如接收方处于LISTEN状态,它就忽略RST包 。假如接收方处于SYN-RECEIVED状态,而且以前处于LISTEN状态,接收方返回LISTEN状态,否则接收方关闭连接进入CLOSED状态 。当接收方处于其它状态时,直接关闭连接回到CLOSED状态 。
3.5. 关闭连接
CLOSE是一个操作,它的意思就是“本方已经有数据发送” 。由于是全双工的,所以会造成一些麻烦,因为接收方对于处理接收方的连接有点麻烦 。我们以一种简单的方式对待CLOSE,发送CLOSE的一方在接收到对方的CLOSED之前,还要继续接收数据 。因此程序可以在一个CLOSE之后初始化几个SEND,然后开始RECEIVE,直到接收到对方的CLOSED而RECEIVE失败为止 。我们假设TCP可以通知用户连接关闭,即使仍在RECEIVE也可以,这样用户就可以正常关闭了 。这样,TCP可以在连接关闭前可靠地发送数据 。下面列举了三种基本情况:
情况1:本地用户关闭
这种情况下,可以建立一个FIN段放入发送队列 。TCP不再接收用户的SEND指令,TCP进入FIN-WAIT-1状态 。RECEIVE在这种状态下是答应的 。所有数据段和FIN在未接收到确认以前会一直发送 。当另一个TCP确认FIN,并发送自己的FIN后,本地的TCP可以确认这个FIN了 。请注重,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增大 。它们三者在不同的时间增大,这是因为传送时延造成的 。而增大多少则由数据段中数据的大小决定 。注重:连接进入ESTABLISHED状态后,所有的段必须包括当前的确认信息 。而CLOSE用户操作的性质类型于推操作,这和在接收到的数据段中的FIN标记一样 。
重传超时
因为网络中有不类型的网络,而使用TCP的范围又很广,因此重传超时必须动态决定 。下面给出一个例子,通过例子可以看出确定重传超时的过程 。下面有两个变量说明时延的问题,一个是环路时间(RTT),它是由一个序列码得到的,这个序列码在发送时给出,在接收到确认时被覆盖;另一个平滑环路时间(SRTT):
推荐阅读
- 高压锅压绿豆汤需要多少时间
- 高温消毒多长时间最佳
- 宿迁有高铁吗 宿迁有没有高铁
- 如何提高鸡种蛋受精率
- 年龄大的人还会出现心梗吗,人到一定年龄,心脏也渐渐显老态,高血压,冠心病,糖尿病,心经梗塞纷纷找上门来,如何预防这类病症的
- 螃蟹能带上高铁吗 可以带螃蟹上高铁吗
- k火车时速一般多少
- 稻城亚丁有高原反应吗
- 什么是高热量食物有哪些 高热量食物有哪些
- 高利贷需要偿还吗
