TCP报头里的那个窗口大小到底是指什么

news/2024/5/17 16:56:38 标签: tcp, 路由器, socket, 算法, 工作, c
cle class="baidu_pl">
cle_content" class="article_content clearfix">
content_views" class="htmledit_views"> TCP通过滑动窗口的概念来进行流量控制。设想在发送端发送数据的速度很快而接收端接收速度却很慢的情况下࿰c;为了保证数据不丢失࿰c;显然需要进行流量控制࿰c; 协调好通信双方的class="tags" href="/tags/GongZuo.html" title=工作>工作节奏。所谓滑动窗口࿰c;可以理解成接收端所能提供的缓冲区大小。TCP利用一个滑动的窗口来告诉发送端对它所发送的数据能提供多大的缓 冲区。由于窗口由16位bit所定义࿰c;所以接收端TCP 能最大提供65535个字节的缓冲。由此࿰c;可以利用窗口大小和第一个数据的序列号计算出最大可接收的数据序列号。

滑动窗口本质上是描述接受方的TCP数据报缓冲区大小的数据࿰c;发送方根据这个数据来计算自己最多能发送多长的数据。如果发送方收到接受方的窗口大小为0的TCP数据报࿰c;那么发送方将停止发送数据࿰c;等到接受方发送窗口大小不为0的数据报的到来。
关于滑动窗口协议࿰c;还有三个术语࿰c;分别是:

窗口合拢:当窗口从左边向右边靠近的时候࿰c;这种现象发生在数据被发送和确认的时候。  
窗口张开:当窗口的右边沿向右边移动的时候࿰c;这种现象发生在接受端处理了数据以后。  
窗口收缩:当窗口的右边沿向左边移动的时候࿰c;这种现象不常发生。  
TCP就是用这个窗口࿰c;慢慢的从数据的左边移动到右边࿰c;把处于窗口范围内的数据发送出去(但不用发送所有࿰c;只是处于窗口内的数据可以发送。)。这就是窗口 的意义。窗口的大小是可以通过class="tags" href="/tags/SOCKET.html" title=socket>socket来制定的࿰c;4096并不是最理想的窗口大小࿰c;而16384则可以使吞吐量大大的增加。

  A—————C—————B  
  如上图࿰c;A与B之间建立TCP连接࿰c;滑动窗口实现有两个作用:  
   
  由于对称性࿰c;只考虑A端发送窗口和B端接收窗口࿰c;有如下两个作用  
   
  1。B端来不及处理接收数据(控制不同速率主机间的同步)࿰c;这时࿰c;A通过B端通知的接收窗口而减缓数据的发送。  
  2。B端来得及处理接收数据࿰c;但是在A与B之间某处如C࿰c;使得AB之间的整体带宽性能较差࿰c;此时࿰c;A端根据拥塞处理策略(慢启动࿰c;加倍递减和缓慢增加)来更新窗口࿰c;以决定数据的发送。  

与固定大小的滑窗协议相比࿰c;TCP采用可变大小的滑窗协议是为了取得更好的性能。  
   
  TCP是一个广域网协议࿰c;而广域网环境下的class="tags" href="/tags/LuYouQi.html" title=路由器>路由器和主机࿰c;各自有着不同的性能和处理能力࿰c;在这种情况下࿰c;采用固定窗口大小的滑窗协议会引起性能上的损失。TCP规定窗口的大小是由接收方通告的࿰c;通过采取慢启动和拥塞避免class="tags" href="/tags/SuanFa.html" title=算法>算法等机制来使带宽和性能取得最佳。
cle>

http://www.niftyadmin.cn/n/1414886.html

相关文章

Ceph分布式存储混合硬件架构方案

笔者在为容器云做存储支持时开始接触、使用、研究ceph分布式存储系统。Ceph能够同时提供对象存储、文件存储以及块存储,为基于云的海量数据存储提供了较优的解决方案。 具体了解ceph相关内容请参考ceph官网[1]及论文[2]。本文主要讲基于ssd和hdd混合硬件的三种架构方…

请问什么是ACK消息?

在tcp协议中 通讯之前都要经过三次握手,请求方发出一个syn信号请求连接,对方收到并接受的时候就会发出ack消息。 ack就是回应的意思。 什么是ACk攻击 Land (Land Attack)攻击:在 Land 攻击中,黑客利用一个特…

[ python ] 初始面向对象

首先,通过之前学习的函数编写一个 人狗大战 的例子。 分析下这个需求,人 狗 大战 三个事情。角色:人、狗动作:狗咬人,人打狗 先创建人和狗两个角色: def person(name, hp, aggr, sex):data {name: name,h…

linux线程异常保护

用多线程的时候要添加thread库, -lpthread 创建线程 create_thread 如果线程正常退出,不会存在问题。如果线程非正常退出,那么线程中申请的资源就不能正常释放,申请内存造成内存泄漏,锁和信号量等操作容易造成死锁。…

TCP滑动窗口

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

多线程相关内核对象使用情况对比

主线程与子线程之间要进行同步访问公共变量,子线程之间要互斥的访问公共变量。如下列出几种常用的同步互斥方法。 (1)关键段,criticalSection,可以用于线程间的互斥,不可以用于线程间同步,不能…

[爬虫] 上海大学自动抢课工具

*****已经更新,突然看到选课系统登录接口变成了SSO接口,立即改了程序***** *****下载者承担一切后果,本人在此声明,一切商业活动与本人无关***** *****如果有人使用本软件出售,与作者无关,售卖者承担一切法…

亚历山大大帝

亚历山大大帝目录 简介生平遗留的格局大事年表人物评论电影《亚历山大大帝 Alexander》(2004)the Great Alexander (前356-前323)简介亚历山大大帝(公元前356—公元前23年),古代 马其顿国 王,世界古代史上著名的军事家和政治家。生…