范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

一文带你搞定TCP流量控制

  摘要理想的流量控制 实际的流量控制 窗口关闭 糊涂窗口综合征 理想的流量控制
  什么是流量控制?
  流量控制就是发送方不能无脑的给接收方发送数据,它需要根据接收方的处理能力来发送数据。
  理想下的流量控制?
  理想意味着在实际中不存在,这里只是简单的说一下流量控制的作用,我们假设的理想通信发生条件为: 客户端是接收方、服务端是发送方 接收窗口和发送窗口相同,为200 接收方和发送方在通信过程中始终保持相同的窗口大小
  客户端发送请求数据 服务端收到请求后,发送确认报文和80字节的数据,可用窗口减少为120(200-80),SND.NXT指针变为321,表示发送方下次发送序列号为321的数据 客户端收到数据后,接收窗口右移80字节,RCV.NXT为321,表示客户端段期望下一个收到的报文的序列号为321,并且发送ACK报文给服务端 服务端发送120字节的数据,可用窗口变为0,服务端无法发送数据 客户端收到120字节的数据,接收窗口右移120字节,接着发送ACK报文给客户端 服务端收到序列号为241(长度为80字节)的ACK报文,因此SND.UNA右移80字节变为321(241+80),可用窗口变为80字节 服务端收到序列号321(长度为120字节)的ACK报文,因此SND.UNA右移120字节变为441(321+120),可用窗口变为200字节 服务端发送160字节的数据,可用窗口变为40字节,并且SND.NXT右移160个字节变为601(441+160) 客户端在收到数据后,接收窗口右移160字节,接着发送ACK报文给服务端 服务端在收到ACK报文后,SND.UNAK右移160字节,并且可用窗口再次恢复为200字节 实际的流量控制
  操作系统缓冲区和滑动窗口的关系
  由于我们发送的数据都是暂存在操作系统的内存缓冲区,所以滑动窗口会收操作系统缓冲区的影响: 操作系统内存缓冲区会动态调整,影响窗口大小 如果应用程序如果无法及时从缓冲区读取内容,也会导致缓冲区减少,此时滑动窗口需要适当调小,避免缓冲区内容溢出。
  应用程序无法及时读取缓存
  假设以下场景: 客户端为发送方,服务端为接收方,初始化发送窗口和接收窗口都为360 服务端繁忙,收到客户端数据后,应用层无法及时读取数据
  客户端发送140字节的数据,可用窗口变为220(360-140),SND.NXT右移140变为141(1+140) 服务端收到140字节的数据,应用程序只读取了40节数据,还有100字节存在于缓冲区中,于是接收窗口变为260(360-100),服务端在给客户端发送ACK报文时会把新的窗口大小告知客户端。 客户端在收到ACK报文以后,发送窗口减少为260,并且由于收到了数据的ACK,因此SND.UNA会右移140个字节变为141,此时可用窗口为260 客户端继续发送180字节的数据,SND.NXT变为321,可用窗口变为80(260-80) 服务端在收到数据后,应用进程没有读取任何数据,于是接收窗口从260缩小为80(260-180),并且在发送ACK报文时告知客户端 客户端收到ACK报文以后,会将发送窗口减少为80,可用窗口此时也是80,因此到这里客户端最多只能发送80字节的数据给服务端 客户端发送最后80字节的数据给服务端,可用窗口变为0 服务端收到80字节的数据后,应用进程依然没有读取任何数据,于是接收窗口减少为0,并在发送ACK报文告知客户端 客户端收到ACK报文以后,发现窗口大小为0,因此将发送窗口减少为0。
  这里会有个问题,窗口变为0也就是发生了窗口关闭。
  操作系统缓冲区变化
  当服务器资源紧张,操作系统有可能会减少缓冲区的大小,如果此时应用程序还无法读取数据,那么将会出现数据包丢失现象。
  客户端发送140字节数据,可用窗口变为220(360-140) 服务端收到140字节数据后,但是系统资源紧张,操作系统减少120字节的缓冲区,并且应用层没有读取任何数据,于是接收窗口变为100(360-120-140),然后发送ACK报文告知客户端 在收到服务端的ACK报文前,客户端又发送了180字节的数据,可用窗口减少到40 服务器收到180字节的数据后,由于接收窗口只有100字节,超出了缓冲区的大小,因此会丢弃该数据包 客户端此时收到之前的ACK报文,会将发送窗口减少为100,此时可用窗口出现了负值-80 =(100 -(321 - 141))
  在上述情况中, 减少缓存先于收缩窗口发生,出现丢包现象 。
  为了防止上述情况, TCP规定是先收缩窗口,过段时间再减少缓存,这样避免丢包。 窗口关闭
  什么是窗口关闭
  窗口大小为0,阻止发送方给接收方发送数据,直到窗口变为非0才能恢复发送。
  窗口关闭的危险
  窗口关闭以后发送端无法发送数据给接收端,只有当接收端处理完数据以后,这时候窗口回复,发送ACK报文信息给客户端,客户端才能恢复发送。但是一旦该ACK报文丢失,那么发送方会一直等待接收方的非0窗口通知,接收方也一直在等待发送方的数据,容易造成死锁现象。
  如何解决窗口关闭带来的死锁?
  只要TCP连接的一方收到对方0窗口的通知,就启动计时器,如果计时器超时就会发送窗口探测报文给对端,对端会给出自己的接收窗口大小。 如果收到的窗口依然为0,发送方重启启动持续计时器 如果收到的窗口不为0,恢复正常发送
  窗口探测的次数一般为3次,每次大约30~60s。如果三次以后接收窗口还是0,有的TCP实现就会发送RST报文来中止连接。 糊涂窗口综合征
  什么是糊涂窗口综合征?
  如果接收方太忙,来不及取走缓冲区的数据,发送方的窗口会越来越小,最后如果接收方空出几个字节并告诉发送方现在有几个字节的窗口,发送方便会发送这几个字节,这就是糊涂窗口综合征。
  糊涂窗口综合征的缺点?
  TCP+IP头部大约有40个字节,为了几个字节数据,需要加上头部相对大的开销,性价比极低。
  糊涂窗口综合征的原因是? 接收方会告知发送方一个小的窗口 发送方可以发送小数据
  如何避免接收方告知小窗口?
  接收方在告知窗口时会采取一种策略: 当窗口大小小于min(MSS,缓存空间/2),就会向发送方告知窗口为0,避免发送方发送数据,等到接收方处理完一些数据后,窗口大小>=MSS或者有一半以上缓存空间可以使用时,就可以把窗口打开让发送方发送数据。
  如何避免发送方发送小数据?
  发送方在发送数据时采用Nagle算法,该算法的思路是延时处理,满足以下两个条件才可以发送数据: 窗口大小>=MSS或是数据大小>=MSS 收到之前发送数据的ACK报文
  对于telnet或ssh这种小数据包交互场景的应用程序,需要关闭Nagle算法。 // 在Java中,对Socket进行以下设置可以关闭Nagle算法。 Socket socket =  new Socket(); socket.setTcpNoDelay(true);

