美文网首页
HPFEEDS协议

HPFEEDS协议

作者: 小小怪吃吃吃 | 来源:发表于2019-05-16 10:30 被阅读0次

参考链接:
1、http://phantom0301.cc/2016/02/19/Hpfeeds/
2、http://www.yanglajiao.com/article/xumesang/50569842
3、http://www.cnblogs.com/lijingchn/p/5566662.html

在对一些开源蜜罐进行研究时,不可避免地会涉及到hpfeeds协议,那么hpfeeds协议究竟是什么呢?里面的一些机制、使用又是怎样的一个情况呢?为什么开源蜜罐MHN、T-pot都使用这个协议呢?

一、HPFEEDS协议是什么

hpfeeds是一个轻量级的验证发布-订阅协议(authenticated publish-subscribe protocol)。

  • 1、轻量级:简单来说就是代码量较少、功能相对不复杂。
  • 2、验证:需要认证的公开协议。
  • 3、发布-订阅协议:订阅发布协议定义了一种一对多的依赖关系,让多个订阅者对象同时监听某一个主题对象。这个主题对象在自身状态变化时,会通知所有订阅者对象,使它们能够自动更新自己的状态。它是为了解决这样一种情况的发生,一个对象的改变需要同时改变其他对象,而且它不知道具体有多少对象需要改变。这就类似于发传单,目标发送通知,没有指定特定的对象,通知会自动传播,观察者自己决定是否需要看传单,发送者对于传单是否被看一无所知。
二、HPFEEDS协议简介

hpfeeds把不同的数据用频道来划分,支持传送任意的二进制数据。由频道的使用者决定传送数据结构的形式。进入频道需要一个“授权钥匙”(Authkey),它由两部分组成:ident和secret,相当于身份和密码。把密码和每次连接的一个随机数进行hash摘要算法然后一起发送给服务器(即发送到服务器的secret映射到一个连接),这样保证不会被窃听,所以它可以运行在SSL、TLS下。不同的钥匙会被赋予不同的频道权限。

三、HPFEEDS协议组成

1、线路协议组成:每个hpfeeds协议消息都携带了一个固定格式的消息头,有两个参数:消息总长度和请求类型。


消息类型
完整消息

2、消息的认证过程

  • 1)服务器针对每一个连接发送一个随机数
  • 2)客户端发送id和sha1(随机数+"授权钥匙")散列
  • 3)服务器通过id查找"授权钥匙"并检查散列值
  • 4)服务器检查数据类型,是要发布还是要订阅
四、HPFEEDS的原理

hpfeeds协议通过以下几部分实现:hpfeeds server, hpfeeds client,mongodb数据库。

  • 1、hpfeeds server:
    负责为每个client的连接生成一个连接标志;
    检查请求连接的client的id和sha1(nonce+Authkey);
    检查client的请求类型,发布还是接收。
  • 2、hpfeeds client:
    每个hpfeeds client都即可以作为发布者也可以作为订阅者,发布者和订阅者并不要求必须同时存在。
  • 3、mongodb:
    mongodb数据库用来存储每个client的id和secret,并且每当有client请求连接server时,server都会从mangodb中取出该client注册时的id和secret进行对比。 若对比一致则认证通过,client可以和server正常建立连接;若不一致则client与server建立连接失败。
  • 4、client和server的认证过程:


    认证

hpfeeds协议建立连接及通信的过程: 
1、Client发起连接请求;
2、server为每个client的连接生成一个连接标志,并将其发送给请求连接的client;
3、client发送自己的id和sha1(nonce+Authkey)到server进行认证;
4、server从mongodb中取出相应的信息检查验证,若认证通过,保持连接并执行后续操作。否则,断开连接;
5、client发起publish/subscribe请求;
6、server检查client请求消息的类型,发布/订阅。

五、为什么使用HPFEEDS
整个协议实现了三方的功能独立。使用这种方式降低了应用与业务逻辑之间的耦合,统一一个对外的发布接口,只需要关心监听的类型,不关心监听的具体处理人。只管发,不管到不到。很方便的建立一种一对多的依赖关系。

优点:
1.降低耦合。发布者对于接收者的数量,身份,接收的数据类型一无所知。
2.安全性高。只有消息订阅者之间的单线信息交互,不存在其他程序的信息交换。
3.测试方便。
缺点:
性能降低,订阅要进行管理

六、HPFEEDS的使用

1、普通安装步骤:

git clone https://github.com/rep/hpfeeds/
cd hpfeeds
python setup.py build
python setup.py install

2、代码分析
Hpfeeds协议server与client的通讯主要是使用TCP套接字的方式。
http://www.cnblogs.com/lijingchn/p/5566662.html

相关文章

  • HPFEEDS协议

    参考链接:1、http://phantom0301.cc/2016/02/19/Hpfeeds/2、http://...

  • t-pot使用hpfeeds协议爬坑

    hpfeeds协议是一种发布者/订阅者协议,发布者/订阅者拥有着自己的发布/订阅频道,发布者可以通过发布频道发送消...

  • git协议

    git支持的协议 local协议 https协议 ssh协议 git协议 github常用的协议

  • Dubbo服务 上传文件解决方案以及Hessian协议

    协议支持Dubbo支持多种协议,如下所示: Dubbo协议 Hessian协议 HTTP协议 RMI协议 WebS...

  • Procotol 和 Delegate

    目录 Procotol 协议的概念 协议的分类 协议的定义 协议的遵循 协议的方法 协议的属性 Delegate ...

  • 计算机网络题目

    几种协议分别属于哪一层传输层协议:TCP协议、UDP协议应用层协议:FTP、HTTP、SMTP网络层协议:IP协议...

  • ARP协议

    地址解析协议ARP 网络层四大协议:ARP协议,IP协议,ICMP协议,IGMP协议。 ARP(Address R...

  • IP数据报格式

    前言 先回顾一下TCP/IP协议栈 网络层的协议有IP协议、ARP协议、ICMP协议和IGMP协议。其中IP协议是...

  • 名词解析

    网络层:IP协议 : 网络协议ICMP协议: Internet互联网控制报文协议 ->IP协议的附属协议 IP...

  • 如何将Git仓库备份到本地

    git常用的传输协议传输协议.png哑协议:哑协议传输进度不可见;智能协议传输可见。传输速度:智能协议比哑协议传输...

网友评论

      本文标题:HPFEEDS协议

      本文链接:https://www.haomeiwen.com/subject/dbtxaqtx.html