系列文章目录
第一篇:语言基础
第二篇:设计模式
第三篇:数据库
第四篇:计算机网络
第五篇:操作系统
第六篇:LInux
第七篇:数据结构
第八篇:智力题
[21]简述 TCP 连接 和 关闭的状态转移
[22]简述 TCP 慢启动
慢启动(Slow Start),是传输控制协议(TCP)使用的一种阻塞控制机制。慢启动也叫做指数增长期。慢启动是指每次TCP接收窗口收到确认时都会增长。增加的大小就是已确认段的数目。这种情况一直保持到要么没有收到一些段,要么窗口大小到达预先定义的阈值。一旦到达阈值,TCP就会进入线性增长阶段。这时,每经过一个RTT窗口增长一个段。如果发生丢失事件,TCP就认为这是网络阻塞,就会采取措施减轻网络拥挤。(拥塞发生算法:超时重传、快速重传)
[23]说说 TCP 如何保证有序
序列号+确认应答号
主机每次发送数据时,TCP就给每个数据包分配一个序列号并且在一个特定的时间内等待接收主机对分配的这个序列号进行确认,如果发送主机在一个特定时间内没有收到接收主机的确认,则发送主机会重传此数据包。接收主机利用序列号对接收的数据进行确认,以便检测对方发送的数据是否有丢失或者乱序等,接收主机一旦收到已经顺序化的数据,它就将这些数据按正确的顺序重组成数据流并传递到高层进行处理。
具体步骤如下:
(1)为了保证数据包的可靠传递,发送方必须把已发送的数据包保留在缓冲区;并为每个已发送的数据包启动一个超时定时器;
(2)如在定时器超时之前收到了对方发来的应答信息(可能是对本包的应答,也可以是对本包后续包的应答),则释放该数据包占用的缓冲区;
(3)否则,重传该数据包,直到收到应答或重传次数超过规定的最大次数为止。
(4)接收方收到数据包后,先进行CRC校验,如果正确则把数据交给上层协议,然后给发送方发送一个累计应答包,表明该数据已收到,如果接收方正好也有数据要发给发送方,应答包也可方在数据包中捎带过去。
[24]如何解决TCP丢包、乱序和重复?(TCP 常见的拥塞控制算法有哪些)
拥塞控制主要是四个算法:慢启动 拥塞避免 拥塞发⽣(超时重传、快速重传) 快速恢复(连续收到三个ack确认)
超时重传:ssthresh 和 cwnd 的值会发⽣变化: ssthresh 设为 cwnd/2 , cwnd ᯿置为 1
快速重传:cwnd = cwnd/2 ,也就是设置为原来的⼀半; ssthresh = cwnd ;
快速恢复:cwnd = cwnd/2 ,也就是设置为原来的⼀半; ssthresh = cwnd ; 然后,进⼊快速恢复算法如下: 拥塞窗⼝ cwnd = ssthresh + 3<