计算机网络部分(一)
为了加强自己的理解,并更好的梳理知识点,开始用博客记录,相当于对外输出吧(模拟给人讲题
1.拥塞控制
拥塞控制有两种算法,一种是慢启动算法;另一种是拥塞避免算法。
慢启动算法是:将拥塞窗口(cwnd)一开始设为1个报文段。每收到一个ACK,拥塞窗口就扩大一个报文段。第一次发送,接收方(服务器)回一个ACK,则发送方下次可以发送1+1=2个报文段,之后会收到两个ACK,CWND就变为了2+2=4个报文段,属于指数增长。
拥塞避免算法:是在收到一个ACK时,令CWND= ,单位为报文段,其实就是线性增长,如果这次是16个报文段,则下次就是(1+1/16)*16=17个报文段。
分为两种情况:
①发生超时
一开始先慢启动,并设定一个阈值SSThresh,当CWND大于这个阈值时,就进入拥塞避免算法。即
CWND<SSThresh ---------------------->慢启动
CWND>SSThresh ---------------------->拥塞避免
若遇到了网络拥塞,SSThresh会变为此时CWND的1/2,CWND变为1,并又进入慢启动,重复过程。
②重复的确认(快速重传+快速恢复)
若连续3次收到同一个ACK,说明有包丢失了,而不是出现了拥塞,发送方直接重传这个包。具体执行过程:
收到第3个重复的包,SSThresh变为此时CWND的1/2,重传报文段,CWND直接变为新的SSthresh+3个报文段(也有说直接变为新的SSThresh)。【这部分叫快速恢复】
之后每重复收到一个ACK,CWND=CWND+1,直到收到新数据的确认,并将CWND变为SSThresh+1个报文段。