T C P TCP TCP可以说是整个计算机网络最重要的协议之一,它的细节也非常多,本文只讨论几个出现在 408 408 408真题中的细节,
仅仅是面向408的一些内容.不过分纠结它在实际应用中是如何表现的.
在慢开始算法中,拥塞窗口的变化是什么样的?
这里涉及到 T C P TCP TCP协议的确认问题,对于拥塞窗口来说,它的变化仅仅取决于是否收到 A C K ACK ACK.比如TCP对每个数据段都发回确认的情况,此时拥塞窗口每收到一个对数据段的确认,那么它的大小就会增加 1 1 1,在宏观上表现为,经过一个 R T T RTT RTT,拥塞窗口扩大一倍.(可见2016年408的计算机网络大题).
这一点和 T C P TCP TCP的拥塞窗口阈值逻辑是一样的,比如当拥塞窗口阈值为 20 M S S 20MSS 20MSS,在慢开始阶段,拥塞窗口增长到 16 M S S 16MSS 16MSS后,不会继续增长为 32 M S S 32MSS 32MSS,是由于在整个慢开始阶段,最多还允许发送 4 M S S 4MSS 4MSS,所以从这里也可以看出,拥塞窗口的变化,仅仅取决于接收到的 A C K ACK ACK.
T C P TCP TCP拥有捎带确认的机制,所以常常不会对每个数据段发送确认,所以我们常常看到的拥塞窗口的变化和每次发送的数据段数量的变化是一致的.
设想一种情况,最大报文段为1B,拥塞窗口阈值为8B,接收窗口为15B,且接收窗口只有数据的输入,没有数据的取出,TCP对每个数据段进行确认,若最后一个报文段的最后2B丢失,分析此时的窗口变化.|
通过分析不难看出,最后一次刚好送出 8 B 8B 8B数据,且恰好填满接收窗口,发送端没有收到最后 2 B 2B 2B的确认,此时最后 2 B 2B 2B超时后,此时由于没有收到连续的 3 3 3个 A C K ACK ACK帧,个人认为应该执行的是慢开始算法.那么这个时候的拥塞窗口大小变为 13 B / 2 = 6 B 13B/2=6B 13B/2=6B,然后将发送窗口置为 1 B 1B 1B,经过一个 R T T RTT RTT后,收到的接收窗口大小为 1 B 1B 1B,拥塞窗口变为 2 B 2B 2B,所以再次发送 1 B 1B 1B数据,结束.
TCP连接释放时,服务器端最短需要多久就可以完成释放?
这个问题主要是涉及到一种 T C P TCP TCP状态的变化,即从 F I N _ W a i t 1 FIN\_Wait1 FIN_Wait1直接变为 T i m e _ W a i t Time\_Wait Time_Wait阶段.也就是说,客户释放的同时,服务器也没有数据要发送了,那么此时服务器对客户端的连接释放确认,和自己的连接释放的两次发送可以合并为一次发送,即所谓的三次挥手释放.
这样本来需要 1 R T T 1RTT 1RTT的时间可以缩减为 0.5 R T T 0.5RTT 0.5RTT,所以服务器端完成释放的最短时间是 1.5 R T T 1.5RTT 1.5RTT.