协议栈 栈close 处理流程

来源:互联网 发布:硬盘mac不能写入文件 编辑:程序博客网 时间:2024/06/03 20:52
msl 时间  2分钟 30s 60 1


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

0 0
原创粉丝点击