计算机网络--Ch5.传输层(三)

130 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的33天,点击查看活动详情

六.流量控制

流量控制:让发送方慢点,要让接收方来得及接收。 TCP利用滑动窗口机制实现流量控制。

image-20221110215217422

A向B发送数据,连接建立时,B告诉A:“我的rwnd=400(字节)”,设每一个报文段100B,报文段序号初始值为1。

image-20221110215302972

TCP为每一个连接设有一个持续 ​ 计时器,只要TCP连接的一方收 ​ 到对方的零窗口通知,就启动 ​ 持续计时器。

若持续计时器设置的时间到期, ​ 就发送一个零窗口探测报文段。 ​ 接收方收到探测报文段时给出 ​ 现在的窗口值。

若窗口仍然是0,那么发送方就 ​ 重新设置持续计时器。

七.拥塞控制

image-20221110224052142

1.拥塞控制四种算法

image-20221110224128443

2.慢开始和拥塞避免

image-20221110224202367

一个最大报文段长度MSS

一个传输轮次: 发送了一批报文段 并收到它们的确认 的时间。 一个往返时延RTT。 开始发送一批拥塞 窗口内的报文段到 开始发送下一批拥 塞窗口内的报文段 的时间。

3.快重传和快恢复

image-20221110224254855

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状态。