网络编程释疑之:TCP半开连接的处理

  • 时间:
  • 浏览:0
  • 来源:大发3D_大发3D官方

着实,一些选项着实可不都要正确处理让当当当我们前面遇到的TCP半开连接的间题,只是 默认两小时间隔探测的实时性是有的是差了些呢?当然,让当当当我们可不都要通过修改内核参数改小时间间隔,完美了吧?只是 都要注意的是大多数内核是基于整个内核维护那先 时间参数的,而有的是基于每个套接字维护的,只是 机会把无活动周期从两小时改为(比如)2分钟,那将影响到该主机上所有开启了此选项的套接字。我可不都要让当当当我们有的是会你要承担服务器端的一些不挑选性吧。另外,心跳除了说明应用程序还活着(应用程序存在,网络畅通),更重要的是表明应用程序能正常工作。而SO_KEEPALIVE由操作系统负责探查,即便是应用程序死锁或有一些异常,操作系统也会正常收发TCP keepalive消息,而对方无法得知一些异常。

yaocoder

怎么上能正确处理?

那先 是半开连接?

参考书籍:

熟悉基于TCP协议进行linux高性能、高并发服务端编程的让当当当我们肯定应该知道每个文件描述符及其所占的资源对并发量的影响。在一些7*24甚至*365不间断运行的服务器上,八个 描述符被浪费,八个 被浪费...机会被浪费的多了,那还何谈高并发,高性能。除去文件描述被正常占用的请况外,是那先 原困了让当当当我们可用的文件描述符非要 少呢?

当客户端与服务器建立起正常的TCP连接后,机会客户主机掉线(网线断开)、电源掉电、或系统崩溃,服务器应用程序将永远不想知道(通过让当当当我们常用的select,epoll监测非要断开或错误事件),机会不主动正确处理或重启系统语录对于服务端来说会老会 维持着一些连接,任凭服务端应用程序怎么上能望穿秋水,也永远再等非要客户端的任何发表声明。一些请况只是 半开连接,浪费了服务器端可用的文件描述符。

《UNIX网络编程:卷1》

熟悉套接字通用选项的让当当当我们一定机会有了想法。TCP套接字有的是有个保持存活选项SO_KEEPALIVE嘛,机会在八个 小时之内在该套接字的任何八个 方向上都没数据交换,TCP就自动给对端发送八个 保持存活探测分节,机会此TCP探测分节的响应为RST,说明对端机会崩溃且机会重新启动,该套接字的待正确处理错误被置为ECONNRESET,套接字一种则被关闭。机会非要 对此TCP探测分节的任何响应,该套接字的正确处理错误就被置为ETIMEOUT,套接字一种则被关闭。

《Linux多程序服务端编程》

本文转自永远的让当当当我们博客51CTO博客,原文链接http://blog.51cto.com/yaocoder/12009358如需转载请自行联系原作者

没关系,着实让当当当我们可不都要在应用层模拟SO_KEEPALIVE的辦法 ,用心跳包来模拟保活探测分节。机会服务器通常要承担成千上万的并发连接,所以肯定是由客户端在应用层进行心跳来模拟保活探测分节,客户端多次收非要服务器的响应时可终止此TCP连接,而服务端可监测客户端的心跳包,若在一定时间间隔内未收到任何来自客户端的心跳包则可不都要终止此TCP连接,只是 有的是效正确处理了TCP半开连接的请况。