Chinaunix首页 | 论坛 | 博客
  • 博客访问: 577381
  • 博文数量: 353
  • 博客积分: 1104
  • 博客等级: 少尉
  • 技术积分: 1457
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-23 23:02
个人简介

1、刚工作时做Linux 流控;后来做安全操作系统;再后来做操作系统加固;现在做TCP 加速。唉!没离开过类Unix!!!但是水平有限。。

文章存档

2015年(80)

2013年(4)

2012年(90)

2011年(177)

2010年(1)

2009年(1)

分类: 网络与安全

2015-06-09 12:32:08

 
内核版本:linux-3.12.6
文     件:tcp_input.c

1、当TCP连接建立后,TCP 拥塞状态机初始状态为TCP_CA_Open(默认状态);

2、当tcp_left_out() 返回值不为零或 tcp_any_retrans_done()返回值为真时,
        状态机转换到TCP_CA_Disorder(乱序)状态。

3、主要的函数调用链如下:
     tcp_fastretrans_alert
              |----tcp_try_keep_open ---->tcp_set_ca_state
              |----tcp_try_to_open
                           |---tcp_try_keep_open ---->tcp_set_ca_state

4、当TCP 拥塞状态机处于其它状态时,在每收到ACK的时候,都会尽力尝试恢复到默认状态;

5、TCP_CA_open -->TCP_CA_Disorder 条件转换代码如下:

点击(此处)折叠或打开

  1. static void tcp_try_keep_open(struct sock *sk)
  2. {
  3.     struct tcp_sock *tp = tcp_sk(sk);
  4.     int state = TCP_CA_Open;

  5.     if (tcp_left_out(tp) || tcp_any_retrans_done(sk))
  6.         state = TCP_CA_Disorder;

  7.     if (inet_csk(sk)->icsk_ca_state != state) {
  8.         tcp_set_ca_state(sk, state);
  9.         tp->high_seq = tp->snd_nxt;
  10.     }
  11. }


 
阅读(1897) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~