考虑这种情况:
[wanting to write] [sent token success]
Application -------> SSL ----------->
| *peer drops*
[waiting to read] |
***blocked***<------------
换句话说,您的应用程序想要写一些东西,但SSL内部状态是WANT_READ。另一方面,对等连接已经丢失。
SSL可以通过对它自己进行一些保持活检来检测到这一点吗?在这种情况下你能做什么?
答案 0 :(得分:0)
SSL通常会检测到底层传输层(即TCP)的连接问题。这意味着通过使用TCP keep alive,可以检测到对等方是否在没有正确连接的情况下消失。除此之外,在TLS级别还有heartbeat extension,但与TCP保持活跃相反,它并未得到普遍支持。
答案 1 :(得分:0)
如果SSL通过SSL close_notify
消息检测到从SSL的角度未正确终止的连接,它会将其视为截断攻击,并会给您一条错误消息或异常,取决于您使用的API。
您的应用程序想要写一些东西,但SSL内部状态是WANT_READ。另一方面,对等连接已经丢失。
它要读取的内容是close_notify
或错误消息或异常。无论如何,当它说WANT_READ时,你必须阅读。