TCP的成块数据流

TCP流量控制详解
本文介绍了TCP协议中的三种流量控制机制:滑动窗口、慢启动及紧急方式。滑动窗口允许发送端连续发送多个数据包,提高了传输效率。慢启动算法通过调整阻塞窗口大小来避免网络拥塞。紧急方式用于标记数据流中的紧急数据。

1.滑动窗口
2.慢启动
3.紧急方式

  
  通过在前面的文章《TCP的交互数据流》我们可以知道,TCP的成块数据流是在要求传输效率较高的情况下使用的,例如FTP。对于这些要求传输TCP最长报文段的应用,TCP协议采用了滑动窗口协议,使发送端在等待确认前可以连续发送多个分组。
  一般来说,发送端发送一个TCP数据报,则接收端就应该发送一个ACK数据报。但在实际应用中却并非如此,而是发送端将连续发送数据报保存在接收端的缓冲区中,并且尽量使其填满,接收端对这些连续发送的数据报只发送一个ACK报文应答,这就是ACK的累计特性,这个特性大大减少了发送端和接收端的负担。

1.滑动窗口

  滑动窗口的滑动是以字节为单位的,窗口是在建立TCP连接时,通信双方协商好的接收端的窗口。窗口大小本质上是发送端在等待确认之前所发送数据的最大值。如果发送端收到接收端的窗口大小为0的TCP数据报,则表示发送端将停止发送数据,等到接收端发送窗口不为0的数据报的到来。
  以下是窗口协议中窗口变化的三种情况:
  

    1. 窗口合拢:即窗口 左边沿 向 右边沿 靠近。这种现象发生在数据被发送和确认时;
    2.窗口张开:即窗口 右边沿 向右移动,此时将允许发送更多的数据。这种现象一般发生在另一端的接收进程读取已经确认的数据并释放TCP的接收缓存时;
    3.窗口收缩:即窗口 右边沿 向左移动。一般不建议出现这种现象。
 
  注意:窗口的左边沿受另一端发送的确认序号的控制,因此不能向左移动。如果接收到一个指示窗口左边沿向左移动的ACK,则它被认为是一个重复ACK,并被丢弃。
  在滑动窗口中,发送端只能发送窗口内的数据,并且数据的发送顺序是从左到右。当窗口的左边沿达到右边沿时,则被成为一个零窗口,表示发送端不能发送任何数据。

2.慢启动

  为了防止网络阻塞,TCP采用了一种慢启动算法,对发送数据量进行控制。为了调节发送端的数据发送量,引入了阻塞窗口,在慢启动时,将这个阻塞窗口设为1个报文段发送数据,之后每收到一次确认应答,阻塞窗口的值就加一个报文段。在发送数据包时,将阻塞窗口的大小与接收端主机通知的窗口大小进行比较,然后选择较小的值来控制数据量的发送。阻塞窗口是发送端使用的流量控制,而通告窗口则是接收端使用的流量控制。

3.紧急方式

  TCP的 紧急方式 ,它使一端可以告诉另一端有些具有某种方式的 紧急数据 已经放置在普通数据流中。另一端被通告这个 紧急数据 已被放置在普通的数据流中,由接收方决定如何处理。然而 紧急数据 并不是 带外数据 。TCP的紧急方式只是一个从发送方到接收方的通知,该通知告诉接收方 紧急数据 已被发送,并提供该数据最后一个字节的序号,由接收方决定如何处理。应用程序使用的有关 紧急数据 部分的编程接口都不是最佳的,从而导致更多混乱。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值