计算机网络:运输层(3)

一、TCP流量控制

如果发送方发送速率过快,接收方可能来不及接收,会造成数据的丢失,降低吞吐率。
流量控制就是控制发送方的发送速率,使接收方来得及接收。

1. 滑动窗口实现流量控制

滑动窗口机制可以方便地实现TCP连接上的流量控制。接收方回送确认时,将给出自己的接收窗口,发送方根据对方的接收窗口确定自己的发送窗口,就可以实现流量控制。
滑动窗口实现流量控制
在这个过程中,试想一种情况:B向A发送零窗口报文后,A等待B发送非零窗口通知;但B发送非零窗口通知时,该报文偶发丢失了。此时,A一直等待B发送非零窗口通知,而B等待A发送新的报文段;A与B循环等待,形成了死锁

为避免死锁的出现,TCP连接设有一个持续计时器。当TCP的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器到达设置的时间,就给接收方发送一个零窗口探测报文段(仅1字节)。接收方收到该报文段后,回送当前的接收窗口值。若rwnd仍为0,则持续计时器重新计时;否则,发送方就可以开始发送数据。

2. 传输效率问题

对于TCP,有三种不同的机制来控制TCP报文段的发送时机:

  1. TCP维持一个等于最大报文段长度MSS的变量,当缓存中存放数据到达MSS字节时,组装成一个TCP报文段发送;
  2. 由发送方进程指明要求发送报文段,即PUSH操作
  3. 发送方的一个计时器期限到了,就把当前缓存数据装入报文段发送。

尽管有这三种机制,但报文段的发送时机控制仍然是一个复杂的问题。主要遇到的问题是:

发送方糊涂窗口综合症

在某些进程(如Telnet服务)中,发送方可能每接收一个字节,就会开始发送报文段。这样,一个字节的数据加上TCP报文段和IP数据报的首部,就需要发送41字节的IP数据报。在这个数据报中,有效数据仅有一个字节,传输效率极低。

为解决此问题,TCP实现广泛采用了Nagle算法,其内容为:

  1. 当进程需要逐字节发送数据时,首先将第一个数据字节发送出去,后续的字节都缓存起来;
  2. 每当收到前一个报文段的确认时,把缓存中的数据组装成一个报文段发送;
  3. 若缓存中数据达到发送窗口大小的一半或者报文段最大长度时,立即发送一个报文段。

Negla算法可以在数据到达较快而网速较慢时,明显减少使用的网络带宽,并有效提高吞吐量。

接收方糊涂窗口综合症

TCP接收方的缓存已满,而应用进程每次只从缓存中读取一个字节,然后向发送方发送确认,且窗口值为1;接着发送方再发送41字节长的数据报(有效数据1字节)。这样进行下去,网络传输的效率极低,并且会导致网络性能恶化。

为解决此问题,可以让接收方等待一段时间,使其在已有足够空间容纳一个MSS报文段已有一半的空闲缓存时,再发送确认报文,通知接收窗口的大小。

Negla算法和接收等待配合使用,可以有效提高TCP的传输效率。

二、TCP拥塞控制

1. 拥塞的产生

计算机网路中,链路的带宽、结点的缓存和处理机等,都是网络资源
在某个时间段,若对网络中某一资源的需求超过了该资源所能提高的可用部分,网络性能就会恶化。这种现象就是拥塞
拥塞出现的条件: 对资源的需求 > 可用资源

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值