Chapter 2.1:网络应用与应用层协议的基本框架Chapter 2.1 的作用,是在学习 HTTP、SMTP、DNS 等具体协议之前,先回答一个更基础的问题:网络应用到底如何让不同主机上的程序互相通信。它的核心不在某个单独协议,而在应用层设计的共同框架。
本节核心结论: 网络应用运行在端系统上,应用进程通过 socket 使用 TCP/UDP 服务,应用层协议规定 message 的格式、语义和交互规则。1. 应用层在网络中的位置应用层位于 Internet 五层协议栈的最上层。Web、邮件、聊天、游戏、视频会议等网络应用,运行在手机、电脑和服务器等端系统上,而不是运行在网络核心的路由器或交换机中。
这带来一个重要好处:应用开发者通常不需要修改路由器或 ISP 基础设施,就能部署新应用、更新协议逻辑、快速迭代功能。网络核心主要负责分组转发,不理解具体应用语义。
flowchart TD
App[应用进程] --> Socket[Socket API]
Socket --> Transport[TCP 或 UDP]
Transp ...
Chapter 1.3:协议分层、封装、安全与互联网历史Chapter 1.3 的主线,是用分层思想理解互联网。网络系统包含主机、路由器、链路、应用、协议、硬件和软件,如果把所有功能混在一起设计,系统会难以理解、维护和升级。分层的意义,就是把复杂通信拆成若干可管理的问题:应用如何交换消息,进程如何传输数据,主机如何跨网络到达,邻接节点如何交付,bit 如何在媒介上传播。
本节核心结论: 每一层使用下层服务,通过本层协议实现自己的功能,并向上一层提供服务;数据发送时逐层封装,接收时逐层解封装。1. 为什么网络需要分层网络是复杂系统。它同时包含端系统、路由器、交换机、链路、应用程序、协议、操作系统和物理媒介。若不分层,每次修改底层链路、路由算法或应用协议,都可能牵动整个系统。
分层把问题拆开:
应用层解决应用进程之间交换什么消息。
传输层解决进程到进程的数据传输。
网络层解决主机到主机的路由。
链路层解决相邻节点之间的数据传输。
物理层解决 bit 如何在媒介上传播。
分层的好处是概念清晰、模块化、易维护、易替换。例如 WiFi 换成以太网,不需要重写 HTTP;底层链路变化时,上层 ...
Chapter 1.2:Internet 结构、延时、丢包与吞吐量Chapter 1.2 在 Chapter 1.1 的基础上继续追问两个问题:第一,全球大量网络到底如何互联成 Internet;第二,分组在网络中传输时为什么会慢、为什么会丢、吞吐量又由什么决定。前者属于 Internet structure,后者属于 network performance。
本节核心结论: Internet 是由多层 ISP、IXP 和内容提供商网络互联形成的复杂结构;分组传输性能主要由延时、丢包和吞吐量刻画。1. Internet 是网络中的网络小写 internet 泛指互联网络,是一种把多个网络连接起来的通用概念;大写 Internet 是专有名词,指全球公共互联网。
端系统不会直接连接到世界上所有主机。电脑、手机和服务器通常先接入本地 ISP、校园网、企业网或移动网络,再通过 ISP 之间的互联到达其他网络。任意两台主机能够通信,前提是它们所在的接入网络最终能通过某种结构互相到达。
最朴素的设想是让所有 access ISP 两两直连,但如果有 N 个 ISP,连接数会接近 O(N^2)。 ...
Chapter 1.1:从互联网整体图像到分组交换Chapter 1.1 的学习目标,是先建立“计算机网络到底由什么组成、如何通信、为什么要这样传输”的总体框架。后续学习应用层、传输层、网络层时,会不断回到这张地图:应用在网络边缘产生数据,数据经接入网进入网络核心,再由路由器和交换机沿链路逐跳转发。
本节核心结论: Internet 不是单台机器或单个网络,而是由大量端系统、接入网、网络核心、通信链路和协议共同构成的“网络的网络”。1. Internet 是“网络的网络”Internet 可以理解为许多网络互联形成的巨大系统。用户的电脑、手机或服务器并不是直接连到全世界所有设备,而是先连入家庭网、校园网、企业网、移动网络或 ISP 网络,再通过这些网络之间的互联抵达远端主机。
从组成角度看,Internet 包含四类核心对象:
端系统:电脑、手机、服务器等运行应用程序的主机。
中间节点:路由器、交换机等负责转发数据的设备。
通信链路:有线或无线链路,用来承载 bit。
协议:规定通信双方如何交换消息的规则。
flowchart TD
App[应用] --> H ...
blockchain
Unread第 5 讲:BTC 实现(二):挖矿概率、安全性与攻击分析1. 本节主线
本节从概率角度解释比特币挖矿:每次尝试 nonce 都可以看作一次伯努利试验(Bernoulli trial)。
通过伯努利过程、泊松过程和指数分布,理解为什么比特币出块时间具有无记忆性(memoryless property)。
分析比特币总量为什么约为 2100 万,以及区块奖励减半机制如何产生稀缺性。
讨论比特币安全性:挖矿不能绝对保证安全,只能提供概率意义上的安全保证。
重点理解双花攻击(double spending attack)、确认数(confirmation)、零确认(zero confirmation)和自私挖矿(selfish mining)。
2. 核心概念速览
概念
简要理解
在本节中的作用
nonce
矿工不断修改的随机数
用于反复尝试找到满足难度要求的区块哈希
伯努利试验(Bernoulli trial)
只有成功 / 失败两种结果的随机试验
每次尝试一个 nonce 可视为一次伯努利试验
伯努利过程(Bernoulli process)
一系列相互独立 ...
blockchain
Unread第 5 讲:BTC 实现(一)1. 本节主线
本节从“比特币如何具体实现去中心化账本”出发,重点讲 transaction based ledger。
比特币不直接记录“账户余额”,而是通过历史交易和 UTXO(Unspent Transaction Output) 推算余额。
交易合法性检查的核心问题是:你要花的币是否真的存在、是否已经被花过。
矿工的激励不仅来自 block reward,还来自 transaction fee。
挖矿并不是对整个区块所有交易直接求 hash,而是对 block header 求 hash,其中包含 Merkle root 来承诺交易集合。
2. 核心概念速览
概念
简要理解
在本节中的作用
Transaction based ledger
基于交易记录的账本模式
比特币采用的账本模型,不直接记录账户余额
Account based ledger
基于账户余额的账本模式
与比特币形成对比,以太坊更接近这种模式
UTXO
尚未被花费的交易输出集合
用于推算余额、检测 double spending
Transaction inp ...
blockchain
Unread来源依据:课程文字稿《04-BTC-协议3》;笔记结构与写作规范参考《00笔记生成指南》
第 4 讲:BTC 协议(三)——PoW 共识、分叉与挖矿奖励1. 本节主线
比特币不是按“账户数量”投票,而是按计算力投票。
节点通过不断尝试 nonce 来求解 computational puzzle,从而争夺记账权。
一个区块即使交易和区块头本身都合法,也不一定会被接受;它还必须扩展在最长合法链上。
分叉可能来自攻击,也可能来自两个矿工几乎同时挖出区块。
出块奖励和 coinbase transaction 是比特币发行新币的唯一方式,也是矿工参与挖矿的重要激励。
比特币共识要达成的不是“谁说了算”,而是所有诚实节点对去中心化账本内容达成一致。
2. 核心概念速览
概念
简要理解
在本节中的作用
记账权
向比特币账本写入下一个区块的权利
只有成功挖矿的节点才能发布新区块
nonce
区块头中的随机数字段
矿工不断尝试不同 nonce,寻找满足难度要求的哈希
computational puzzle
需要大量尝试才能解出的计算难题
用来让记账权与算力挂钩
block ...
blockchain
Unread第 4 讲:BTC 协议 2——共识问题与投票方案的局限依据:课程文字稿 ,笔记生成指南 。
1. 本节主线
区块链是一个去中心化账本,但账本内容必须在全网形成统一说法,否则每个节点各记各的账,系统就失去意义。
本节从“谁决定下一个区块写什么”出发,引出区块链中的**共识(consensus)**问题。
传统分布式系统中有 FLP impossibility result、CAP theorem、Paxos 等理论和协议,但 Bitcoin 面对的是开放网络,不能直接照搬。
简单投票方案在联盟链中可以考虑,但在 Bitcoin 这种任何人都能创建账户的系统中,会受到 Sybil Attack 的威胁。
本节的核心作用是说明:Bitcoin 不能按“账户数量”投票,必须寻找另一种决定记账权的机制。
2. 核心概念速览
概念
简要理解
在本节中的作用
共识(consensus)
多个节点对某个系统状态达成一致
解决“下一个区块写什么、账本以谁为准”的问题
去中心化账本
没有单一中心服务器维护的账本
需要所有诚实节点最终认可同一条账本历史
分布式哈希表例子
多台机器共同维 ...
blockchain
Unread依据附件文字稿与笔记生成指南整理。
第 4 讲:BTC 协议(一)1. 本节主线
本节从“如何设计一种数字货币”出发,引出数字货币最核心的问题:double spending attack。
单纯依靠数字签名只能证明“货币由谁发行、交易由谁授权”,但不能阻止数字文件被复制后重复花费。
中心化系统可以通过央行数据库记录每个币的归属来防止 double spending,但这依赖中心机构。
Bitcoin 的核心思路是:把“央行数据库”改造成由所有用户共同维护的 blockchain。
本节重点解释 Bitcoin transaction、hash pointer、public key hash、Bitcoin script、block header / block body、full node / lightweight node 之间的关系。
2. 核心概念速览
概念
简要理解
在本节中的作用
数字签名(digital signature)
用 private key 签名,用 public key 验证
证明交易确实由币的拥有者授权
double ...
blockchain
Unread第 3 讲:BTC 数据结构1. 本节主线
本节课讲 Bitcoin 中最基础的两类数据结构:blockchain 和 Merkle tree。
两者的共同核心都是 hash pointer:既能定位数据,又能验证数据是否被篡改。
blockchain 用 hash pointer 把一个个 block 连成链,从而形成 tamper-evident log。
Merkle tree 用 hash pointer 组织一个 block 内部的 transactions,使轻节点可以高效验证某笔交易是否被包含在区块中。
本节重点不是复杂的共识机制,而是理解 Bitcoin 为什么能用数据结构本身提供“可验证性”。
2. 核心概念速览
概念
简要理解
在本节中的作用
hash pointer
保存“指向某数据的引用”和“该数据的 hash 值”
用来检测被指向数据是否被篡改
blockchain
由 block 组成的链表,但链接方式是 hash pointer
让任意历史 block 的修改都会影响后续 hash
Genesis Block
Bitcoin 系统中的 ...








