才子佳人博客

我的故事我讲述

TCP中的数据包窗口和滑窗
 
来源:xjh  编辑:xjh  2017-10-08

在TCP的发送端和接收端都会维持一个窗口,因为一个TCP连接是双向的,因此实际上一个TCP连接一共有四个窗口。此处我们先简单介绍一个发送端的窗口,如下所示。


图中的数字表示byte也就是和上面介绍的TCP协议头中的SN是对应的,3号byte以及3号之前的数据表示已经发送并且收到了接收端的ACK确认包的数据;4、5、6三个byte表示当前可以发送的数据包,也有可能已经已经发送了但是还没有收到ACK确认包;7号byte及之后的数据表示为了控制发送速率暂时不能发送的数据。其中4-6这三个byte就称呼为窗口大小(window size)。

故,TCP头中的16位窗口大小指定了从最后被确认的字节算起可以发送多少个字节,或者说是SOCKET 发送缓冲区的大小。

当TCP连接建立的时候,双方会通过TCP头中的窗口大小字段向对方通告自己接收端的窗口大小,发送端依据接收端通告的窗口大小来设置发送端的发送窗口大小,另外在拥塞控制的时候也是通过调整发送端的发送窗口来调整发送速率的。窗口这个词的来源就是当我们从这一个数据序列中单独看4、5、6这几个byte的时候,我们仿佛是从一个"窗口"中观察的一样。此处先简单有个滑窗的概念后续我们讲到TCP的窗口管理的时候会继续进一步介绍TCP的滑窗。

来源参考:
http://www.cnblogs.com/lshs/p/6038458.html
http://www.itale.cn/archives/2017/10/20171025144154.html(TCP滑动窗口和流控机制)

 


分类:网络日志| 查看评论
相关文章
文章点击排行
本年度文章点击排行
发表评论:
  • 昵称: *
  • 邮箱: *
  • 网址:
  • 评论:(最多100字)
  • 验证码: