HTTP是万维网通信的基础构成,是一个简单的请求相应协议,基于TCP之上80号端口
通信原理
DNS解析
将域名甩个DNS服务器解析,将域名化为IP访问
建立TCP连接
如图,客户端先发送一个sys置位seq为x(任意值)的报文给服务器端,待服务器接收以后发送一个sys置位,seq为y,Ack=x+1(sys置位表建立连接,Ack表期望收到的序列号),客户端收到后回复Ack=y+1,seq=x+1的报文进行应答,至此,TCP连接完成
HTTP请求
URL:统一资源定位器,用于标识网络资源所在位置,即web地址
HTTP响应
即HTTP消息
HTTP 的版本
HTTP/0.9
提出概念,只能进行文本间交互,由于无法进行内容的协商,在双发的握手和协议中,并没有规定双发的内容是什么,也就是图片是无法显示和处理的
HTTP/1.0
引入基本的请求-响应模型。
每次请求都会新建一个连接,请求结束后关闭连接,效率较低。(RFC1945)
HTTP/1.1
默认支持 持久连接(Keep-Alive),提升了性能。
引入了 管线化(Pipelining),允许客户端在等待响应的同时发送多个请求(虽然实际应用较少)。(RFCRFCRFC 2616)
HTTP/2.0
基于二进制帧传输数据,替代了传统的文本格式。
支持 多路复用(Multiplexing),在单个连接上同时传输多个请求和响应,避免了 HTTP/1.x 的“队头阻塞”问题。
引入了 服务器推送(Server Push),允许服务器主动向客户端发送资源,减少延迟。(RFC7540)
HTTP/3.0
基于 QUIC 协议(使用 UDP),进一步提升传输效率和可靠性。
解决了 TCP 的一些固有问题,如握手延迟和连接迁移问题。(RFC9114)
状态码
1xx:信息性相应
2xx:成功
3xx:重定向错误
4xx:客户端错误
5xx:服务器错误
常见代码
200:OK,一般出现于GET和POST请求
201:Create,成功创建一个资源POST或者PUT
204:NO connect,创建成功,无内容返回
301:Moved Permanently,资源永久重定向到新URL
302:Found,资源暂时重定向到新 URL
400:Bad request,客户端存在语法错误
401:Unauthorized,需要身份验证
403:Forbidden,服务器禁止访问
404:Not Found,资源不存在
500:Internal Server Error,服务器内部出错
502:Bad Gateway,网关收到无效响应
503:Service Unavailable,服务器超载或维护中,暂时不可用