蟹堡王案例分析计网概况
网络组成部分
- 主机:客户端和服务端
- 路由器
- 网络协议
网络结构:网络的网络
- 比奇堡和小区网络:本地网络 区域网
- 上海分店和比奇堡:两个本地网络节点的网络 城域网
- 全国通信网络:本地网络的网络 广域网
信息交换:电路交换和分组交换 (计网使用)
- 电路交换就好比是比奇堡客服接顾客电话,顾客多时需要等待,顾客少时客服资源浪费
- 分组交换就好比是比奇堡改用传真接受订单,不会提前预留资源,当带宽被完全占用时会丢弃最早的数据包,即丢包
网络分层
应用层、运输层、网络层、链路层、物理层
协议
定义两个通信实体之间交换的报文格式和顺序以及报文发送或接受一个报文时采取的动作
标头和载荷
寄快递时对于收件人来说:快递单上寄件人和收件人是标头,包裹内容是载荷
对于快递公司来说:送件人和运输路径是标头,寄件人、收件人和包裹内容是载荷
报文格式
- 链路层的头(目标mac地址,源mac地址,类型/长度字段)
- ip协议的头(目标ip地址,源ip地址,报文长度)
- tcp协议的头(目标端口号,源端口号,顺序号,数据偏移,窗口大小,紧急指针等)
- http协议的头(请求方法,响应状态码,内容长度,身份验证,缓存控制)
- http协议的正文
在 http协议1.1**及以前的版本中,头部和正文是通过两个换行符来区分的*
Web应用
http连接:
- 短连接模型( 每个http完成响应后默认断开连接,下一个请求需要重新建立连接 )
- 持久连接模型(会有队头阻塞的问题,当一个请求很大服务器需要处理很长时间时会发生阻塞行为)
- http管线(允许同时发送多个请求,有安全问题且不能解决队头阻塞问题)
http1.1无法实现多路复用,http2拆分到帧中实现多路复用
每个帧都标明自己属于哪个流,进而说明自己属于哪个请求,从而实现多路复用
拆分为帧的额外好处
- 调整响应传输的优先级
- 头部压缩
- Server Push
http3的必要性
http2中,中间的包丢包后必须等到其丢包重传后才能继续传之后的包,从而造成队头阻塞
在https中,完成连接需要三个RTT启动,一个TCP和两个TLS
http3:QUIC应运而生
QUIC在UDP的基础上有更低的延迟和更好的拥塞控制能力QUIC支持多路复用,将多个流复用到一个QUIC连接中,解决了队头阻塞的问题QUIC使用了了0RTT和1RTT的握手方式,快速连接(首次QUIC客户端直接要钥匙,后续直接用)
http之外影响性能的内容
CDN,物理层次的限制(DNS劫持域名,重定向到CDN厂商域名解析服务)
WebSocket(由HTTP升级而来,先用HTTP建立连接再协商升级为WebSocket)
- 有状态的持久连接
- 服务端可以主动推动消息
- 用WebSocket发送消息延迟比HTTP低
网络安全
网络安全三要素
- 机密性:攻击者无法获取真实内容(最重要的是交换秘密信息)
- 完整性:攻击者篡改内容会被发现(通过密码散列函数(仍需要秘密信息))
- 身份验证:攻击者无法伪装为通信双方(通过签名,非对称加密性质)
完整性和身份验证相关联(数字签名:对密码散列函数进行私钥加密)
公钥含于证书,证书链的尽头是根证书
对称加密和非对称加密
- 对称加密:加密解密使用同样的密匙
- 非对称加密:加密解密用不用的密匙(公钥用私钥解密,私钥用公钥解密)
密码散列函数(哈希函数)
输入任意长度的内容,输出固定长度的哈希值
HTTPS
客户端验证服务端:KPI验证身份,TLS包括身份验证和加解密 HTTPS=HTTP+TLS
服务端验证客户端:应用程序(注册登录)