1.滑动窗口协议

            TCP滑动窗口的可视化表示

我们将字节从1到11进行标号,接收方通告的窗口称为提供的窗口,它覆盖了第4字节到第9字节的数据,且通告窗口大小为6。发送方计算接收者的可用窗口,以便确定有多少数据可以被立即发送。当接收方确认数据后,这个滑动窗口向右移动。窗口两个边沿的相向运动有以下3种情况:
(1)在数据被发送和确认时,窗口左边沿向右边沿靠近,称为窗口合拢。
(2)在另一端接收进程读取已经确认的数据并释放了TCP接收缓存时,窗口右边沿向右移动,称为窗口张开,此时允许发送更多的数据。
(3)当右边沿向左移动时,称为窗口收缩。这种方式不被建议。
3种情况如下图所示:
如果左边沿到达右边沿,则称为0窗口,此时发送方不能发送任何数据。

2.窗口大小

接收方的窗口大小通常可以由接收进程控制,这将影响TCP的性能。对于以太网来说,默认的4096字节并不是最理想的大小,提高窗口的大小 有时 可以提高网络的吞吐量。

3.PUSH标志

发送方使用该标志通知接收方将所收到的数据全部提交给接收进程,这里的数据包括与PUSH一起传送的数据 以及 接收方TCP已经为接收进程收到的其他数据。
特点:
(1)通过设置PUSH标志,客户进程通知TCP在向服务器发送一个报文段时不要因等待额外数据而使已提交数据在缓存中滞留。
(2)当服务器接收到设置了PUSH标志的报文段时,它需要立即将这些数据提交给服务器进程而不能等待判断是否还会有额外数据到达。
(3)如果待发送数据将清空发送缓存,则自动设置PUSH标志(大多数源自伯克利的实现)。

4.慢启动算法

过程:
①当连接建立的时候,发送者用当前使用的最大数据段长度初始化拥塞窗口,然后发送一个最大的数据段
②如果在定时器超期之前收到确认,则将拥塞窗口翻倍, 然后发送两个数据段。。。。。。直至超时(或达到接收方窗口的大小)
③确定出拥塞窗口的大小
cwn--拥塞窗口
除了使用接收者窗口和拥塞窗口,TCP拥塞控制还使用第三个参数,阈值(threshold),初始化为64K。
<1>当一个超时发生时,阈值降为当前拥塞窗口的一半,同时将拥塞窗口设为一个最大数据段长度。
<2>然后使用慢启动算法来决定网络的容量,拥塞窗口增长到阈值时停止指数增长。
<3>从这个点开始,每次成功的传输都会让拥塞窗口线性增长(每次只增长一个最大数据段长度)。
例题:
如果:TCP慢启动中,初始阈值是8,当拥塞窗口升到 12的时候,发生了超时,开始新的慢启动,拥塞窗口 从头起CWND= 1。问:第14次传输时的拥塞窗口是多大?     答案:8  

5.带宽延时乘积

可以参考带宽延时乘积设置窗口大小,它代表网络通道的容量大小。
  capacity(bit)=bandwidth(b/s)×round-trip time(s)

6.紧急方式

    TCP提供了紧急方式,它使一端可以告诉另一端有些具有某些方式的"紧急数据"已经被放置在普通的数据流种。另一端被通知这个紧急数据已被放置在普通数据流中,由接收方决定如何处理。
    通过设置TCP首部的两个字段来发出紧急数据。即将URG比特置1,将一个16bit的紧急指针置为一个正的偏移量。该偏移量与TCP首部的序号字段相加,得出紧急数据最后一个字节的序号<--Host Requirements RFC规定(然而大多数伯克利实现中,紧急指针被解释为紧急数据最后一个字节的下一字节)。
举例:
(Telnet和Rlogin)客户端通告服务器窗口为0,就在此时服务器进入紧急方式,尽管它不能发送任何数据,服务器TCP也会立即发送紧急指针和URG标志。当客户TCP接收到这个通知就会通知客户进程读取TCP缓存,打开窗口,和服务器继续通信。

转载于:https://www.cnblogs.com/zhoudayang/p/5281820.html

