keeplive 2个小时发送一次包
超时重传:
http://blog.csdn.net/isthefaithcounts/article/details/9879453
超时重传时间:
tcp_done:
if (!sock_flag(sk, SOCK_DEAD))
sk->sk_state_change(sk);//wakeup
客户TCP持续重传数据分节,试图从服务器上接受一个ACK。(源自Berkeley的实现重传该数据分节12次,共等待约9分钟才放弃重传。
read 返回一个错误码,代码阅读
laykon:
超时重传时,对端没有重启,返回ETIMEOUT , 如果重启,返回ECONNRESET
我们保留了tcpdump输出的时间戳,以便推理TCP的超时重传策略。观察TCP报文段6~11被发送的时间间隔,它们分别为0.2s、0.4s、0.8s、1.6s和3.2s。由此可见,TCP一共执行5次重传,每次重传超时时间都增加一倍(因此,和TCP超时重连的策略相似)。在5次重传均失败的情况下,底层的IP和ARP开始接管,直到telnet客户端放弃连接为止。
Linux有两个重要的内核参数与TCP超时重传相关:/proc/sys/net/ipv4/tcp_retries1和/proc/sys/net/ipv4/tcp_retries2。前者指定在底层IP接管之前TCP最少执行的重传次数,默认值是3。后者指定连接放弃前TCP最多可以执行的重传次数,默认值是15(一般对应13~30min)。在我们的实例中,TCP超时重传发生了5次,连接坚持的时间是15min(可以用date命令来测量)。
虽然超时会导致TCP报文段重传,但TCP报文段的重传可以发生在超时之前,即快速重传,这将在下一节中讨论。
tcp 超时重传, 每次超时重传时间加倍。
http://book.2cto.com/201306/25422.html
http://blog.csdn.net/zhangskd/article/details/35281345
例子程序:
http://www.cnblogs.com/yuxingfirst/archive/2013/07/03/3170333.html