1 前言
建立对计算机网络的整体认知,对计算机网络中的各种概念(网络分层、网络协议、网络应用等)有初步的理解。
进而可以在后续的实际工作中能高效解决网络问题。
- 通过一个示例建立对计算机网络的整体认识
- 建立对网络协议分层的认知
- 分析HTTP 1、2、3 的关系
- 介绍 CDN 运行的基本原理
- 了解网络安全的最基本原则
2 蟹堡王帝国
- 本地网络
- 多个本地网络
- 本地网络之间的网络
- 信息转发
- 城域网
- 广域网
3 计算机网络基础
网络组成部分
- 主机:客户端和服务端
- 路由器
- 网络协议
网络结构
- 本地网络
- 本地网络节点的网络
- 本地网络的网络
区域网络、城域网和广域网
信息交换方式
- 电路交换
- 分组交换
网络分层
- 物理层
- 链路层
- 网络层
- 运输层
- 应用层
协议
标头和载荷
4 Web中的网络
HTTP
HTTP连接模型
HTTP 1
- 短连接和长连接
- HTTP管线
- HTTP队头堵塞
HTTP 2
- 帧
- 头部压缩
- Server Push
HTTP 3
- QUIC
- TCP队头堵塞
- ORTT连接
CDN
- CDN服务器分布
- CDN服务器选择
- DNS劫持
- CDN服务器内容管理策略
WebSocket
- HTTP协议升级
5 网络安全
网络安全三要素
机密性
攻击者无法获知通信内容
如何实现机密性
- 已知:网络是明文的
- 如果双方可以通过明文通信商量出秘密信息,那么攻击者也可以
- 所以想要通过明文通信交换秘密信息,通信双方需要先有秘密信息
- 加密需要加密算法和密钥等信息(统称为秘密信息)
网络是明文的,不安全
完整性
攻击者对内容进行篡改时能被发现
如何实现完整性
- 有明文m,,密码散列函数 H,以及一个密钥 s
- 计算H(m + s)获得哈希值 h
- 将 m 和 h 组合成新信息 m + h
- 接收方拆分 m + h,重新计算H(m + s)得h',对比h'和h
- 所以想要实现完整性,通信双方需要先有秘密信息
身份验证
攻击者无法伪装成通信双方的任意一方与另一方通信
如何实现身份验证
签名
用于鉴别身份和防止伪造
- 数字签名:对明文内容的哈希值使用私钥加密,验证者使用公钥验证
- 数字签名(指纹)=私钥加密(密码散列函数(原文))
- 消息=原文+数字签名
- 一般用于对公开内容(如包含公钥的证书)进行数字签名,防止篡改
PKI
保证了普通用户不需要“面对面”和根证书机构交换根证书。
证书链
非对称加密和对称加密
- 对称加密:加密、解密用同样的密钥
- 非对称加密:加密、解密使用不同的密钥(公钥和私钥),而且公钥加密只能用私钥解密、私钥加密只能用公钥解密
密码散列函数
- 输入:任意长度的内容
- 输出:固定长度的哈希值
- 性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的