You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
2.8 KiB

2 years ago
# 一、HTTP
`HTTP`协议(超文本传输协议HyperText Transfer Protocol)它是基于TCP协议的应用层传输协议简单来说就是客户端和服务端进行数据传输的一种规则。
特点:
1. 支持**客户/服务器**模式。
2. **简单快速**:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有`GET`、`HEAD`、`POST`。每种方法规定了客户与服务器联系的类型不同。由于`HTTP`协议简单,使得`HTTP`服务器的程序规模小,因而通信速度很快。
3. **灵活**HTTP允许传输任意类型的数据对象。正在传输的类型由`Content-Type`加以标记。
4. **无连接**:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。早期这么做的原因是请求资源少,追求快。后来通过`Connection: Keep-Alive`实现长连接
5. **无状态**`HTTP`协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息则它必须重传这样可能导致每次连接传送的数据量增大因此引入了Cookie。另一方面在服务器不需要先前信息时它的应答就较快
### 1.URL
`URL` 包含了用于查找某个资源的详细信息, 格式如下
```text
http://host[":"port][abs_path]
```
### 2.Request
![[Pasted image 20231116170052.png]]
http请求由请求行消息报头请求正文三部分构成。
#### 2.1 状态行
请求行由请求`Method`, `URL` 字段和`HTTP Version`三部分构成,例:
```text
GET /example.html HTTP/1.1 (CRLF)
```
Method
+ GET
+ POST
+ HEAD
+ PUT
+ DELETE
+ TRACE
+ OPTIONS
#### 2.2 请求头
![[Pasted image 20231116170713.png]]
#### 2.3 请求正文
只有在发送`POST`请求时才会有请求正文,`GET`方法并没有请求正文
### 3.Response
![[Pasted image 20231116170802.png]]
响应与请求类似
#### 3.1 状态行
状态行也由三部分组成包括HTTP协议的版本状态码以及对状态码的文本描述
```text
HTTP/1.1 200 OK CRLF
```
#### 3.2 状态码
状态代码有三位数字组成,第一个数字定义了响应的**类别**且有五种可能取值 _`1xx`**指示信息** - 表示请求已接收继续处理_ `2xx`**成功** - 表示请求已被成功接收、理解、接受 _`3xx`**重定向** - 要完成请求必须进行更进一步的操作_ `4xx`**客户端错误** - 请求有语法错误或请求无法实现 * `5xx`**服务器端错误** - 服务器未能实现合法的请求
![[Pasted image 20231116171033.png]]
![[Pasted image 20231116171039.png]]
![[Pasted image 20231116171054.png]]
![[Pasted image 20231116171103.png]]
# 二、HTTPS