拥塞控制

拥塞控制是一种用来调整传输控制协议（TCP）连接单次发送的分组数量（单次发送量，在英文文献和程序代码中常叫做cwnd）的算法。它通过增减单次发送量逐步调整，使之逼近当前网络的承载量。如果单次发送量为1，此协议就退化为停等协议。单次发送量是以字节来做单位的；但是如果假设TCP每次传输都是按照最大报文段来发送数据的，那么也可以把数据包个数当作单次发送量的单位，所以有时我们说单次发送量增加1也就是增加相当于1个最大报文段的字节数。

算法 
拥塞控制假设分组的丢失都是由网络繁忙造成的。拥塞控制有三种动作，分别对应主机感受到的情况：
 收到一条新确认。这很好，表明当前的单次发送量小于网络的承载量。
 收到三条对同一分组的确认，即三条重复的确认。单次发送量往往大于3，例如发送序号为0、10、20、30、40的5条长度为10字节的分组，其中序号20的丢了，则返回的确认是10、20、20、20。3个20就是重复的确认。
 对某一条分组的确认迟迟未到，即超时。例如发送序号为0、10、20、30、40的5条长度为10字节的分组，其中序号30的丢了，则返回的确认是10、20、30、30。这才只有两条重复确认。然而刚刚说过，单次发送量往往大于3，所以超时更可能是因为不止一条分组或确认丢失而引起的，这说明网络比上一情况中的更加繁忙。

当主机收到一条新确认，此时可以增加单次发送量。若当前单次发送量小于倍增阈限（在英文文献和程序代码中常叫做ssthresh），则单次发送量加倍（乘以2），即指数增长；否则单次发送量加1，即线性增长。

当主机收到三条重复的确认——单次发送量减半，倍增阈限等于单次发送量。（进入线性增长期）

当主机探测到超时——倍增阈限=单次发送量÷2，单次发送量=1。

参考 

传输层协议
技术问题
封包