TCP 滑动窗口
- 滑动窗口协议
- 流量控制方法
- PUSH
- 慢启动

- 发送方发送 4个背靠背(back-to-back)的数据报文段去填充接收方的窗口,然后停下来等待一个ACK。
- 接收方发送 ACK(报文段 8),但通告其窗口大小为 0,这说明接收方已收到所有数据,但这些数据都在接收方的 TCP缓冲区,因为应用程序还没有机会读取这些数据。
- 另一个ACK,窗口更新 在17.4ms后发送,表明接收方现在可以接收另外的4096个字节的数据。
- 发送方发送最后4个报文段(10~13),再次填充了接收方的窗口。
- 注意到报文段13中包括两个比特标志:PUSH和FIN。
- 随后从接收方传来另外两个 ACK,它们确认了最后的 4096字节的数据(从4097到8192字节)和FIN(标号为8192)

- 窗口大小6个字节,覆盖第4-9字节
- 说明字节1-3 是发送并被确认的
- 窗口大小起始于确认序号字段。
- 发送方可以计算它的可用窗口,
- 比如窗口大小6,已经被确认1-3,发送但未被确认4-6,则可用窗口大小3,起始第7序号
- 可用窗口表明有多少数据可以立即被发送
- 发送方可以计算它的可用窗口,
- 当接收方确认数据后,这个滑动窗口不时地向右移动。
- 窗口左右边沿的运动现象的三个术语
- 左边沿向右靠近----窗口合拢
- 现象发生在数据被发送和确认时。
- 右边沿向右靠近----窗口张开
- 将允许发送更多的数据
- 现象发生在接收端进程读取已经确认的数据并释放了TCP的接收缓存时。
- 右边沿向左靠近----窗口收缩
- RFC 强烈建议不要使用这种方式
- 但TCP 有特殊场景会使用到
- 左边沿向右靠近----窗口合拢
- 如果左边沿到达右边沿,则称其为一个零窗口,此时发送方不能够发送任何数据


- 发送方使用该标志通知接收方将所有接收到的数据全部提交给接收进程
- 包括与PUSH一起传送的数据以及接收方TCP 已经接收到的其他数据
- 出现原因
- 在发送与接收方存在多个路由器和速率较慢的链路时
- 中间路由器必须缓存分组包,并可能耗尽存储器的空间
- 严重降低TCP连接的吞吐量
- 工作原理
- 观察新分组进入网络的速率应该与另一端返回确认的速率相同而进行工作。
- 慢启动为发送方增加另一个窗口:拥塞窗口(congestion window) cwnd.
- 当建立TCP连接时,拥塞窗口被初始化为1个报文段(即另一端通告的报文段大小)
- 每收到一个ACK,拥塞窗口就增加一个报文段,拥塞窗口从1增加到2,即可以发送两个报文段。
- 发送方取拥塞窗口与通告窗口中的最小值作为发送上限。
- 拥塞窗口是发送方使用的流量控制
- 通告窗口则是接收方使用的流量控制
TCP 滑动窗口的更多相关文章
- TCP 三次握手四次挥手, ack 报文的大小.tcp和udp的不同之处、tcp如何保证可靠的、tcp滑动窗口解释
一.TCP三次握手和四次挥手,ACK报文的大小 首先连接需要三次握手,释放连接需要四次挥手 然后看一下连接的具体请求: [注意]中断连接端可以是Client端,也可以是Server端. [注意] 在T ...
- TCP 滑动窗口和 拥塞窗口
转http://coolshell.cn/articles/11609.html 滑动窗口 -- 表征发送端和接收端的接收能力 拥塞窗口-- 表征中间设备的传输能力 TCP滑动窗口 需要说明一下,如果 ...
- TCP 滑动窗口的简介
TCP 滑动窗口的简介 POSTED BY ADMIN ON AUG 1, 2012 IN FLOWS34ARTICLES | 0 COMMENTS TCP的滑动窗口主要有两个作用,一是提供TCP的可 ...
- TCP滑动窗口控制流量的原理
TCP的滑动窗口机制 TCP这个协议是网络中使用的比较广泛,他是一个面向连接的可靠的传输协议.既然是一个可靠的传输协议就需要对数据进行确认.TCP协议里窗口机制有2种:一种是固定的窗口大小 ...
- tcp滑动窗口详解(2)
http://blog.csdn.net/yujun00/article/details/636495 ARQ与滑动窗口概念 滑动窗口协议,是TCP使用的一种流量控制方法.该协议允许发送方在停止并等 ...
- [转]TCP滑动窗口详解
TCP滑动窗口详解 http://lyjdamzwf.blog.163.com/blog/static/75206837201193373226/ TCP滑动窗口(Sliding Window) ...
- TCP滑动窗口与回退N针协议
[转]TCP 滑动窗口协议/1比特滑动窗口协议/后退n协议/选择重传协议 2014-1-5阅读884 评论0 本文转自 http://www.cnblogs.com/ulihj/archive/201 ...
- TCP滑动窗口(发送窗口和接受窗口)
TCP窗口机制 TCP header中有一个Window Size字段,它其实是指接收端的窗口,即接收窗口.用来告知发送端自己所能接收的数据量,从而达到一部分流控的目的. 其实TCP在整个发送过程中, ...
- 传输层-Transport Layer(下):UDP与TCP报头解析、TCP滑动窗口、TCP拥塞控制详解
第六章 传输层-Transport Layer(下) 上一篇文章对传输层的寻址方式.功能.以及流量控制方法做了简短的介绍,这一部分将介绍传输层最重要的两个实例:TCP协议和UDP协议,看一看之前描述的 ...
- 彻底搞通TCP滑动窗口
在我们当初学习网络编程的时候,都接触过TCP,在TCP中,对于数据传输有各种策略,比如滑动窗口.拥塞窗口机制,又比如慢启动.快速恢复.拥塞避免等.通过本文,我们将了解滑动窗口在TCP中是如何使用的. ...
随机推荐
- R语言包翻译——翻译
Shiny-cheatsheet ...
- Java学习笔记--脚本语言支持API
Java语言的动态性之脚本语言支持API 随着Java平台的流行,很多的脚本语言(scripting language)都可以运行在Java虚拟机啊上,其中比较流行的有JavaScript.JRuby ...
- 将Win7系统将默认打开的库改为计算机
- [leetcode-567-Permutation in String]
Given two strings s1 and s2, write a function to return true if s2 contains the permutation of s1. I ...
- 【LeetCode】237. Delete Node in a Linked List
题目: Write a function to delete a node (except the tail) in a singly linked list, given only access t ...
- seajs源码阅读
乘着周日有点时间,阅读一下玉伯大神的源码. seajs的源码写得真的很好,很是佩服,工整美观不愧是大神,造福百姓. 说起seajs不得不说,AMD和CMD的区别. CMD 推崇依赖就近,AMD 推崇 ...
- gulp 运用 的理解
ugulp.task('build', function() { runSequence('clean', 'copy', ['uglify', 'sass', 'htmlmin'], 'base64 ...
- vijos1760题解
题目: 现在有n个人,题目给出了他们每个人所在市县的编号.他们站在一个从左向右的队伍中.小L不在队列中.他想找到一个长度不超过D的区域,使他能够找到最多的不同地方的朋友.要求输出能找到的朋友所在不同市 ...
- mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)
最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...
- springmvc 前端 发ajax请求的几种方式
一.传json单值或对象 1.前端 var data = {'id':id,'name':name}; $.ajax({ type:"POST", url:"user/s ...