HTTP
基本知识
定义
超文本传输协议(Hyper Text Transfer Protocol,HTTP)。
在TCP/IP协议族位置
TCP/IP协议族分为4层
- 应用层 例如:DNS,DHCP,FTP,HTTP…
- 传输层 例如:TCP,UDP
- 网络层 例如:IP,ICMP…
- 数据链路层
http状态码
| 类别 | 原因短语 | |
|---|---|---|
| 1XX | Informational(信息性状态码) | 接收的请求正在处理 |
| 2XX | Success(成功状态码) | 请求正常处理完毕 |
| 3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
| 4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
| 5XX | Sever Error(服务器错误状态码) | 服务器处理请求出错 |
http报文
请求报文
- 请求行
- 请求首部字段
- 通用首部字段
- 实体首部字段
- 其他
响应报文
- 状态行
- 响应首部字段
- 通用首部字段
- 实体首部字段
- 其他
http与https
HTTP 与 HTTPS 有哪些区别?
- HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。
- HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。
- HTTP 的端口号是 80,HTTPS 的端口号是 443。
- HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。
http演变
http1.1比http1.0的改进
-
使用 TCP 长连接的方式改善了 HTTP/1.0 短连接造成的性能开销。
http1.0的缺点:必须为每个请求对象建立和维护一个新的TCP连接
-
支持管道(pipeline)网络传输,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。
但是,pipeline在接收response返回时,也必须依顺序接收,如果前一个请求遇到了阻塞,后面的请求即使已经处理完毕了,仍然需要等待阻塞的请求处理完毕。第一个请求阻塞后,后面的请求都需要等待,这也就是队头阻塞(Head of line blocking)。
http2比http1.1的改进
- 头部压缩
- HTTP/2 会压缩头(Header)如果你同时发出多个请求,他们的头是一样的或是相似的,那么,协议会帮你消除重复的部分。
- 二进制格式
- 不在采用纯文本报文,使用二进制格式
- 报文组成:
- 头信息帧
- 数据帧
- 数据流
- HTTP/2 的数据包不是按顺序发送的,同一个连接里面连续的数据包,可能属于不同的回应。因此,必须要对数据包做标记,指出它属于哪个回应。
- 客户端还可以指定数据流的优先级。优先级高的请求,服务器就先响应该请求。
- 多路复用
- 得益于数据流,每个流可以传输不同请求的数据(二进制帧),即使一个请求被阻塞了,也不会影响别的请求
- 服务器推送
本文由作者按照
CC BY 4.0
进行授权