《linux高性能服务器编程》学习笔记(二)之拥塞控制
2016-04-13 22:25
295 查看
上一篇写着写着电脑就崩了,估计嫌我太罗嗦了啦哈哈哈
换个地方继续罗嗦,可可,我就是这么一个罗嗦的人~~~~啦啦啦
今天让我们接着上篇开始唠叨.
拥塞控制:
由于接收方缓存的限制,发送窗口不能大于接收方接收窗口。在报文段首部有一个字段就叫做窗口(rwnd),这便是用于告诉对方自己的接收窗口,可见窗口的大小是可以变化的。
那么窗口的大小是如何变化的呢?TCP 对于拥塞的控制总结为“慢启动、加性增、乘性减”,如图所示:
![](http://img.blog.csdn.net/20160414083130053)
慢启动 :初始的窗口值很小,但是按指数规律渐渐增长,直到达到慢开始门限(ssthresh)。
CWND +=min(N,SMSS);
慢启动算法的理由是,TCP模块刚开始发送数据时并不知道网络的实际情况,需要用一种试探的方式平滑地增加CWND的大小.
拥塞避免:
使得CWND按照线性方式增加,从而减缓其扩大
两种实现方式:
每个RTT时间内按照上式计算新的CWND,而不论该RTT时间内发送端收到多少个确认.
每收到一个对新数据的确认报文段,就按照下式来更新CWND .CWND +=SMSS*SMSS/CWND.
发送端判断拥塞发生的依据有:
传输超时,或者说TCP重传定时器溢出
接受到重复的确认报文段.
快速重传和快速恢复:
发送端如果连续收到3个重复的确认报文段,就认为是拥塞完成了,然后它启用快速重传和快速恢复算法来处理拥塞.
过程如下:
1. 当 收到三个重复的确认报文段时,按照CWND=ssthresh+3*SMSS;
2. 每次收到一个重复的确认时,设置CWND = CWND+SMSS.此时发送端可以发送新的TCP报文段(如果新的CWND允许的话).
3. 当收到新数据的确认时,设置CWND = ssthresh(ssthresh是新的慢启动门限值).
快速冲传和快速回复完成之后,拥塞控制将恢复到拥塞避免阶段.
换个地方继续罗嗦,可可,我就是这么一个罗嗦的人~~~~啦啦啦
今天让我们接着上篇开始唠叨.
拥塞控制:
由于接收方缓存的限制,发送窗口不能大于接收方接收窗口。在报文段首部有一个字段就叫做窗口(rwnd),这便是用于告诉对方自己的接收窗口,可见窗口的大小是可以变化的。
那么窗口的大小是如何变化的呢?TCP 对于拥塞的控制总结为“慢启动、加性增、乘性减”,如图所示:
慢启动 :初始的窗口值很小,但是按指数规律渐渐增长,直到达到慢开始门限(ssthresh)。
CWND +=min(N,SMSS);
慢启动算法的理由是,TCP模块刚开始发送数据时并不知道网络的实际情况,需要用一种试探的方式平滑地增加CWND的大小.
拥塞避免:
使得CWND按照线性方式增加,从而减缓其扩大
两种实现方式:
每个RTT时间内按照上式计算新的CWND,而不论该RTT时间内发送端收到多少个确认.
每收到一个对新数据的确认报文段,就按照下式来更新CWND .CWND +=SMSS*SMSS/CWND.
发送端判断拥塞发生的依据有:
传输超时,或者说TCP重传定时器溢出
接受到重复的确认报文段.
快速重传和快速恢复:
发送端如果连续收到3个重复的确认报文段,就认为是拥塞完成了,然后它启用快速重传和快速恢复算法来处理拥塞.
过程如下:
1. 当 收到三个重复的确认报文段时,按照CWND=ssthresh+3*SMSS;
2. 每次收到一个重复的确认时,设置CWND = CWND+SMSS.此时发送端可以发送新的TCP报文段(如果新的CWND允许的话).
3. 当收到新数据的确认时,设置CWND = ssthresh(ssthresh是新的慢启动门限值).
快速冲传和快速回复完成之后,拥塞控制将恢复到拥塞避免阶段.
相关文章推荐
- Linux入门学习(九)
- linux及安全第八周总结——20135227黄晓妍
- Linux学习笔记知识点(一)
- linux 常用命令adb
- linux内核调试技巧之一 dump_stack
- VMware虚拟linux系统时与主机共享文件夹
- 每天进步一点点——Linux下的磁盘缓存
- ubuntu15.10 3D桌面
- LINUX内核分析第八周学习总结:进程的切换和系统的一般执行过程
- Linux内核设计与实现 第四章
- LINUX+Vmware+SVN的配置和安装
- 《Linux内核分析》第八周:进程的切换和系统的一般执行过程
- 《Linux内核分析》 第八节 进程的切换和一般的执行过程
- Linux内核分析——第八周学习笔记20135308
- CentOS 7 更新源 – 使用国内 163 yum 源
- linux常用命令
- linux命令界面入门级操作
- centos配置IP并远程登录
- 关于Linux C语言开发字符越界的问题
- Linux内核分析 笔记八 进程的切换和系统的一般执行过程 ——by王玥