网络组成部分
主机——客户端/服务端:提供和接受信息
路由器:转发主机中的信息
信息交换方式:电路交换 & 分组交换
网络协议:提供统一格式的信息
- 标头
- 载荷
- 协议的存在依赖于连接
- 协议定义了通信实体之间交换的信息格式和顺序
网络分层
- 物理层
- 链路层
- 网络层(高速公路,不在乎路上跑的什么车)
- 运输层(卡车)
- 应用层(快递公司)
Web中的网络
红色的部分是请求,蓝色的部分是响应。
- 起始行(请求第一行)—— 请求的方法+资源路径+HTTP版本
- 状态行(响应第一行)—— HTTP版本+状态码+状态信息
HTTP1
无法多路复用,费时间和空间,效率低下。
HTTP2
将多个HTTP请求拆分到多个frame里面,每个数据包都有自己的专门标识,实现多路复用。
储存了frame的长度、类型、状态信息等。
HTTP3
HTTP2还不够快,对头堵塞的根本问题没有解决。
QUIC(Quick UDP internet connection)
可以为除HTTP协议以外的应用层提供支持,比UDP靠谱。
CDN
全国用户都可以在两跳之内通过线路访问路由器。
DNS劫持
域名解析一般网站自己处理,要加速的域名需要重定向到CDN厂商的域名解析服务处理。CDN厂商根据来源确定最近的CDN服务器的IP,用户直接访问最近的CDN服务器即可。
WebSocket
- 有状态的持久连接
- 服务端主动推送消息
- 发送消息的延迟比HTTP低
网络安全
- 机密性:攻击者即使获取了通信的内容也无法理解其含义
- 完整性:攻击者篡改内容的时候可以被发现
- 身份验证:通信前要确认双方身份
加密
- 对称加密:加密解密用同样的密钥
- 非对称加密:加密解密用不同的密钥,公钥和密钥。(公钥加密只能私钥解密,私钥加密只能公钥解密)
密码散列函数
输入任意长度的内容,输出固定长度哈希值。