网络基础(二) — HTTP

一、概述

本文为《图解HTTP学习笔记》

HTTP 相关概念:

  1. HTTP (HyperText Transfer Protocol): 超文本传输协议。
  2. HTTP 是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。
  3. HTTP 是无状态协议,即每次 HTTP 请求之间都是相互独立的,服务端不知道客户端具体的状态。
  4. HTTP 默认端口号为80。

HTTP 的版本及其差异

  1. HTTP1.0:未实现默认连接持久化,每次请求 TCP 都需要进行3次握手。
  2. HTTP1.1:默认实现了连接持久化
  3. HTTP2.0:连接的多路复用

二、HTTP 持久连接、管线化

HTTP 早期版本,每次请求前 TCP 要进行三次握手建立连接,请求结束后要进行4次握手结束连接,每次请求都会造成无畏的 TCP 连接的建立和断开,增加通信量的开销。

在这里插入图片描述

持久连接:
HTTP1.1 默认实现了持久连接,支持单次建立连接后可以支持多次请求,减少了 TCP 重复建立连接的时间损耗,提升了网络的响应速度。
在这里插入图片描述

管线化:
管线化支持多个请求同时发送,无需等待上一个请求结束后才开始。
在这里插入图片描述


三、HTTP请求方法

基于 HTTP1.1

序号 方法 描述
1 GET 请求访问已被 Uri 识别的资源。
2 HEAD 类似于 GET 请求,但返回的响应报文中没有主体内容,只有响应头,该方法用于获取报文头部。
3 POST 向服务端提交数据处理的请求,数据被包含在请求体中。
4 PUT 用于传输文件
5 DELETE 请求服务器删除指定文件,与 PUT 相反。
6 CONNECT HTTP/1.1协议中预留给能够将连接改为隧道方式的代理服务器。
7 OPTIONS 查询针对请求的 Uri 指定资源支持的请求方法。
8 TRACE 回显服务器收到的请求,主要用于测试或诊断。

四、HTTP 报文

1. 报文的结构

HTTP报文: 用于 HTTP 协议交互的信息被称为 HTTP 报文。

HTTP报文结构: 分为报文首部、报文主体。如下图所示:在这里插入图片描述

HTTP报文类型: 请求报文、响应报文。
请求报文:

如何提升传输效率?

可以对传输的内容进行编码压缩。

常见的编码压缩方式有:

gzipcompress(UNIX 系统的标准压缩)、deflate(zlib)identity(不进行编码)。

2. 响应状态码

在这里插入图片描述
2XX 成功

状态码 描述
200 OK:表示服务端返回的成功
204 No Content:服务端接收成功,且返回的响应无实体部分。

3XX 重定向

状态码 描述
301 Move Permanently:资源永久转移到其它 URI
302 Found:资源临时性的转移到其它 URI
303 See Other:请求对应的资源存在着另一个 URI,应使用 GET 方法定向获取请求资源
304 Not Modified:请求头若携带If-MatchIf-Modified-SinceIf-None-MatchIf-Unmodified-Since 任一头部字段时,服务器允许访问资源,否则返回304
307 Temporary Redirect:临时重定向

4XX 客户端错误

状态码 描述
400 Bad Request:请求报文中存在语法错误
401 Unauthorized:发送的请求需要有HTTP认证的信息
403 Forbidden:请求资源的访问被拒绝
404 Not Found:服务端无法找到请求资源

5XX 服务端错误

状态码 描述
500 Internal Server Error:服务端执行请求时发生错误
503 Service Unavilable:服务端暂时无法处理请求(超负荷、或停机)

3. HTTP 首部结构

HTTP 首部包括请求报文的首部和响应报文的首部。

3.1 请求报文结构

请求报文包括:报文首部和报文主体。细分如下图:
在这里插入图片描述

3.2 响应报文结构

响应报文包括:报文首部和报文主体。细分如下图:
在这里插入图片描述

3.3 首部字段根据实际用途分为4种类型

  1. 通用首部字段: 请求报文和响应报文通用的首部 (如协议版本号)。
  2. 请求首部字段: 客户端发送报文时专用首部 。
  3. 响应首部字段: 服务器端响应报文时专用首部。
  4. 实体首部字段: 针对请求报文和响应报文实体部分使用的首部。

通用首部字段:
在这里插入图片描述

请求首部字段:
在这里插入图片描述
响应首部字段:
在这里插入图片描述在这里插入图片描述

实体首部字段:
在这里插入图片描述

3.4 常用的首部字段

  1. Cache-Control: 通常通过指定首部字段 Cache-Control 的指令,来实现缓存机制。
  2. Connetion: 管理持久连接。
  3. Transfer - Encoding: 规定了请求报文主体采用的编码方式。
  4. Accept - Encoding: 告诉服务端,用户端可以接收的类型。
  5. Host: 主机名和端口号 (用于区分一个IP映射多台主机时,无法区分哪台主机的问题)。
  6. Content - Encoding: 服务器告诉客户端实体内容的编码方式。
  7. Content - Length: 服务端回传实体内容的长度。

发布了158 篇原创文章 · 获赞 26 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/Love667767/article/details/105130615