day1 计算机网络 | 青训营笔记

114 阅读3分钟

青训营第一天 | 计算机网络

计算机网络整体认识

网络中数据交换的方式

电路交换
需建立连接,占用资源和带宽。

分组交换
不需要建立连接,可能出现分组乱序、重复与丢失现象。


TCP/IP协议4层模型

  • 链路层 负责转换数字信号和物理二进制信号。
  • 网络层 实现数据包的选路和转发,类比高速公路。
  • 传输层 传输层为两台主机上的应用程序提供端到端(end to end)的通信。只关心起始端和目的端,不在乎数据包的转发过程,类比卡车。
  • 应用层 处理应用程序的逻辑,类比快递公司。

HTTP协议

HTTP协议的报文结构

header + body 的结构,具体来说:

起始行 + 头部 + 空行 + 实体

起始行

请求报文和响应报文的起始行不同。
请求报文格式类似下面:

GET /home HTTP/1.1
方法 + 路径 + http版本

响应报文格式类似下面:

HTTP/1.1 200 OK
http版本 + 状态码 + 状态信息

头部

头部字段的格式

    1. 字段名不区分大小写
    1. 字段名不允许出现空格,不可以出现下划线_
    1. 字段名后面必须紧接着:

空行

很重要,用来区分开头部和实体。

实体

就是具体的数据了,也就是body部分。请求报文对应请求体, 响应报文对应响应体


HTTP1 HTTP2 HTTP3

HTTP1.1 的缺陷

  1. 高延迟 — 队头阻塞(Head-Of-Line Blocking)
  2. 无状态特性 — 阻碍交互
  3. 明文传输 — 不安全性
  4. 不支持服务端推送

HTTP2

HTTP/2 将http请求和响应数据分割为更小的(frame),帧首部的流标识可标识数据包来源于哪个请求。

拆分为帧的好处

  1. 实现多路复用
  2. 调整响应传输的优先级
  3. 头部压缩
  4. 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升级而来

网络安全

  • 机密性
  • 完整性
  • 身份验证

加密方式

  • 对称加密:加密解密的密钥相同
  • 非对称加密:加密解密的密钥不同(公钥和私钥)