计算机网络概论
计算机网络基础
网络组成部分
- 主机:客户端和服务端
- 路由器
- 网络协议
网络结构:网络的网络
- 局域网
- 城域网
- 广域网
电路交换&分组交换
计算机网络中用的是分组交换
网络分层
- 应用层
- 传输层
- 网络层
- 链路层
- 物理层
协议
协议的存在依赖于连接
协议定义了再两个或多个通信实体之间交换的报文格式和顺序,以及报文发送和/或接受一条报文或其他事件所采取的动作。
标头和载荷
小结
- 网络组成部分:由主机,路由器,交换机等组成
- 网络结构:网络的网络
- 信息交换方式:电路交换和分组交换(计算机网络用的是分组)
- 网络分层:分层职责,物理层,链路层,网络层,传输层,应用层
- 网络协议:标头和载荷
Web中的网络
HTTP连接模型
HTTP1.1:无法多路复用
HTTP2:帧
HTTP2:帧带来的好处
- 调整响应传输的优先级
- 头部压缩
- Server Push
HTTP2:队头堵塞,但是在TCP上
HTTP2:3RTT启动
HTTP3:QUIC
HTTP3:QUIC-1RTT
HTTP3:QUIC-0RTT
CDN
CDN这个技术其实说起来并不复杂,最初的核心理念,就是将内容缓存在终端用户附近。
内容源不是远么?那么,我们就在靠近用户的地方,建一个缓存服务器,把远端的内容,复制一份,放在这里,不就OK了?
因为这项技术是把内容进行了分发,所以,它的名字就叫做CDN——Content Delivery Network,内容分发网络。
WebSocket
- 有状态的持久连接
- 服务端可以主动推送消息
- 用WebSocket发送消息的延迟比HTTP低
小结
- HTTP1 2 3的演进历史
- CDN解决了HTTP协议之外的问题
- WebSocket从HTTP协议升级而来
网络安全
三要素
- 机密性:攻击者无法获知通信内容
- 完整性:攻击者对内容进行篡改时能被发现
- 身份验证:攻击者无法伪装成通信双方的任意一方与另一方通信
对称加密和非对称加密
- 对称加密:加密,解密用同样的密钥
- 非对称加密;加密,解密使用不同的密钥(公钥和私钥),而且公钥加密只能用私钥解密,私钥加密只能用公钥解密
密码散列函数(哈希函数)
- 输入:任意长度内容
- 输出:固定长度哈希值
- 性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能
机密性
- 加密需要加密算法和密钥等信息(统称为秘密信息)
- 网络是明文的,不安全的
完整性和身份验证
完整性和身份验证相互关联
- 向银行发起转账请求
- 银行需要确认
- 这请求真的是我发起的
- 目标账户和转账金额没有被篡改
如何实现机密性
- 已知:网络是明文的
- 如果双方可以通过明文通信商量出秘密信息,那么攻击者也可以
- 所以想要通过明文交换通信交换秘密信息,通信双方需要先有秘密信息
如何实现完整性
如何实现身份验证
HTTPS
HTTPS = HTTP + TLS
TLS = 身份验证 + 加解密
身份验证靠PKI
服务端身份验证靠PKI,客户端身份验证靠HTTP协议
小结
- 网络安全三要素:机密性,完整性和身份验证
- 在没有提前交换秘密信息的前提下,无法在不安全的信道交换秘密信息
- PKI保证了普通用户不需要“面对面”和根证书机构交换根证书
- HTTPS使用PKI完成了除客户端身份验证以外的特性,客户端身份验证靠HTTP协议实现