网络

Alt text

TCP 重传

  1. 超时重传:设置一个计时器,时间应略长于RTT。如果超时了还没有收到ACK,则立即重传
  2. 快速重传:当连续收到三个相同的 ACK 时,立即重传
  3. SACK(选择性确认):接收方可以告诉发送方接收到了哪几个消息,还缺哪个消息
  4. DSACK(重复确认):接收方收到两个2,就会用DSACK告诉发送方,它有两个 2,别重传了。只是因为网络延迟问题。

TCP流量控制

慢启动

刚开始传输时,发送方每收到一个ACK确认,就把发送窗口翻倍(指数增长)。初始窗口长度为 1.

拥塞避免

当窗口大小达到一个阈值(ssthresh) 时,从指数增长变成线性增长(每轮次窗口+1)。

  1. 如果此时发生超时重传,阈值被设置为当前窗口长度的一般,窗口长度被重新设置为 1,开始慢启动。
  2. 如果此时发生快速重传,阈值和窗口都被设置为当前窗口的一半,进行快恢复阶段,窗口长度线性增长。

OSI七层模型

1. 应用层:

  • HTTP,传输单位是message(报文)
  • FTP传文件
  • SMTP负责电子邮件

2. 表示层:

  • 编码解码、加密解密

3. 会话层:

  • 管理登录状态、负责同步

4. 传输层

  • TCP/UDP
  • 把报文加上port(源端口号+目标端口号),封装成 segment
  • 接收时,TCP 把字节流变成多个 segment,然后把 message 根据 port number转发到不同的端口

5. 网络层

  • 把 segment 加上源 IP 和目标 IP,封装成
  • IPv4: 前 24 位代表子网,后 8 为代表设备 ID
  • 作用:把包从一个 router 发到另一个 router/根据routing算法规划出包的转移路径

6. 数据链路层

  • 把包加上客户端MAC和目标MAC,封装成。MAC地址即网卡地址。
  • 若在同一子网。它发一个ARP给子网中的所有设备,问谁的IP是xxx, 目标设备返回它的MAC地址。

7.物理层

  • 传输比特流0和1

HTTP 1.0, 1.1, 2.0

  1. HTTP 1.0:
  • 每请求一个东西,都要三次握手四次挥手
  1. HTTP 1.1:
  • 支持长连接,支持长连接,同一个连接可以发送多个请求
  1. HTTP 2.0:
  • 多路复用,一个连接可以同时处理多个请求
  • HPACK 算法,在服务器维护一张 HPACK 表,里面存放来自客户端的请求头。
  • 二进制格式,数据传输快

HTTP 请求报文

  1. 请求行
  • GET/POST
  • HTTP版本
  • url
  1. 请求头
  • user-agent
  • Host: www.test.edu.cn
  • Cookie: 123456
  • Accept: image/jpeg
  • Accept-Encoding: gzip, deflate (说明自己可以接收哪些压缩方法)
  • Content-Type:(如果有请求体的话)
  • Content-Length: 112(如果有请求体的话)
  • Connection: Keep-alive

  1. 请求体:如果是GET方法,则请求体为空;POST、PUT方法有请求体