以太坊RLPx加密通信协议

以太坊p2p的Server对象中使用的conn定义了一个transport接口,目前该接口的实现只看到了rlpx,可以推测以太坊p2p网络中的节点通信都采用了该协议.
RLPx协议属于会话层的协议,主要功能是在节点之间建立并维持通信,节点的发现和节点之间数据流的传输主要是由传输层的UDP和TCP协议完成.
RLPx协议实现了完备的前向安全性(Perfect Forward Secrecy),即现有的密钥泄漏不会导致之前信道上的信息被破解,因为RLPx协议每次建立的连接都使用了不同的密钥.

实现过程是通过了一次Diffie–Hellman密钥交换,连接的双方各随机生成一个私钥,然后将算出的公钥发送给对方,最后双方通过手中的密钥和对方的公钥生成了一个共享密钥,此次连接的信道上将会使用此共享密钥加密传输信息.

type rlpx struct {  // RLPx协议对象

		fd net.Conn  // 传输层连接


		rmu, wmu sync.Mutex  // 读写锁
		rw       *rlpxFrameRW  // RLPx分帧,所有的读写都通过一个一个的帧(rlpxFrame)来传递和处理
	}
newRLPX(fd)  // 返回一个transport对象,连接持续5秒
ReadMsg()  // 返回Msg对象,调用读写器的ReadMsg,连接持续30秒
WriteMsg(msg)  // 调用读写器的Wri
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值