普通又自信,三千多的荣耀V40就这?红米K40表示第一个不服自从荣耀品牌从华为独立后,1月22日,荣耀正式发布V40系列,该系列仅有1款机型2种内存和3种颜色分别为幻夜黑钛空银蔷薇金可选,并没有Pro版本。发布会上各种参数和价格公布之后,广ALIENWAREAURORAR14以多元能力应对无限挑战,让创造力重获新生未来世界,由你创造。新世代桌面主机ALIENWAREAURORAR14焕新登场,内敛锋芒,以深沉的月球暗面配色面向玩家。以未来极简主义,打开创造力之窗,激发游戏灵感,让千万种奇思妙三星GalaxyS21系列国行版正式发布,售价4999元起昨日晚间,三星正式发布了全新旗舰手机GalaxyS21系列的国行版本,包括GalaxyS21GalaxyS21GalaxyS21Ultra三款机型。价格方面,GalaxyS21手机MIUI内测调整,过滤了小白,也过滤了老米粉MIUI新的内测机制是,两周内没有完成这两条必做条件,就会被踢出内测。这相比之前一段时间没有更新系统就会掉内测是要更好的,用户到社区提问吐槽交流都会帮助到工程师更快的定位问题,也能华为P50Pro详细配置曝光,6400万用作长焦,还有一颗神秘镜头今日海外网友ishanagarwal曝光了华为P50Pro4G版的全部配置,正常来说这种发布会前一天的曝光基本都是真的,那么下面就来看看,这一代P系列有哪些新东西。屏幕6。6英寸OMIUI13延后,将不在8月发布前段时间,大李同学的失误透露,再到MIUI新功能的内测节奏,都指向MIUI13会在8月发布,然而似乎鸽了。小米化爷回复网友,表示MIUI13将给体验优化让路,这可以说算是实锤了。那MIUI12。5增强版升级方法,别等推送了,自己动手吧MIUI12。5增强版首批共12款机型小米MIX4小米1111Pro11Ultra小米1010S10Pro10UltraRedmiK40K40ProK30ProK30S。根据最新发9月苹果发布会不止一场,多款新品都已曝光根据DigiTimes的消息显示,苹果会在9月召开多场产品发布会。预计近期曝光的各类产品,都将集中在9月发布。iPhone13系列,目前这款产品配置基本都以曝光,目前大家比较关心的不止华为折叠屏,手机设计的未来你还能看到这些概念昨天,华为公布了新一代折叠旗舰MateX2的发布会时间,即将在2月22日发布华为的下一代内折屏产品,手机市场的异形化早已开启,目前较为成熟的折叠屏主要是华为与三星两家厂商在生产,而京东方独家独家供屏!华为MateX2还将会是理财产品吗?如果问到2020年数码圈有哪些理财产品,那么华为MateXs和NVIDIARTX30系必不可少,它们都是官方渠道不容易购买到,只能加价从其他渠道选购。相比于华为MateXs破4万的当代年轻人的818购物车图鉴极米H3S获消费者偏爱随着818抖音即将开启自己的购物狂欢,广大消费者也正式开启了买买买模式。除了购买日常的一些生活用品之外,不少消费者的购物车里也加购了一台家用投影。前不久,国内家用投影领导品牌极米科
牧原股份,芯能科技,士兰微,至纯科技,包钢股份,湖北宜化加油至纯科技大基金二期入股,湖北宜化磷化工,牧原股份猪肉,芯能科技光伏概念,包钢股份,北方稀土,隆基股份光伏行业清洁能源的公司,也是国家重点支持的产业。有光伏建筑一体化项目,万物皆利好微信中的零钱通ampquot是否安全?真的有收益吗?重要消息紧急通知如果你的微信还在使用零钱通,将自己的积蓄存进微信里,千万要注意了,很容易一个小失误,微信零钱通的钱会被盗刷,这样的小失误出现在我们生活中,很多人都遭遇到,盗刷的钱将iphone8p和iphone7p买哪个好?iPhone7p和iPhone8相比还是应该选择买iPhone8。虽说在外观上iPhone8整体上没有很大的改进,只是改成了玻璃外壳,但是在邢恩能够上iPhone8做出了很大的改进各位大佬们,程序员都是通过什么途径接私活啊?我说一个爬虫的,当然也适用于所有的领域专业。我在学生时代因为感兴趣开始学习爬虫,写爬虫这件事情最大的成就感来来自于能看着自己写的代码大量的采集到数据。但是光是自己爽是赚不到钱的,让想在网上买张纯大流量卡,最好不限速的4G网络卡,有买过的吗?我现在用的就是,16元40G,19元50G,25元100G,49元200G,全程4G5G网络不限速,纯流量卡不能拨打电话我也想,只是被骗过太多次,绝望了!亲,您好!和您分享一下在头王兴,贪婪的创始人王兴的美团被罚了35。2亿,虽说对我们大家来说,是大快人心,但是以王兴那种贪婪的本质。35。2亿估计会变本加厉地从商户或者骑手中扣回来。中国互联网企业创始人何其多,吃相最难看的就是国家十三五科技创新成就展将开幕来源人民网人民日报海外版据新华社北京10月20日电(记者王琳琳)中国空间站模型火星车九章量子计算原型机奋斗者号全海深载人潜水器这些重大科技成果将于21日在北京开幕的国家十三五科技创制造业多品种小批量计划岗位该如何管理?制造类企业多品种小批量问题经常发生,不同的企业表现程度也有一些差异。品种不同,生产工艺不同,产品附加值不同,销售渠道和定价策略不同。批量不同,生产成本不同,生产组织方式不同,产品交索尼PS5正测试通过手机快速分享游戏截图财经网科技10月20日讯,据IT之家消息,索尼在推特上表示,正在测试通过智能手机的PlayStationApp共享PlayStation5屏幕截图和视频片段。用户可以使用PlayS对话希捷孙丹中国处在智能制造追赶阶段,产业升级才能应对供应链挑战记者徐诗琪编辑博鳌亚洲论坛首届全球经济发展与安全论坛正在长沙举行。在智能制造分论坛上,来自产业与学界人士探讨了智能工厂的发展趋势。亚洲电动车之父中国工程院院士陈清泉发言表示,智能制比亚迪多项新能源技术受青睐来源南方日报首次登上广交会这一国际性平台,比亚迪亮出了多项颠覆性技术刀片电池DMi超级混动e平台3。0精心设计的新能源展厅内,搭载这些创新技术的产品科技感十足。在第130届广交会期