- TCP连接的建立。
服务器通过执行LISTEN 和 ACCEPT 被动接收一个进来的连接请求,客户端执行一个CONNECT原语,同时指定IP地址、端口、愿意接受的最大TCP分段长度,以及一些用户数据(例如用户口令)。
- TCP连接的释放
TCP是一个全双工协议。通过四次挥手释放连接。两端需要发送一个FIN、ACK(确认对方的FIN)。
- TCP的传输策略
Nagla算法:当数据以每次一个字节方式进去发送方时,发送方第一次只发送一个字节,然后将其余的字节缓冲起来,直到第一个字节被确认时。再将缓冲区里的数据发送出去。
Clark算法:禁止接收方发送只有一个字节的口更新数据段。它必须等待一段时间,直到有了一定数量的可用空间之后再告知对方。
- TCP的拥塞控制
拥塞控制取决于三个值。有效窗口值、拥塞窗口、阀值。
有效窗口:【接收方认为没有问题的最大窗口值】【发送方认为没有问题的最大窗口值】这两者之间的最小值。
拥塞窗口:在建立连接后,发送方将窗口初始化为该连接上使用最大的数据段长度,之后呈指数增加窗口大小。直到数据包出现超时,超时的窗口值就是拥塞窗口值。
阀值:初始化为64kb,当出现超时,就将阀值设为当前超时窗口的一半。
- 快重传
当发送方连续收到三个重复的ACK报文时,直接重传对方尚未收到的报文段,而不必等待那个报文段设置重传定时器超时。
- 快恢复
当发送方收到连续三个冗余的ACK时,执行“乘法减少”算法,把慢开始门限ssthresh设置为出现为发送方cwnd的一半。
- 慢开始
当出现拥塞时,将cwnd值设置1,之后x2的倍数递增。当达到上一个拥塞值的一半时,开始加1递增。