1.定义
超文本传输协议Hypertext Tansfer Protocol是对客户端与服务端之间的通信进行约束的协议,即服务端和客户端双方之间通信所遵从的约定
通信方式
客户端向服务端发送请求报文,服务端向客户端发响应报文
HTTP请求报文的构成
请求行、请求头、空行、请求体
1、请求行(Request Line):
请求行包括:请求方法字段、URL字段、HTTP协议版本字段,它们用空格分隔。例如,GET /index.html HTTP/1.1。字段
①常见请求方法:GET(获取数据)、POST(新增数据)、PUT/PATCH(更细数据)、DELETE(删除数据)
②URL组成:www.bilibili.com:433/video?id=23… ,即协议、主机名、端口号(有时可省略)、路径、查询字符串(&用于分隔)
③http协议版本号
2. 请求头 (Request Headers)
请求头用于传递关于客户端环境、服务器和客户端之间的约定等额外信息、以及客户端与服务端之间的交互方式,由一系列键值对组成
常见的请求头字段包括:
- Host:指定请求的服务器域名和端口号。它在 HTTP/1.1 中是必需的。
- User-Agent:客户端浏览器或应用的标识信息。
- Accept:指定客户端可接受的内容类型(如
text/html,application/json)。 - Content-Type:指示请求体的媒体类型(如
application/json,application/x-www-form-urlencoded)。 - Content-Length:请求体的大小,通常在有请求体时使用。
- Authorization:用于传递认证信息(如Bearer Token)。
- Connection:指定是否保持连接,常见值有
keep-alive或close。 - Cookie:传递当前请求的 Cookies 信息。
- Accept-Encoding:指定客户端支持的内容编码(如
gzip、deflate)用于压缩响应体
3. 空行 (Empty Line)
空行用于将请求头与请求体分隔开。空行本身并不包含任何内容。其作用是告知服务器,所有请求头都已经发送完毕,接下来可能会有请求体部分。如果请求没有请求体,则该空行仅起到分隔的作用。
4.请求体 (Request Body)
请求体是请求报文的可选部分(GET请求通过url传参,无请求体),通常用于 POST、PUT 等请求方法中,传递客户端向服务器发送的数据。
请求头中的字段Content-Type规定请求体的内容类型,如以下类型:
- application/x-www-form-urlencoded:表单提交时的默认类型。
- application/json:传递 JSON 格式的数据。
- multipart/form-data:用于文件上传时的编码方式。
- 请求头中的字段Content-Length规定请求体大小。
HTTP响应报文的构成
大体上与请求报文一致,也是响应行、响应头、空行、响应体组成。
响应行
响应行构成:http版本号、响应状态码、响应状态描述(OK、Not Found)
常见的响应状态码:200请求成功、403禁止请求、404找不到资源、500服务器内部错误、400无法理解请求、401要求身份验证、403理解请求但拒绝执行它,状态码也有以下分类
响应头
也是由一系列键值对组成,帮助客户端理解如何处理接收到的数据,常见的 Content-Type:
- Content-Type: 指示响应主体的MIME类型,如
text/html、application/json等。这有助于客户端正确解析和显示内容 - Date: 表示消息发送的日期和时间。这有助于客户端了解响应的时效性。
- Content-Encoding:
指示对响应主体使用的编码方式,如
gzip、deflate等。这些编码方式可以减小传输的数据量,提高传输效率。
响应头
服务端向客户端发送的数据
IP地址
例如:192.168.1.4
IP本身是一个数字标识,标志网络设备,实现设备之间的通信,由32位二进制数字组成
共享IP,局域网的设备共享一个公网IP来实现与互联网的通信
本机回环IP:127.0.0.1
端口
端口是应用程序的数字标识,主要作用是实现不同主机的应用程序之间的通信 http默认端口是80,https的默认端口是443