改进的停止-等待协议 实现了可靠传输,TCP实现可靠传输机制于此基本相同,
可靠传输使用了错误检测、序号、确认与确认号,窗口、超时重传等技术。 下面具体介绍:
序号:TCP使用32位的序号,序号是针对字节的,也就是说,TCP报文段中的每一个字节的数据都有一个序号,
32位足够长了,几乎不可能重复,TCP是全双工的双线通信,两个方向的数据流使用各自的序号,由发送方->接受方的序号从小到大编号,
由接收方->发送方的序号由大到小编号,两个方向独立编排,互不相关。
确认与确认号:TCP是全双工通信,所以ACK没有必要单独发送,
接收方把ACK与数据放在同一个报文段中发给发送方:捎带确认。TCP的确认号也是32位,
含义也是:序号在这个确认号之前的数据都已收到,希望继续接受报文段(新序号)。
窗口: 在TCP中,窗口大小由接收方根据情况确定。TCP首部有一个16位的接收窗口字段,
接收方接收方根据该字段 通知发送方窗口大小。不同报文段中接收窗口字段的值可以不同。
当接收方没有内存接收数据时,可以把接收窗口置为0,发送方就停止发送了。
由此可见,发送方的发送速率是由接收方根据自己的接受能力控制的。
超时重传: TCP每发送一个报文段,就启动一个计时器开始计时,在超时后,
若是没有收到ACK->就重传这一报文段,关键是超时时间的确定,由于网络状况不断变化,
所以TCP采用了一个随时往返时延,再加权平均的方法(极简表述,详情请见百度百科:TCP超时重传机制)。