自定义服务发现

时间:2017-05-15 10:08:13

标签: sockets security networking tcp

我正在尝试为我的通信框架编写服务发现协议。我打算做以下步骤:

服务器端

  1. 创建多播套接字
  2. 加入小组
  3. 广播(发送带有一些心跳的多播消息[UDP多播协议]。广播数据包含服务器IP和一些用于处理客户注册请求的端口
  4. 打开线程以从该端口上的客户端接收TCP数据包以接受注册
  5. 客户端

    1. 创建多播套接字
    2. 加入与服务器相同的多播组以接收消息
    3. 检查服务中的相关广播
    4. 从广播包中获取数据(数据是服务器IP和端口)
    5. 以注册请求的形式对服务器(收到的IP和端口)进行TCP呼叫。
    6. 关于安全漏洞,我可以在客户注册步骤中提供证书以保护它,但我的主要关注点是服务广播

      如果我在心跳中广播服务器IP和端口,这对端口泛滥等攻击非常危险(我可以提供一些安全措施,但重量级加密和解密会使服务发现滞后)。有没有替代设计?

1 个答案:

答案 0 :(得分:2)

  

如果我在心跳中广播服务器IP和端口,这对端口泛滥等攻击非常危险(我可以提供一些安全措施,但重量级加密和解密会使服务发现滞后)。有没有替代设计?

另一种设计是从客户端发送广播以发现服务器。就像DHCP和其他服务一样工作:客户端广播一个"发现"消息,所以每个服务器都可能响应服务" offer"。请在下面找到更多信息:

https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol

关于"发现滞后"你提到让客户发送第一个"发现"数据包应该将滞后减少到最小,这是"反向"你的模特。