天天看点

HTTP- 通信解析

1. HTTP 协议用于客户端 和服务器之间通信

2. 通过请求 和响应交换达成通信

客户端发送的为

请求报文

请求报文

: 请求方法, 请求URI , 协议版本, 可选请求首部字段和内容实体构成。

服务端发送的为

响应报文

响应报文

: 协议版本, 状态码, 解释状态码原因短语, 可选响应首部字段以及主体构成
HTTP- 通信解析
HTTP- 通信解析

3. HTTP 无状态协议

无状态协议: HTTP协议不对请求和响应之间的通信状态进行保存。

优点: 可以更快处理大量事务,确保协议的可伸缩性。

HTTP 要想实现保持状态,就得依靠

Cookie

4. 通过URI 来定位资源

5. 持久连接通信

在HTTP 1.0 中, 每进行一次HTTP通信就要断开一次TCP连接。

假定在访问一个HTML 文件时,它包括图片,音频.... , 它在请求HTML文件时,同时会断开重新连接请求图片,音频...文件,重复循环,知道请求完,造成了不必要得TCP 连接消耗。

持久连接: 只要任意一段没有断开连接,那么

TCP

就不会断开连接。

优点: 减少了TCP 连接开销,减轻了服务器的负载。

它还有一个特性就是

管线化

管线化: 在请求多的时候,不会因为堵塞而影响请求加载,它是异步的,不是同步加载请求。

HTTP 1.1 默认是持久连接。 HTTP 1.0 没有标准化。

6. Cookie 状态管理

Cookie 是用来 解决HTTP 不能记录状态而生的,Cookie 是通过在请求报文和响应报文中写入Cookie 来控制客户端状态

萨达

流程:

  1. 客户端发送请求
  2. 服务端接收请求,设置Set-Cookie 来设置Cookie信息
  3. 客户端接收Cookie,每次发送请求携带Cookie
  4. 服务端每次接收Cookie 来判定是否失效,执行接下来的请求

HTTP 报文

HTTP 报文由

报文首部

报文主体

组成。

HTTP 报文首部组成

请求报文和响应报文首部由以下组成:
  1. 请求行
包含: 请求方法,请求URI 和HTTP版本
  1. 状态行
包含: 状态码, 原因短语, HTTP版本
  1. 首部字段
包含: 通用首部, 请求首部, 响应首部, 实体首部。

状态码

状态码是 当客户端向服务端发送请求,服务端返回的一种响应,用户知道当前处理的情况如何。

状态码以3位数字和原因短语组成。

状态码类别

类别 y原因短语
1xx x信息性状态码 j接收的请求正在处理
2xx 成功状态码 请求处理完毕
3xx 重定向状态码 需要进行附加操作完成请求
4xx 客户端错误原因状态码 服务器无法处理请求
5xx 服务器错误状态码 服务器处理请求出错

2xx

  • 200 OK 服务端正常处理了
  • 204 No Content 客户端发送成功了,服务端不返回任何信息
  • 206 Partial Content 客户端进行范围请求

3xx

  • 301 Moved Permanently永久重定向
  • 302 Found 临时重定向
  • 304 Not Modified 客户端发送请求,服务端没找到符合资源,不做返回
  • 307 Temporary Redirect 临时重定向

4xx

  • 400 Bad Request 报文中存在语法错误,格式传递不对
  • 401 Unauthorized 请求验证失败(用户验证失败)
  • 403 Forbidden 客户端发起请求,别拒绝(权限授权访问)
  • 404 Not Found 服务器上无法找到请求资源。

5xx

  • 500 Internal Server Error 服务器端出现了问题
  • 503 Service Unavailable 服务器处于超负荷和停机