socket心跳机制so_keepalive设计三个参数详解
来源:互联网 发布:iw引擎知乎 编辑:程序博客网 时间:2024/04/29 21:39
转载自: 点击打开链接
SO_KEEPALIVE 保持连接检测对方主机是否崩溃,避免(服务器)永远阻塞于TCP连接的输入。
设置该选项后,如果2小时内在此套接口的任一方向都没有数据交换,TCP就自动给对方 发一个保持存活探测分节(keepalive probe)。这是一个对方必须响应的TCP分节.它会导致以下三种情况:
1、对方接收一切正常:以期望的ACK响应,2小时后,TCP将发出另一个探测分节。
2、对方已崩溃且已重新启动:以RST响应。套接口的待处理错误被置为ECONNRESET,套接 口本身则被关闭。
3、对方无任何响应:源自berkeley的TCP发送另外8个探测分节,相隔75秒一个,试图得到一个响应。在发出第一个探测分节11分钟15秒后若仍无响应就放弃。套接口的待处理错误被置为ETIMEOUT,套接口本身则被关闭。如ICMP错误是“host unreachable(主机不可达)”,说明对方主机并没有崩溃,但是不可达,这种情况下待处理错误被置为 EHOSTUNREACH。
有关SO_KEEPALIVE的三个参数详细解释如下:
(16)tcp_keepalive_intvl,保活探测消息的发送频率。默认值为75s。
发送频率tcp_keepalive_intvl乘以发送次数tcp_keepalive_probes,就得到了从开始探测直到放弃探测确定连接断开的时间,大约为11min。
(17)tcp_keepalive_probes,TCP发送保活探测消息以确定连接是否已断开的次数。默认值为9(次)。
注意:只有设置了SO_KEEPALIVE套接口选项后才会发送保活探测消息。
(18)tcp_keepalive_time,在TCP保活打开的情况下,最后一次数据交换到TCP发送第一个保活探测消息的时间,即允许的持续空闲时间。默认值为7200s(2h)。
tcp_keepalive_time、tcp_keepalive_intvl、tcp_keepalive_probes之间的关系见下图
- socket心跳机制so_keepalive设计三个参数详解
- TCP/IP Socket心跳机制so_keepalive的三个参数详解
- socket心跳机制so_keepalive的三个参数详解
- socket心跳机制so_keepalive的三个参数详解
- TCP/IP Socket心跳机制so_keepalive的三个参数详解
- Linux下的TCP/IP Socket心跳机制so_keepalive的三个参数详解
- Socket心跳包机制及SO_KEEPALIVE套接口选项
- ChannelOption.SO_KEEPALIVE, true->java socket参数详解:KeepAlive
- 关于心跳机制,SO_KEEPALIVE套接口选项的一些些
- Socket心跳包机制
- Socket心跳包机制
- socket 心跳包机制
- Socket心跳包机制 .
- Socket心跳包机制
- Socket心跳包机制
- socket 心跳包机制
- Socket心跳包机制
- Socket心跳包机制
- Socket传输模式_&1
- HBase技术介绍
- Hibernate 主键生成策略
- SQL语句优化
- 《做Java开发这一年》---看.net 和 Java的对比
- socket心跳机制so_keepalive设计三个参数详解
- Java面向连接的类
- 技巧:Vimdiff 使用
- CentOS 下Xmanager的设置
- 诸子百家:谁是云计算真正的幕后推手
- MessageBox的常见用法
- SICP ex1.11
- Qtopia在arm上的移植错误:cannot find -luuid .
- JOJ2510:Product