六.流量控制
流量控制:让发送方慢点,要让接收方来得及接收。 TCP利用滑动窗口机制实现流量控制。
A向B发送数据,连接建立时,B告诉A:“我的rwnd=400(字节)”,设每一个报文段100B,报文段序号初始值为1。
TCP为每一个连接设有一个持续 计时器,只要TCP连接的一方收 到对方的零窗口通知,就启动 持续计时器。
若持续计时器设置的时间到期, 就发送一个零窗口探测报文段。 接收方收到探测报文段时给出 现在的窗口值。
若窗口仍然是0,那么发送方就 重新设置持续计时器。
七.拥塞控制
1.拥塞控制四种算法
2.慢开始和拥塞避免
一个最大报文段长度MSS
一个传输轮次: 发送了一批报文段 并收到它们的确认 的时间。 一个往返时延RTT。 开始发送一批拥塞 窗口内的报文段到 开始发送下一批拥 塞窗口内的报文段 的时间。
3.快重传和快恢复
Ch5.疑难总结
1.MSS设置得太大或太小会有什么影响?
规定最大报文段M$S的大小并不是考虑到接收方的缓存可能放不下TCP报文段。实际上,MSS与接收窗口没有关系。TCP的报文段的数据部分,至少要加上40B的首部(TCP首部至少20B和IP首部至少20B),才能组装成一个IP数据报。若选择较小的MSS值,网络的利用率就很低。设想在极端情况下,当TCP报文段中只含有1B的数据时,在IP层传输的数据报的开销至少有40B。这样,网络的利用率就不会超过1/41。到了数据链路层还要加上一些开销,网络的利用率进一步降低。但反过来,若TCP报文段很长,那么在IP层传输时有可能要分解成多个短数据报片,在终端还要把收到的各数据报片装配成原来的TCP报文段。传输有差错时,还要进行重传。这些都会使开销增大。 因此,MSS应尽量大一些,只要在IP层传输时不要再分片就行。由于IP数据报所经历的路径是动态变化的,在一条路径上确定的不需要分片的MSS如果改走另一条路径,就可能需要进行分片。因此,最佳的MSS是很难确定的。MSS的默认值为536B,因此在因特网上的所有主机都能接收的报文段长度是536+20×TCP固定首部长度=556B。
2.为何不采用“三次握手”释放连接,且发送最后一次握手报文后要等待2MSL的时间呢?
原因有两个: 1)保证A发送的最后一个确认报文段能够到达B。如果A不等待2MSL,若A返回的最后确认报文段丢失,则B不能进入正常关闭状态,而A此时已经关闭,也不可能再重传。 2)防止出现“已失效的连接请求报文段”。A在发送最后一个确认报文段后,再经过2MSL可保证本连接持续的时间内所产生的所有报文段从网络中消失。造成错误的情形与下文(疑难点6)不采用“两次握手”建立连接所述的情形相同。 注意:服务器结束TCP连接的时间要比客户机早一些,因为客户机最后要等待2MSL后才可进入CLOSED状态。
标签:窗口,--,IP,报文,MSS,TCP,发送,Ch5,传输层 From: https://blog.51cto.com/u_15915681/6317191