区块链网络端口及证书
一、网络的三类端口
区块链网络由多个互相连接的节点构成,每个节点又与客户端、浏览器和监控工具等相连接。区块链网络包括P2P端口、RPC端口和Channel端口。
RPC(即Remote Procedure Call,远程过程调用);
HTTP(HyperText Transfer Protocol,超文本传输协议) 。
OSI网络七层模型
在说RPC和HTTP的区别之前,我觉得有必要了解一下OSI的七层网络结构模型(虽然实际应用中基本上都是五层),它可以分为以下几层: (从上到下)第一层:应用层。定义了用于在网络中进行通信和传输数据的接口;
第二层:表示层。定义不同的系统中数据的传输格式,编码和解码规范等;
第三层:会话层。管理用户的会话,控制用户间逻辑连接的建立和中断;
第四层:传输层。管理着网络中的端到端的数据传输;
第五层:网络层。定义网络设备间如何传输数据;
第六层:链路层。将上面的网络层的数据包封装成数据帧,便于物理层传输;
第七层:物理层。这一层主要就是传输这些二进制数据。
实际应用过程中,五层协议结构里面是没有表示层和会话层的。应该说它们和应用层合并了。我们应该将重点放在应用层和传输层这两个层面。因为HTTP是应用层协议,而TCP是传输层协议。他们最本质的区别,就是RPC主要工作在TCP协议之上,而HTTP服务主要是工作在HTTP协议之上,我们都知道HTTP协议是在传输层协议TCP之上的,所以效率来看的话,RPC当然是要更胜一筹。
RPC主要是用在大型企业里面,因为大型企业里面系统繁多,业务线复杂,而且效率优势非常重要的一块,这个时候RPC的优势就比较明显了。
1.P2P端口
P2P端口,用于区块链节点之间的互联,包括机构内的多个节点以及多机构间节点和节点的互联。如果其他节点在机构外,那么这个连接要监听公网地址或者监听内网,且由连接公网的网关(如nginx)转发网络连接。节点之间的连接会由联盟链的准入机制控制,节点之间连接依靠节点证书验证以排除未经许可的危险连接。这个链路上的数据通过SSL方式加密,采用高强度密钥可以有效的保护通信安全。
2.RPC端口
RPC是客户端与区块链系统交互的一套协议和接口,用户通过RPC接口可以查区块链相关信息(如块高、区块、节点连接等)和发送交易。
RPC端口接受JSON-RPC格式的请求发送到节点来处理。当发送交易时,客户端需实现交易签名。要注意的是,RPC连接没有做证书验证,且网络传输默认是明文的,安全性相对不高,建议只监听内网端口,用于监控、运营管理、状态查询等内部的工作流程上。
3.Channel端口
Channel端口,控制台和客户端SDK连接Channel端口,互相之间要通过证书验证,只有经过认证的客户端才能向节点发起请求,通信数据也是采用SSL方式(一种运行在传输层和应用层之间的加密方式)加密。Channel端口使用了TCP的长连接,用心跳包检测和保持存活,通信效率较高高。Channel端口应只监听内网IP地址,供机构内其他的应用服务器通过SDK连接,不应监听外网地址或接受公网的连接,以免发生不必要的安全问题。也不要只监听本地地址(127.0.0.1或localhost),否则其他应用服务器将无法连接到节点上。
TCP长连接和短连接
TCP在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,
连接的建立通过三次握手,释放则需要四次握手,
所以说每个连接的建立都是需要资源消耗和时间消耗的。
1. TCP短连接
模拟一种TCP短连接的情况:
- client 向 server 发起连接请求
- server 接到请求,双方建立连接
- client 向 server 发送消息
- server 回应 client
- 一次读写完成,此时双方任何一个都可以发起 close 操作
在步骤5中,一般都是 client 先发起 close 操作。当然也不排除有特殊的情况。
从上面的描述看,短连接一般只会在 client/server 间传递一次读写操作!
2. TCP长连接
再模拟一种长连接的情况:
- client 向 server 发起连接
- server 接到请求,双方建立连接
- client 向 server 发送消息
- server 回应 client
- 一次读写完成,连接不关闭
- 后续读写操作...
- 长时间操作之后client发起关闭请求
3. TCP长/短连接操作过程
3.1 短连接的操作步骤是:
建立连接——数据传输——关闭连接...建立连接——数据传输——关闭连接3.2 长连接的操作步骤是:
建立连接——数据传输...(保持连接)...数据传输——关闭连接4. TCP长/短连接的优点和缺点
长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户来说,较适用长连接。
client与server之间的连接如果一直不关闭的话,会存在一个问题,
随着客户端连接越来越多,server早晚有扛不住的时候,这时候server端需要采取一些策略,
如关闭一些长时间没有读写事件发生的连接,这样可以避免一些恶意连接导致server端服务受损;
如果条件再允许就可以以客户端机器为颗粒度,限制每个客户端的最大长连接数,
这样可以完全避免某个蛋疼的客户端连累后端服务。
短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。
但如果客户请求频繁,将在TCP的建立和关闭操作上浪费时间和带宽。
5. TCP长/短连接的应用场景
长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。每个TCP连接都需要三次握手,这需要时间,如果每个操作都是先连接,
再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,
再次处理时直接发送数据包就OK了,不用建立TCP连接。
例如:数据库的连接用长连接,如果用短连接频繁的通信会造成socket错误,
而且频繁的socket 创建也是对资源的浪费。
而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,
而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,
如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,
那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。
4.端口间网络策略
节点间P2P端口需开通白名单,要求四个节点的P2P端口实现全互联;节点的Channel端口需开通白名单,要求只允许本机构内特定IP的应用(如控制台、SDK)可连接;节点的RPC端口不能对外开放,只允许同机的监控脚本及区块链浏览器访问。
三、联盟链的证书结构
三级证书结构自上而下分别为链证书、机构证书和节点证书。证书内容包括链证书版本号、序列号、证书的签名算法、消息摘要算法等生成信息;同时包括了证书的颁发者、有效期、使用者、公钥信息、SSL通信需要用到的密码套件等信息。
节点通过加载证书,在接受数据包时,根据证书规定的密码套件和其消息字段,对数据包中携带的证书进行验证。
联盟链的证书结构中有4种角色,分别是联盟链委员会、联盟链成员机构、联盟链参与方(节点和SDK)。证书生成流程如下:
1.联盟链委员会初始化根证书ca.crt
- 本地生成私钥ca.key;
- 自签生成根证书ca.crt。
2.联盟链成员机构获取机构证书agency.crt
- 本地生成私钥agency.key;
- 由本地私钥生成证书请求文件agency.csr;
- 将证书请求文件agency.csr发送至联盟链委员会;
- 联盟链委员会使用ca.key对证书请求文件agency.csr进行签发,得到联盟链成员机构证书agency.crt;
- 联盟链委员会将联盟链成员机构证书agency.crt发送至对应成员。
3.节点/SDK获取证书node.crt
- 本地生成私钥node.key;
- 由本地私钥生成证书请求文件node.csr;
- 将证书请求文件node.csr发送至联盟链成员机构;
- 联盟链成员机构使用agency.key对请求文件node.csr进行签发,得到节点/SDK证书node.crt;
- 联盟链成员机构将节点证书node.crt发送至相应节点。
区块链网络端口及证书相关推荐
- 区块链系统之《基于区块链的PKI数字证书系统》
摘要 本文提出了一种基于区块链技术构建PKI数字证书系统的方法,利用区块链去中心化.不可篡改等特点,解决了传统PKI技术中存在的单点失败问题以及多CA互信难等问题,可降低传统PKI技术中CA中心建设. ...
- Linux下搭建第一个区块链网络(FISCO BCOS)
Linux下搭建第一个区块链网络(FISCO BCOS) 概述 搭建单群组FISCO BCOS联盟链 配置及使用控制台 部署及调用HelloWorld合约 概述 FISCO BCOS是由国内企业主导研 ...
- 区块链基础知识系列 第一课 区块链网络简介
区块链是一种分布式分类帐技术 (DLT),通过建立新一代事务性应用程序的新信任度.可计帐性和透明度,来简化业务流程.区块链网络首次引入到了比特币兑换市场,但其实际使用范围远远超出了加密数字货币事务处理 ...
- 容器中运行Fabric区块链网络
2019独角兽企业重金招聘Python工程师标准>>> 容器中运行Fabric区块链网络 Fabric是区块链项目Hyperleger的主要工程,可以在容器中运行,快速建立实验区块链 ...
- 嗖嗖嗖~构建区块链网络,Starter Plan自带加速度!
如果你正打算探索 用于业务用途的分布式账本技术, 并希望构建一个业务区块链 来进行演示.试验或预生产过渡, 那么这篇文章应该非常适合你去阅读. 今天,我们将学习如何使用 StarterPlan, 以及 ...
- 002开发、部署一个共享自行车区块链网络
前言 在本系列第 1 部分文章的中,我们一起学习了 Fabric.Composer 基础知识,利用 Hyperledger Compose 搭建了 Fabric 本地开发环境,运行了一个示例区块链网络 ...
- 区块链 + 网络切片,加快5G垂直行业应用落地
随着5G 商用进程快速推进,各类新业务和应用场景(如工业互联网.V2X)不断涌现,且这些应用对网络的服务质量要求及安全性要求各不相同.网络切片(Network slicing)技术应运而生.简单来说, ...
- Fabric区块链网络
翻译自fabric官方文档: https://hyperledger-fabric.readthedocs.io/en/release-1.3/network/network.html Fabric区 ...
- 记AELF区块链网络的一次内存持续增长问题排查
记AELF区块链网络的一次内存持续增长问题排查 背景:测试同学运行AElf单节点过程中,发现节点突然不再出块,经查看日志发现 Worker(交易执行进程) 全部掉线,无法继续执行交易,从而导致节点挂掉 ...
最新文章
- leetcode算法题--树的子结构
- mongoDB简明教程-python
- Placing a Method with Eval parameter into a DataList
- Workflow Administration
- 31 | 深度和广度优先搜索:如何找出社交网络中的三度好友关系?
- 干得最多最累,工资还不如新人
- Linux centosVMware xshell使用xftp传输文件、使用pure-ftpd搭建ftp服务
- Qt5 程序启动画面图片效果
- cadence元件编号更新_OrCAD教程:如何对元件进行替换与更新
- kali linux怎么入侵手机,Kali Linux-Metasploit入侵Android手机
- 人工智能对智能建筑有哪些影响,智能建筑发展存在哪些问题?
- 99美金和299美金的开发者证书的区别
- 笔记本的麦克风录不了音说不了话
- 关键词搜索量是什么,如何看待关键词热度!
- 旅行+社交APP功能需求分析
- svn服务端的安装及其启动
- Dell H310配置no-raid直通模式
- 用ShaderGraph实现卡通的沙滩泡沫效果
- 黑马旅游网学习笔记之旅游线路查询(七)
- 带你玩转指针——指针进阶(二)