HTTP超文本传输协议

131 阅读4分钟

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/htmlapplication/json)。
  • Content-Type:指示请求体的媒体类型(如 application/jsonapplication/x-www-form-urlencoded)。
  • Content-Length请求体的大小,通常在有请求体时使用。
  • Authorization:用于传递认证信息(如Bearer Token)。
  • Connection:指定是否保持连接,常见值有 keep-alive 或 close
  • Cookie:传递当前请求的 Cookies 信息。
  • Accept-Encoding:指定客户端支持的内容编码(如 gzipdeflate)用于压缩响应体

3. 空行 (Empty Line)

空行用于将请求头与请求体分隔开。空行本身并不包含任何内容。其作用是告知服务器,所有请求头都已经发送完毕,接下来可能会有请求体部分。如果请求没有请求体,则该空行仅起到分隔的作用。

4.请求体 (Request Body)

请求体是请求报文的可选部分(GET请求通过url传参,无请求体),通常用于 POSTPUT 等请求方法中,传递客户端向服务器发送的数据。
请求头中的字段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理解请求但拒绝执行它,状态码也有以下分类

image.png

响应头

也是由一系列键值对组成,帮助客户端理解如何处理接收到的数据,常见的 Content-Type

  • Content-Type: 指示响应主体的MIME类型,如text/htmlapplication/json等。这有助于客户端正确解析和显示内容
  • Date: 表示消息发送的日期和时间。这有助于客户端了解响应的时效性。
  • Content-Encoding: 指示对响应主体使用的编码方式,如gzipdeflate等。这些编码方式可以减小传输的数据量,提高传输效率。

响应头

服务端向客户端发送的数据

IP地址

例如:192.168.1.4
IP本身是一个数字标识,标志网络设备,实现设备之间的通信,由32位二进制数字组成

共享IP,局域网的设备共享一个公网IP来实现与互联网的通信
本机回环IP:127.0.0.1

端口

端口是应用程序的数字标识,主要作用是实现不同主机的应用程序之间的通信 http默认端口是80,https的默认端口是443