我正在编写一个接受传入TCP连接的服务器.假设服务器已接受TCP连接,并且已从客户端接收到16个(左右)字节.知道那16个字节服务器如何检测客户端是否想要发起SSL握手?
我做了一个实验,它表明在我的Linux系统上通过SSL连接到localhost(127.0.0.1或AF_UNIX)会使客户端发送以下握手(hexdump),然后是16个看似随机的字节:
8064010301004b0000001000003900003800003500001600001300000a07
00c000003300003200002f03008000000500000401008000001500001200
0009060040000014000011000008000006040080000003020080
Run Code Online (Sandbox Code Playgroud)
服务器应如何探测前几个字节,以便能够确定客户端是否正在发送SSL握手?对于所有有效的SSL握手,探测器必须返回true,并且对于非SSL握手的客户端发送的消息,它必须返回false,概率很高.不允许使用任何库(如OpenSSL)进行探测.探针必须是一个简单的代码(如C或Python中的几十行).