12.TCP的成块数据流相关推荐

  1. 《网络协议》TCP 的成块数据流

    在前面的文章中<TCP 的交互数据流>我们可以知道,TCP 的成块数据流是在要求传输效率较高的情况下使用,例如 FTP.对于这些要求传输 TCP 最长报文段的应用,TCP 协议采用了滑动窗 ...

  2. 第20章 TCP的成块数据流

    为什么80%的码农都做不了架构师?>>>    20.3   滑动窗口 当接收方确认数据后,这个滑动窗口不时地向右移动.窗口两个边沿的相对运动增加或 减少了窗口的大小.我们使用三个术 ...

  3. TCP/IP详解--学习笔记(11)-TCP交互数据流,成块数据流

    目前建立在TCP协议上的网络协议特别多,有telnet,ssh,有ftp,有http等等.这些协议又可以根据数据吞吐量来大致分成两大类:(1)交互数据类型,例如telnet,ssh,这种类型的协议在大 ...

  4. TCP/IP详解学习笔记(11)-TCP交互数据流,成块数据流

    2019独角兽企业重金招聘Python工程师标准>>> 目前建立在TCP协议上的网络协议特别多,有telnet,ssh,有ftp,有http等等.这些协议又可以根据数据吞吐量来大致分 ...

  5. 【网络协议】TCP的交互数据流和成块数据流

    TCP协议简介 传输控制协议,位于传输层,提供一种可靠的,面向连接的数据传输服务 TCP通过以下方式保证可靠性: 应用程序被分割为适合传输的数据块,UDP不会,UDP只有与IP首部组成IP数据报时才会 ...

  6. Excel中复杂字符串如何按类型拆分?例如“花椒12.5KG“拆分成花椒、12.5和KG

    Excel中复杂字符串如何按类型拆分 Excel中复杂字符串如何按类型拆分?例如"花椒12.5KG"拆分成花椒.12.5和KG. 本视频一一展示复杂字符串的诸多拆分技巧.

  7. html怎么转换内联元素,css怎么将内联元素设成块元素?

    元素就是标签,布局中常用的有三种标签,块元素.内联元素.内联块元素,了解这三种元素的特性,才能熟练的进行页面布局.下面我们来看一下css将内联元素设成块元素的方法. css使用display:bloc ...

  8. 网络笔记(12) TCP协议(下):西行必定多妖孽,恒心智慧消磨难

    我们前面说到玄奘西行,要出网关.既然出了网关,那就是在公网上传输数据,公网往往是不可靠的,因而需要很多的机制去保证传输的可靠性,这里面需要恒心,也即各种重传的策略,还需要有智慧,也就是说,这里面包含着 ...

  9. [译 ] 云计算Cloud Computing 12章 大数据、数据流、和移动云计算 -序

    序 处理器,存储,软件和网络技术的进步使我们能够存储和处理海量数据,将这项技术用于人类科学,利益,娱乐,恶意方案,或一些我们可以做的事. 人们可以谈论"数据的民主化",因为科学家和 ...

  10. 一文回顾苹果秋季发布会:没了iPhone 12,A14成最大惊喜

    Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 没有 iPhone 的发布会就像没有钢铁侠的< ...

最新文章

  1. Python Qt GUI设计:将UI文件转换为Python文件的三种妙招(基础篇—2)
  2. 实战 Spring Cloud Gateway 之限流篇
  3. 《信息安全研究》数据安全专刊研讨会召开
  4. Unicorn 4.6.3 发布,Rack的HTTP服务器
  5. python自学书籍顺序-2018最全各阶段Python学习书籍汇总!
  6. 奇异值分解(SVD) --- 几何意义2
  7. 【机器学习基础】GBDT--梯度提升树实例分析完全解读
  8. 提权 调试权限 OpenProcess 拒绝访问的解决办法
  9. 稍等片刻 正在提取文件_电脑文件误删除并且清空了回收站,怎么恢复文件?教你一招!...
  10. 由浅到浅入门批量渲染(三)
  11. oracle参数文件备份,备份的控制文件和新的数据文件
  12. 动态字段无法双向绑定_ASP.NET Core Blazor Webassembly 之 数据绑定
  13. vue+echart 利用散点图实现柱状时间驻留图
  14. Java 的自动装箱拆箱
  15. python语句和语法结构
  16. 51单片机学习笔记8 -- OLED显示(SPI)
  17. 2022 IDLE 配置
  18. 租房高峰期,房产中介机构如何快速锁定客户?
  19. Win10系统导出证书私钥及公钥
  20. 实时可视化大数据项目05 -- UI界面

热门文章

  1. bzoj2146 Construct
  2. APP推广运营经验总结
  3. 银行IT部门科技管理流程管控工作发展之路
  4. ProcessPoolExecutor
  5. ACL 2021 | 丁香园知识增强预训练模型
  6. 【ICLR2021】伪标签还能这样用?半监督力作UPS大揭秘!
  7. 【深度语义匹配模型】实践篇:语义匹配在贝壳找房智能客服中的应用
  8. BERT/Transformer/迁移学习NLP资源大列表
  9. 哈工大刘挺教授:中文信息处理前沿技术进展
  10. 什么是迁移学习 (Transfer Learning)?这个领域历史发展前景如何?【文末彩蛋】...