# HTTP基础知识

# 状态码

  • 1xx 一般代表服务器接到请求
  • 2xx 200 代表服务器接到请求,成功返回数据
  • 3xx

-- 301(永久重定向),请求返回location,之后都是一直跳转location(比如新老域名的替换)

-- 302(临时重定向),请求返回location,临时跳转到某一地址(比如百度搜索,一般都是先请求到百度,在转到相应的目标网站)。

-- 304本地有资源,读取本地资源。用于缓存。

  • 4xx 403权限禁止访问 404params或者url有问题
  • 5xx 服务端报错

# HTTP进化

# HTTP1.0

  • HTTP 1.0中 每进行一次通讯,都需要发TCP连接 传输 HTTP 数据和断开 TCP 。这样无疑效率太低。

  • 一个CDN上最多建立,6个TCP连接。且 建立TCP连接需要三次握手耗时。

# HTTP1.1

开启TCP长连接的标识 Connection:keep-alive

  • 1 队头阻塞的问题

HTTP/1.1 中使用持久连接时,虽然能公用一个 TCP 管道,但是在一个管道中同一时刻只能处理一个请求,在当前的请求没有结束之前,其他的请求只能处于阻塞状态。这意味着我们不能随意在一个管道中发送请求和接收内容。

  • 2 慢启动

建立TCP连接有个慢启动。刚开始传输数据慢。

# HTTP2.0

  • HTTP2.0 一个域名只使用一个 TCP 长连接和消除队头阻塞问题
  • 以 HTTP/2 需要实现资源的并行请求,也就是任何时候都可以将请求发送给服务器,而并不需要等待其他请求的完成,然后服务器也可以随时返回处理好的请求资源给浏览器。

HTTP/2 使用了多路复用技术,可以将请求分成一帧一帧的数据去传输,这样带来了一个额外的好处,就是当收到一个优先级高的请求时,比如接收到 JavaScript 或者 CSS 关键资源的请求,服务器可以暂停之前的请求来优先处理关键资源的请求。

# HTTP VS HTTPS

1、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

4、https就是http和TCP之间有一层SSL层,这一层的实际作用是防止钓鱼和加密。防止钓鱼通过网站的证书,网站必须有CA证书,证书类似于一个解密的签名。另外是加密,加密需要一个密钥交换算法,双方通过交换后的密钥加解密。