TCP协议: 拥塞控制算法
2012-05-09 21:35
218 查看
一、根据RFC2581协议规范,TCP拥塞控制采用了以下4种算法:
1. 起始缓冲算法 (slow start)
2. 解除拥塞算法 (congestion avoidance)
3. 快速重发算法 (fast retransmit)
4. 快速恢复算法 (fast recovery)
Nagle算法就是以这4种算法为基础来实现的。
根据算法原理,对于TCP数据包发送过程,简单理解如下:
TCP package-> 缓冲进window缓存区 ->
slow start网络探测 -> 连接被唤醒 -> 包大小超过拥塞阀值 ->
yes -> 开始拥塞 -> congestion avoidance解除拥塞 -> 是否解除 ->
yes -> 准备从缓存区发包到目标设备 -> 是否满足Nagle算法 ->
yes -> (a) 发送包... -> 是否超时或收到重复ack ->
yes -> fast retransmit快速重发ack -> 是否三次重发ack失败 ->
yes -> 丢包,fast recovery快速恢复 -> (a)
Post:
这里面实现需要多个定时器,对于算法细节,RFC2581规范中已说明,而源码实现可以阅读linux或开源的tcp/ip源码,
这是一个对问题不断理解与实践的过程,最终我们将完全吃透它们哟~
二、Nagle核心源码分析:
Good luck !!
mars
2012.05.09
If you have more info to
communicate with me for this article, please feel free to
Q-me:270982354 or E-me: mars.fu@foxmail.com.
1. 起始缓冲算法 (slow start)
2. 解除拥塞算法 (congestion avoidance)
3. 快速重发算法 (fast retransmit)
4. 快速恢复算法 (fast recovery)
Nagle算法就是以这4种算法为基础来实现的。
根据算法原理,对于TCP数据包发送过程,简单理解如下:
TCP package-> 缓冲进window缓存区 ->
slow start网络探测 -> 连接被唤醒 -> 包大小超过拥塞阀值 ->
yes -> 开始拥塞 -> congestion avoidance解除拥塞 -> 是否解除 ->
yes -> 准备从缓存区发包到目标设备 -> 是否满足Nagle算法 ->
yes -> (a) 发送包... -> 是否超时或收到重复ack ->
yes -> fast retransmit快速重发ack -> 是否三次重发ack失败 ->
yes -> 丢包,fast recovery快速恢复 -> (a)
Post:
这里面实现需要多个定时器,对于算法细节,RFC2581规范中已说明,而源码实现可以阅读linux或开源的tcp/ip源码,
这是一个对问题不断理解与实践的过程,最终我们将完全吃透它们哟~
二、Nagle核心源码分析:
Good luck !!
mars
2012.05.09
If you have more info to
communicate with me for this article, please feel free to
Q-me:270982354 or E-me: mars.fu@foxmail.com.
相关文章推荐
- TCP协议拥塞控制算法(Reno、HSTCP、BIC、Vegas、Westwood)
- TCP协议滑动窗口协议以及拥塞控制算法
- TCP拥塞控制算法内核实现剖析(二)
- TCP拥塞控制算法内核实现剖析(十)
- TCP拥塞控制算法内核实现剖析(七)
- 拥塞控制算法公平性分析
- TCP拥塞控制算法 优缺点 适用环境 性能分析
- TCP拥塞控制算法内核实现剖析(四)
- TCP拥塞控制算法纵横谈-Illinois和YeAH
- TCP拥塞控制算法内核实现剖析
- TCP拥塞控制算法内核实现剖析(十)
- TCP拥塞控制算法纵横谈-Illinois和YeAH
- TCP拥塞控制算法内核实现剖析(七)
- TCP拥塞控制算法 优缺点 适用环境 性能分析
- TCP拥塞控制算法内核实现剖析(三)
- TCP拥塞控制算法内核实现剖析(四)
- TCP拥塞控制算法内核实现剖析(八)
- TCP拥塞控制算法 — CUBIC的补丁(一)
- TCP拥塞控制算法内核实现剖析(三)
- TCP拥塞控制算法内核实现剖析(八)