分析方法
- 自底向上:从简单开始,逐渐变复杂;将模块逐步拼凑成一个系统;
- 自顶向下:从复杂开始,逐渐变简单;从复杂的系统问题入手,拆分为模块问题;
蟹堡王帝国
- 蟹堡王:服务端
- 主分店:isp路由器
- 分店:路由器
- 小区:含有转发点,连接路由器
- 顾客:客户端
客户端通过连接转发点,来连接路由器,再通过路由器连接isp路由器,最后通过isp路由器连接服务端完成通信。
网络基础
网络组成部分
- 主机:客户端和服务端
- 路由器
- 网络协议
网络分层
- 物理层
- 数据链路层(http协议,IP协议)
- 网络层
- 传输层(tcp协议)
- 应用层
协议
协议的存在依赖于连接
协议定义了在两个或两个以上通信实体之间交换的报文格式和顺序,以及报文发送和/或接收一条报文或其他事件所采取的动作
TCP:
Web中网络
http1.0时代,每次连接完成后要销毁连接。
http1.1时代,可以维持连接。无法多路复用
队头阻塞问题: http1.1解决方案,建立多次http连接
http2将请求拆分到多个帧里面,每个帧可以携带来自不同http的数据
帧:
- 前三个字节:载荷长度
- 第四个字节:类型
- 第五个字节:类型对应的flags
- 六到九字节:第一位是保留位,第2到32位:流ID
- 好处:调整响应传输的优先级,头部压缩,server push
HTTP3:QUIC
- Quick UDP Internet Connection
- 现存网络设备对TCP和UDP支持已经僵化
- UDP不靠谱但是QUIC靠谱
- QUIC可以为除HTTP协议以外的应用层协议提供支持
影响浏览器性能因素
- 物理极限
- 网络服务器承载量有限
CDN:DNS劫持
- 域名解析一般由网站自己处理
- 要加速的域名则重定向到CDN厂商的域名解析服务处理
- CDN厂商根据来源确定最近的CDN服务器的ip
- 用户直接访问最近的CDN服务器
离地理位置最近的cdn服务器并不一定最快,若需要转发会有延时
websocket
- 有状态的持久链接
- 服务端可以主动推送消息
- 用websocket发送消息延迟比http低
- 由http升级而来
网络安全
- 机密性:攻击者无法获知通信内容
- 完整性:攻击者对内容进行篡改时能被发现
- 身份验证:攻击者无法伪装成通信双方的任意一方与另一方通信(签名:鉴别身份和防止伪造)
HTTPS:
HTTP明文换成密文,在验证身份,即HTTPS
HTTPS=HTTP+TLS
TLS=身份验证+加解密
身份验证靠PKI
服务端身份验证靠PKI,客户端身份验证靠HTTP协议