day11(停止等待、超时重传、流水线传输、窗口、拥塞控制、三报文握手)
- IP层提供的是最大努力服务,所以TCP下面的网络是不可靠的传输,所以要使用一些协议来使两个运输层的通信变得可靠。
- 停止等待协议,超时重传。每次发送完一个分组就 设置一个超时计时器,如果收到对方的确认,就撤销已设置的超时计时器。
- 流水线传输,相比于停止等待协议提高了信道的利用率,可以连续的发送分组。使用流水线传输就需要 连续ARQ协议和滑动窗口协议。
连续ARQ规定,每收到一个确认就把发送窗口向前滑动一个分组位置。接收方一般都是累积确认,对按序到达的最后一个分组发送确认。
若确认号=N,则表示序列号到N-1之为止的所有数据都已正确收到。
数据偏移,占四位,四位最大就是15,所以TCP最大首部就是15*4=60字节。(即选项长度不能超过40字节)
窗口,窗口字段明确的指出了现在允许对方发送的数据量,该值经常是动态的。 - 超时重传的时间,采用加权平均往返时间。只要重传了,就不用本次的往返时间做样本,且每重传一次,就把当前的重传时间增倍。
- 如果使用选择确认,就要在TCP的首部加上“允许SACK”的选项。
- TCP的实现中,广泛的使用Nagle算法。就是先发一个字节,收到确认再发送缓存的数据报。且当到达的数据已达到发送窗口大小的一半或已达到报文段的最大长度,就立即发送数据报,可以有效的提高吞吐量。
- TCP的拥塞控制,拥塞控制就是防止过多的数据被注入到网络,可以使得路由或链路不超载。判断拥塞的依据就是超时。
TCP拥塞控制有四种方法:慢开始、拥塞避免、快重传、快恢复。
慢开始:主机开始发送数据时,不清楚网络负荷没所以由小到大逐渐增大发送窗口。初始设置为1,每收到一个新报文段的确认就拥塞窗口加1,。所以每经过一个传输轮次,拥塞窗口就加倍。设置一个慢开始门限,当窗口小于门限使用慢开始算法,当窗口大于门限时停止慢开始算法使用拥塞避免算法,当等于门限时两个算法都可以使用。
拥塞避免:拥塞避免是让拥塞窗口缓慢的增大,没进过一个往返时间RTT就把发送方的拥塞窗口加1,而不是像慢开始那样加倍。
快重传:快重传算法要求接收方不要等待自己发送数据时才进行捎带确认,二是要立即发送确认,即使收到失序的报文段也要立即发出对已接受到的报文段的重复确认。当一连收到3个重复确认的时候,就知道接收方确实没收到报文段,因而立即进行重传。这样就不会出现超时,发送方也就不会误认为出现了网络拥塞,提高了吞吐量。
快恢复:一旦收到三个重复确认,门限值马上减半!同时设置拥塞窗口等于减半的门限值,并开始执行拥塞避免算法!
8. 为了避免全局同步的情况,提出了 主动队列管理AQM。
9. 三报文握手方法,防止发送方的报文滞留后到达接收方,接收方误以为是一个新的连接请求。