HTTP(Hyper Text Transform Protocol,超文本传输协议),是一个简单的请求-响应协议,运行在TCP之上,工作在应用层,服务端默认端口号为80,https端口号为443。
1. 浏览器和服务器通信过程:
http是基于B/S模式的,建立通信过程如下:
1️⃣ TCP连接
浏览器与服务器三次握手,建立 TCP 连接
2️⃣ 客户端请求
建立 TCP 连接后,客户端就会向服务器发送一个 HTTP 请求信息(比如请求 HTML 资源)
3️⃣ 服务器响应
服务器接收到请求后进行处理并发回一个 HTTP 响应信息
4️⃣ 关闭连接
2. HTTP的请求方式
- HTTP 请求方式一共有 9 种:
POST 、GET 、HEAD、PUT 、
PATCH 、 OPTIONS 、DELETE 、CONNECT 、 TRACE 。
其中前三种 POST 、GET 、HEAD 是 HTTP 1.0 定义的,后六种 PUT 、PATCH 、 OPTIONS 、DELETE 、CONNECT 、 TRACE 是 HTTP 1.1 定义的。
序号 | 方法 | 描述 |
---|---|---|
1 | GET | 请求指定的页面信息,并返回实体主体。 |
2 | POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。 |
3 | HEAD | 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 |
4 | PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
5 | PATCH | 是对 PUT 方法的补充,用来对已知资源进行局部更新 。 |
6 | OPTIONS | 允许客户端查看服务器的性能。 |
7 | DELETE | 请求服务器删除指定页面。 |
8 | CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 |
9 | TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
- GET和POST请求方式的区别:
(1)get 请求提交路径上存在参数信息,不安全
post请求提交时路径上没有参数信息,相对安全
(2)get 请求提交的数据URL有限制(限制于特定浏览器和服务器),而post请求提交的数据URL没有限制
(3)浏览器后退,post刷新会重新请求,get不会
(4)post对数据类型没有限制,get只允许ASCII字符。
3.http1.x和http2.0的区别
(1)二进制分帧:HTTP1.x的解析是基于文本。基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多,二进制则不同,只认0和1的组合。基于这种考虑HTTP2.0的协议解析决定采用二进制格式,实现方便且健壮。
(2)多路复用:一次TCP握手,多个同域并行请求,请求和响应同时发送接受,然后再拼装组合,不阻塞;一个request对应一个id,这样一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方可以根据request的 id将request再归属到各自不同的服务端请求里面
(3)header压缩:HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小;
(4)服务器推送:根据客户端需求,服务端主动推送资源,减少请求耗时。
4.状态代码
状态代码由单位数字组成,第一位数字定义了响应的级别,且有5种可能取值。
代码 | 描述 |
---|---|
1xx | 指示信息 – 表示请求已接收,继续处理 |
2xx | 成功 – 表示请求已被成功接收、理解、接受 |
3xx | 重定向 – 要完成请求必须更进一步的操作 |
4xx | 客户端错误 – 请求有语法错误或请求无法实现 |
5xx | 服务器端错误 – 服务器未能实现合法的请求 |
常见状态代码、状态描述:
代码 | 描述 |
---|---|
200 | OK:客户端请求成功 |
400 | Bad Request:客户端请求有语法错误,不能被服务器所理解 |
401 | Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 |
403 | Forbidden:服务器收到请求,但是拒绝提供服务 |
404 | Not Found:请求资源不存在 |
500 | Internal Server Error:服务器发生不可预期的错误 |
503 | Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常 |
5.http报文格式
http报文分为两种:请求报文和响应报文。
(1)http请求报文
http请求报文由请求行、请求头部、空行和请求报文主体组成
http响应报文由起始行、响应头部、空行和响应报文主体组成
http协议请求的工作流程:
(1)终端客户在web浏览器地址栏输入访问地址http://www.ceshi.com:80/index.html
(2)web浏览器请求DNS服务器进行域名解析,得到web服务器的IP地址
(3)web浏览器将端口号从url中解析出来
(4)web浏览器通过解析后的ip地址及端口号与web服务器之间建立一条TCP连接
(5)建立TCP连接后,web浏览器向web服务器发送一条HTTP请求报文
(6)web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文
(7)web服务器关闭HTTP连接,关闭TCP连接,web浏览器显示访问的网站内容到屏幕上。