青训营第一天 | 计算机网络
计算机网络整体认识
网络中数据交换的方式
电路交换
需建立连接,占用资源和带宽。
分组交换
不需要建立连接,可能出现分组乱序、重复与丢失现象。
TCP/IP协议4层模型
- 链路层 负责转换数字信号和物理二进制信号。
- 网络层 实现数据包的选路和转发,类比高速公路。
- 传输层 传输层为两台主机上的应用程序提供端到端(end to end)的通信。只关心起始端和目的端,不在乎数据包的转发过程,类比卡车。
- 应用层 处理应用程序的逻辑,类比快递公司。
HTTP协议
HTTP协议的报文结构
header + body 的结构,具体来说:
起始行 + 头部 + 空行 + 实体
起始行
请求报文和响应报文的起始行不同。
请求报文格式类似下面:
GET /home HTTP/1.1
方法 + 路径 + http版本
响应报文格式类似下面:
HTTP/1.1 200 OK
http版本 + 状态码 + 状态信息
头部
头部字段的格式
-
- 字段名不区分大小写
-
- 字段名不允许出现空格,不可以出现下划线
_
- 字段名不允许出现空格,不可以出现下划线
-
- 字段名后面必须紧接着
:
- 字段名后面必须紧接着
空行
很重要,用来区分开头部和实体。
实体
就是具体的数据了,也就是body部分。请求报文对应请求体, 响应报文对应响应体。
HTTP1 HTTP2 HTTP3
HTTP1.1 的缺陷
- 高延迟 — 队头阻塞(Head-Of-Line Blocking)
- 无状态特性 — 阻碍交互
- 明文传输 — 不安全性
- 不支持服务端推送
HTTP2
HTTP/2 将http请求和响应数据分割为更小的帧(frame),帧首部的流标识可标识数据包来源于哪个请求。
拆分为帧的好处
- 实现多路复用
- 调整响应传输的优先级
- 头部压缩
- Server Push
http2 在TCP上仍可能存在队头阻塞
HTTP 传输是基于
请求-应答的模式进行的,报文必须是一发一收,但值得注意的是,里面的任务被放在一个任务队列中串行执行,一旦队首的请求处理太慢,就会阻塞后面请求的处理。
HTTP3
使用了基于 UDP 协议的“QUIC”协议,解决了“队头阻塞”问题。
实现了快速握手功能
由于QUIC是基于UDP的,所以QUIC可以实现使用0-RTT或者1-RTT来建立连接,这意味着QUIC可以用最快的速度来发送和接收数据,这样可以大大提升首次打开页面的速度。0RTT 建连可以说是 QUIC 相比 HTTP2 最大的性能优势。
集成了TLS加密功能
在完全握手情况下,需要 1-RTT 建立连接。 TLS恢复会话可以直接发送加密后的应用数据,不需要额外的 TLS 握手,也就是 0-RTT。
CDN: 解决http以外的问题
WebSocket
- 有状态的持久连接
- 服务端可以主动推送消息
- 消息延迟低于HTTP
- 由HTTP升级而来
网络安全
- 机密性
- 完整性
- 身份验证
加密方式
- 对称加密:加密解密的密钥相同
- 非对称加密:加密解密的密钥不同(公钥和私钥)