1. 前言 & 课程介绍
目标和收益
建立对计算机网络的整体认知,对计算机网络中的各种概念(网络分层、网络协议、网络应用等)有初步的理解。进而可以在后续的实际工作中能高效解决网络问题
- 通过一个示例建立对计算机网络的整体认识
- 建立对网络协议分层的认知
- 分析HTTP1、2、3的关系
- 介绍CDN运行的基本原理
- 了解网络安全的最基本原则
分析方法
- 自底向上
- 从简单开始,逐渐变复杂
- 将模块逐步拼凑成一个系统
- 自项向下
- 从复杂开始,逐渐变简单
- 从复杂的系统问题入手,拆分为模块问题
2. 蟹堡王帝国
- 蟹堡王顾客:客户端
- 蟹堡王分店:服务端
- 小区转发点和蟹堡王城市转发分店: 路由器
- 转发表格:网络协议
3. 计算机网络基础
网络组成部分
| 名称 | 作用 |
|---|---|
| 主机:客户端和服务端 | 提供或者接收信息 |
| 路由器 | 转发主机之间的信息 |
| 网络协议 | 提供统一的格式,方便路由器和主机之间的信息进行编码和解码 |
网络结构:网络的网络
- 比奇堡和小区网络:本地网络
- 北京和上海分店 + 比奇堡:三个本地网络节点的网络
- 全国通信网络:本地网络的网络
- 区域网络、城域网和广域网
信息交换方式
电路交换 & 分组交换(计算机网络中使用的是分组交换)
网络分层
目的:让职责更加清晰,降低各层的使用成本
- 应用层
- 运输层
- 网路层
- 链路层
- 物理层
协议的存在依赖于连接
协议定义了在两个或多个通信实体之间交换的报文格式和顺序,以及报文发送和/或接受一条报文或其他事件所采取的动作
网络协议
- 基本结构:标头和载荷
- 每一层都会将上一层的标头和载荷视为这一层的载荷,并添加自己的标头
4. Web中的网络
HTTP协议
CDN解决了HTTP协议之外的问题
提升Web应用的性能
WebSocket(从HTTP协议升级而来)
- 有状态的持久连接
- 服务端可以主动推送消息
- 用WebSocket 发送消息延迟比HTTP 低
5. 网络安全
三要素
| 机密性 | 完整性 | 身份验证 | |
|---|---|---|---|
| 说明 | 攻击者无法获知通信内容 | 攻击者对内容进行篡改时能被发现 | 攻击者无法伪装成通信双方的任意一方与另一方通信 |
| 如何实现 | 已知:网络是明文的,如果双方可以通过明文通信商量出秘密信息,那么攻击者也可以,所以想要通过明文通信交换秘密信息,通信双方需要先有秘密信息 | 1. 有明文m,密码散列函数 H ,以及一个密钥 s 2. 计算 H(m + s) 获得哈希值 h 3. 将 m 和 h 组合成新信息 m + h 4. 接收方拆分 m + h,重新计算 H(m + s)得h’,对比h’和h是否一致 | 1. 签名:用于鉴别身份和防止伪造 2. 蟹老板用自己的私钥对信件进行加密,并发送给海绵宝宝 3. 海绵宝宝使用蟹老板的公钥进行解密,获得原文 4. 保证了机密性、完整性和身份验证 5. 数字签名︰对明文内容的哈希值使用私钥加密,验证者使用公钥验证 6. 数字签名(指纹)=私钥加密(密码散列函数(原文)) 7. 消息=原文+数字签名 8. 一般用于对公开内容(如包含公钥的证书)进行数字签名,防止篡改 |
| 附加 | 根证书是证书链的尽头 验证的一连串证书称为证书链 分发证书、验证证书的基础设施称为PKI,Public Key Infrastructure 所以想要实现身份验证,通信双方需要先有秘密信息,即根证书中的公钥 |
对称加密和非对称加密
- 对称加密:加密、解密用同样的密钥
- 非对称加密:加密、解密使用不同的密钥 (公和私钥),而且公钥加密只能用私钥解密、私钥加密只能用公钥解密
密码散列函数(哈希函数)
- 输入:任意长度的内容
- 输出:固定长度的哈希值
- 性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值 在计算上是不可能的
HTTPS
- 把HTTP的明文换成密文,再验证身份,即HTTPS
- HTTPS = HTTP+TLS
- TLS =身份验证+加解密身份验证靠PKI
- 服务端身份验证靠PKI,客户端身份验证靠HTTP协议