zoukankan      html  css  js  c++  java
  • 通讯链路的检测方法

    问题背景:

    TCP不能及时通知连接中断,如果使用keep-live机制默认时间是2小时11分钟15秒没有通讯才会发送探测消息,如依靠TCP超时机制可能要等待9分钟才能检测出网络中断,因此必须用户自己检测连接是否正常。

    连接中断可能的原因:

    1)一方主机崩溃 发不出FIN,对等方依靠重发检测链路中断,如果崩溃方在对等方准备撤销连接之前又重新启动了,若此时收到了消息则会回复RST消息给对等方,这将导致对等方撤销连接,对等方会收到ECONNECREST错误,或者下一次读导致SIGPIPE信号或EPIPE错误。

    2)一方的应用程序崩溃 可以发出FIN

    3)一方网络暂时性的瘫痪 发不出FIN

    1)和3)在现象上有点类似

    解决方案:

    1)如果所有进行通讯的数据是有消息类型的可以在同一个连接中通过心跳消息来检测

    2)如果通讯数据没有消息类型可以采用再重新开一个连接2,用连接2来监视连接1,普通做法是是再开一个心跳检测线程实现,另一种方法将在技巧20中使用。

    steven提出了用紧急数据的方式来提供heartbeat

  • 相关阅读:
    分形之城
    【SDOI2011 第2轮 DAY1】消防 树上问题+二分+贪心
    【Usaco Nov08 Gold】玩具 三分+贪心
    分治 复习
    快读板子
    最小线段覆盖 C神奇项链
    比赛经验积累1
    字符串 专题
    界面小项目之W3C
    前端小基础
  • 原文地址:https://www.cnblogs.com/happy-pm/p/3822424.html
Copyright © 2011-2022 走看看