TCP流量控制与拥塞解决

滑动窗口

  但要提高网络利用率:

  nagle算法 ~ 延迟

慢启动、拥塞避免

  发送端主导cwnd

  init  set  ssthresh  &  cwnd = swnd

  loop :

    网不阻塞  (cwnd  < ssthresh)(cwnd  > ssthresh)(cwnd  == ssthresh)

            cwnd*2       cwnd ++        都可以

    网阻塞   set: ssthresh = cwnd / 2        cwnd = 1

快重传、快恢复

  快重传:接收端,三次重复确认i; 发送端,立即重发i + 1;

  ssthresh = cwnd / 2

  快恢复:cwnd ++

注意:

  swnd = min(rwnd, cwnd)

时间: 2024-10-12 02:03:29

TCP流量控制与拥塞解决的相关文章

TCP流量控制和拥塞避免

TCP的流量控制 所谓的流量控制就是让发送方的发送速率不要太快,让接收方来得及接受.利用滑动窗口机制可以很方便的在TCP连接上实现对发送方的流量控制.TCP的窗口单位是字节,不是报文段,发送方的发送窗口不能超过接收方给出的接收窗口的数值. 如图所示,说明了利用可变窗口大小进行流量控制.设主机A向主机B发送数据.双方确定的窗口值是400.再设每一个报文段为100字节长,序号的初始值为seq=1,图中的箭头上面大写ACK,表示首部中的却认为为ACK,小写ack表示确认字段的值. 接收方的主机B进行了

TCP流量控制与拥塞控制

 一.TCP建立连接后,通信双方都同时可以进行数据的传输:在保证可靠性上,采用超时重传和捎带确认机制:在流量控制上,采用滑动窗口协议,协议中规定,窗口内未经确认的分组需要进行重传:在拥塞控制上,采用慢启动算法. (一)拥塞控制: 1. TCP慢启动.拥塞避免.快速重传.快速回复 为了防止网络的拥塞现象,TCP提出了一系列的拥塞控制机制.最初由V. Jacobson在1988年的论文中提出的TCP的拥塞控制由"慢启动(Slow start)"和"拥塞避免(Congestio

TCP 流量控制和拥塞控制中的重要机制

停止等待协议: 放送方发送一个数据包,要收到接收方对该包的确认后,才发送下一个数据包. 缺点:慢,信道利用率低. ARQ Automatic Repeat reQuest 接收方采用累加确认的方式,接收方不必对每一个分组进行缺,只需要对按序到达的最后一个分组发送确认. 缺点:当发送方发送了5个分组,中间第3个丢失,那么接收方只对前两个分组进行确认.发送方只好把后面的3个分组都重传一次.这叫做Go-back-N(回退N) 选择确认 selective ack 接收方对接收到的数据字节流中,若有中间

Wireshark(五):TCP窗口与拥塞处理

原文出处: EMC中文支持论坛 TCP通过滑动窗口机制检测丢包,并在丢包发生时调整数据传输速率.滑动窗口机制利用数据接收端的接收窗口来控制数据流. 接收窗口值由数据接收端指定,以字节数形式存储于TCP报文头,并告知传输设备有多少数据将会存储在TCP缓冲区.缓冲区就是数据暂时放置的地方, 直至传递至应用层协议等待处理.因此,发送端每次只能发送Window Size字段指定的数据量.为了使发送端继续传送数据,接收端必须发送确认信息:之前的数据接收到了.同时必须对占用缓冲区的数据进行处理以释放缓存空

Tcp编程常见问题及解决方法总结

问题1.粘包问题 解决方法一:TCP提供了强制数据立即传送的操作指令push,TCP软件收到该操作指令后,就立即将本段数据发送出去,而不必等待发送缓冲区满: 解决方法二:发送固定长度的消息 解决方法三:把消息的尺寸与消息一块发送 解决方法四:双方约定每次传送的大小 解决方法五:双方约定使用特殊标记来区分消息间隔 解决方法六:标准协议按协议规则处理,如Sip协议 问题2.字符串编码问题 将中文字符串用utf8编码格式转换为字节数组发送时,一个中文字符可能会占用2-4个字节(假设为3个字节),这3个

TCP流量控制和拥塞控制

TCP的流量控制 所谓的流量控制就是让发送方的发送速率不要太快,让接收方来得及接受.利用滑动窗口机制可以很方便的在TCP连接上实现对发送方的流量控制.TCP的窗口单位是字节,不是报文段,发送方的发送窗口不能超过接收方给出的接收窗口的数值. 如图所示,说明了利用可变窗口大小进行流量控制.设主机A向主机B发送数据.双方确定的窗口值是400.再设每一个报文段为100字节长,序号的初始值为seq=1,图中的箭头上面大写ACK,表示首部中的却认为为ACK,小写ack表示确认字段的值. 接收方的主机B进行了

TCP流量控制

一般说来,我们总是希望数据传输得更快一些.但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失. 流量控制(flow control)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞. 利用滑动窗口机制可以很方便地在 TCP 连接上实现流量控制. A 向 B 发送数据.在连接建立时,B 告诉 A:"我的接收窗口 rwnd = 400(字节) TCP 为每一个连接设有一个持续计时器. 只要 TCP 连接的一方收到对方的零窗口通知,就启动持续计时器.

TCP 流量控制、拥塞控制

流量控制: 流量控制是为了控制发送方发送速率,保证接收方来得接收. 接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率.将窗口字段设置为 0,则发送方不能发送数据. 拥塞控制: 如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高.因此当出现拥塞时,应当控制发送方的速率.这一点和流量控制很像,但是出发点不同.流量控制是为了让接收方来得及接受,而拥塞控制是为了降低整个网络的拥塞程度. TCP主要通过四种算法来进行拥塞控制:慢开始.拥塞避免

TCP之再谈解决服务器TIMEWAIT过多的问题

http://blog.chinaunix.net/uid-29075379-id-3904985.html 这个问题在网上已经有很多人讨论过了,再谈这个问题,只是根据我处理过的相关业务来谈谈我的看法.至于什么是TIMEWAIT,我想,并不需要多说. TIMEWAIT状态本身和应用层的客户端或者服务器是没有关系的.仅仅是主动关闭的一方,在使用FIN|ACK|FIN|ACK四分组正常关闭TCP连接的时候会出现这个TIMEWAIT.服务器在处理客户端请求的时候,如果你的程序设计为服务器主动关闭,那么