胡伟煌

个人博客

IP协议

1. IP基础 TCP/IP的心脏是互联网层,这一层主要有IP和ICMP两个协议组成,在OSI参考模型中为第三层(网络层)。网络层的主要作用是实现终端节点之间的通信(点对点通信)。 1.1. 网络层与数据链路层的关系 1.2. IP寻址 IP地址用于在“连接到网络中的所有主机中识别出进行通信的目标地址”。因此TCP/IP通信中所有主机或路由器必须设定自己的IP地址(每块网卡至少配置一个或以......

TCP协议

1. 传输层的作用 1.1. 传输层的定义 IP首部有个协议字段,用来标识传输层协议,识别数据是TCP的内容还是UDP的内容。同样,传输层,为了识别数据应该发给哪个应用也设定了这样的编号,即端口。 1.2. 通信处理 应用协议大多以C/S形式运行,即服务端需提前启动服务,监听某个端口,当客户端往该端口发送数据时,可以及时处理请求。 服务端程序在UNIX系统中称为守护进程,例如HTTP的服务......

UDP协议

1. UDP协议概述 UDP:User Datagram Protocol的缩写,提供面向无连接的通信服务,在应用程序发来数据收到那一刻则立即原样发送到网络上。即使出现丢包也不负责重发,包出现乱序也不能纠正。 UDP可以随时发送数据,本身处理简单高效,但不具备可靠性,适合以下场景: 包总量较少的通信(DNS、SNMP等) 视频、音频等多媒体通信(即使通信) 限定于LAN等特定网络中的应用通......

TCPIP基础

1. 基础知识 1.1. 协议 计算机与网络设备要相互通信,必须基于相同的方法。比如,如何探测到通信目标,使用哪种语言通信,如何结束通信等规则要事先确定。 不同硬件,操作系统之间的通信都需要一种规则,我们将这种事先约定好的规则称之为协议。 1.2. 地址 地址:在某一范围内确认的唯一标识符,即数据包传到某一个范围,需要有一个明确唯一的目标地址。 类型 层 地址 说明 端口号 传......

[Ethereum] 以太坊系列(一)之以太坊介绍

1. 以太坊的介绍 以太坊是一个开放的区块链平台,允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用,同比特币一样,以太坊由全球范围的很多人共同创建,不受任何个人控制。 2. 下一代区块链 区块链技术是比特币的底层技术。在比特币中,分布式数据库被设想为一个账户余额表(总账),交易通过比特币的转移来实现个体之间无需信任基础的金融活动。以太坊试图实现一个总体上完全无需信任基础的智能合约......

[Ethereum] 以太坊系列(二)之账户管理

1. 账户 以太坊有两种账户类型: 外部账户(EOA) 合约账户 所有账户的状态代表以太坊网络的状态,以太坊网络会和每一个区块一起更新,网络需要达成关于以太坊的共识。账户代表外部代理人的身份,账户运用非对称加密的私钥来签署交易,以便以太坊虚拟机可以安全验证交易发送者的身份。 2. 钥匙文件(Keyfiles) 每个账户都由一对密钥来定义,包括公钥和私钥。账户以地址为索引,地址由公钥生成,......

[Blockchain] 区块链系列(八)之区块链介绍

1. 区块链简介 1.1. 区块链的概念 区块链是一个去中心化的分布式数据库,该数据库由一串使用密码学方法产生的数据区块有序链接而成,区块中包含有一定时间内产生的无法被篡改的数据记录信息。 区块中包含了数据记录、当前区块根Hash、前一个区块根Hash、时间戳以及其他信息。数据记录的类型可以根据场景决定,比如为资产交易记录、资产发行记录等。 从技术层面看,区块链是一个基于共识机制、去中心化的......

[Blockchain] 区块链系列(六)之比特币交易

1. 比特币交易简介 比特币交易是比特币系统最重要的部分,本质是数据结构,数据结构中含有比特币交易参与者价值转移的相关信息。比特币区块链是一本全球复制记账总账簿,每个比特币交易即账簿上公开的一页转账记录。 2. 比特币交易的生命周期 创建比特币交易,通过一个或多个签名加密,签名标志了该比特币的使用许可。 交易广播到比特币网络中,每个节点进行验证,并进行广播,直到该交易被大多数节点接收。 比......

[Blockchain] 区块链系列(四)之密钥和地址

1. 比特币密钥 比特币的所有权是通过数字密钥、比特币地址和数字签名来确定的,数字密钥不存在网络中,而由用户生成,存储在一个文件或简单的数据库中,一般称之为钱包。 比特币交易都需要一个有效的签名才会被存储到区块链中,只有有效的密钥才能产生有效的数字签名,因此拥有密钥副本就拥有了该账户的比特币控制权。 密钥是成对出现的,由公钥和私钥组成。公钥类似银行账号,私钥类似支票签名。在比特币交易环节, ......

nfs-client-provisioner源码分析

如果要开发一个Dynamic Provisioner,需要使用到the helper library。 1. Dynamic Provisioner 1.1. Provisioner Interface 开发Dynamic Provisioner需要实现Provisioner接口,该接口有两个方法,分别是: Provision:创建存储资源,并且返回一个PV对象。 Delete:移除对......