IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> HTTP篇:HTTP状态码,HTTP演变 -> 正文阅读

[网络协议]HTTP篇:HTTP状态码,HTTP演变

HTTP的简介

  • HTTP是超文本传输协议
  • 是Web应用的应用层协议
  • HTTP是一个双向协议
  • 由于HTTP服务器不会保存客户的任何信息,所以HTTP称为无状态协议
  • HTTP基于传输层的TCP传输报文

HTTP与HTTPS的区别

  • HTTP 的端?号是 80,HTTPS 的端?号是 443。
  • HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。
  • HTTPS=HTTP+SSL/TLS
  • HTTP 是超?本传输协议,信息是明?传输,存在安全?险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在TCP 和 HTTP ?络层之间加?了 SSL/TLS 安全协议,使得报?能够加密传输。
  • HTTP 连接建?相对简单, TCP 三次握?之后便可进? HTTP 的报?传输。? HTTPS 在 TCP 三次握?之后,还需进? SSL/TLS 的握?过程,才可进?加密报?传输。

HTTP常见状态码

在这里插入图片描述

1xx

含义:提示信息,是协议处理中的一种中间状态,实际接触比较少

2xx(常见的3种)

含义:提示成功的状态码,表示客户端发送给服务器的请求被成功处理

  • 【200 OK】:服务器成功处理了客户端的请求,在用postman做接口测试时可以经常看到
  • 【204 NoContent】:也是常?的成功状态码,与 200 OK 基本相同,但响应头没有 body 数据。
  • 【206 PartialContent】:表示客户端进行了范围请求,并且服务器成功执行了这部分的GET请求,响应报文中包含由Content-Range指定范围的实体内容。

3xx(常见的5种)

含义:表示重定向,客户端请求的资源发送了变动,需要客户端?新的URL新发送请求获取资源。

  • 【301 Moved Permanently】:永久重定向,说明请求的资源已经不存在了,需改?新的 URL 再次访问。
  • 【302 Found】:临时重定向,说明请求的资源还在,但暂时需要?另?个 URL 来访问。

301与302的区别:前者是永久移动,后者是临时移动(之后可能还会更改URL)

  • 【303 See Other】:表示请求的资源被分配了新的URL,应使用GET方法定向获取请求的资源;

302与303的区别:后者明确表示客户端应当采用GET方式获取资源

  • 【304 Not Modified】:不具有跳转的含义,表示资源未修改,重定向已存在的缓冲?件,也称缓存重定向,?于缓存控制
  • 【307 Temporary Redirect】:临时重定向,与303有着相同的含义,307会遵照浏览器标准不会从POST变成GET;(不同浏览器可能会出现不同的情况);

4xx(常见的4种)

含义:表示客户端发送的请求有错,服务器?法处理

  • 【400 Bad Request】:表示客户端请求的报?有错误
  • 【401 Unauthorized】:没有权限,未经允许,需要通过HTTP认证,Token无效或过期。
  • 【403 Forbidden】:服务器拒绝客户端访问,并不代表是客户端的请求有错
  • 【404 Not Found】表示在服务器上无法找到请求的资源,所以?法提供给客户端。

5xx(常见3种)

含义:表示服务器错误

  • 【500 Internal Server Error】:服务器发?了错误,具体什么错误,我们并不知道。
  • 【502 Bad Gateway】:Web 服务器作为网关或代理服务器时,从上游服务器收到了无效响应。此类错误一般与服务器本身有关(与请求无关)。
  • 【503 Service Unavailable】:表示服务器当前繁忙,暂时?法响应服务器。

HTTP的演变【部分知识点】

HTTP0.9

  • 发布于1991年
  • 初衷是为了获取简单的HTML对象
  • 只支持Get方法,没有定义任何首部
  • 不支持媒体内容的MIME类型和协议版本

HTTP1.0

  • 非持久连接(也就是短连接)
  • 相对于HTTP0.9,增加了协议版本号,各种首部行,额外的方法以及多媒体对象的支持
  • 是web页面增添了生动的多媒体内容以及表单,增加了交互能力

HTTP1.1

  • 默认为流水方式持久连接( Keep-Alive,也叫短连接),改善了HTTP1.0的性能开销
  • 支持更多的请求方法,扩展了一些首部
  • 增加了响应状态码
  • 改进了对缓存的支持
  • 重点是校正了HTTP设计中的结构缺陷,明确了语义,引入了重要的性能优化措施,并删除了一些不良特征。

HTTP/1.1 相? HTTP/1.0 性能上的改进:

  • 使? TCP ?连接的?式改善了 HTTP/1.0 短连接造成的性能开销。
  • ?持管道(pipeline)?络传输,只要第?个请求发出去了,不必等其回来,就可以发第?个请求出去,可以 减少整体的响应时间。

HTTP/2

  • 兼容HTTP1.1
  • 对于常?的 HTTP 头部通过静态表和 Huffman 编码的?式,将体积压缩了近?半,?且针对后续的请求 头部,还可以建?动态表,将体积压缩近 90%,??提?了编码效率,同时节约了带宽资源。
  • HTTP/2 实现了 Stream 并发,多个 Stream 只需复? 1 个 TCP 连接,节约了 TCP 和 TLS 握?时间,以 及减少了 TCP 慢启动阶段对流?的影响。不同的 Stream ID 才可以并发,即时乱序发送帧也没问题,但是同?个 Stream ?的帧必须严格有序。
  • 服务器?持主动推送资源,??提升了消息的传输性能,服务器推送资源时,会先发送 PUSH_PROMISE 帧,告诉客户端接下来在哪个 Stream 发送资源,然后?偶数号 Stream 发送资源给客户端。
  • HTTP/2 通过 Stream 的并发能?,解决了 HTTP/1 队头阻塞的问题

HTTP典型的请求方法

  • GET请求:从服务器上读取URL所标识的信息,是最常见的方法。
  • POST请求:给服务器添加信息,比如新增一个用户。
  • DELETE:从服务器删除内容

HTTP拓展知识点

HTTP的Keep-Alive和TCP的Keepalive分别是什么意思?

  • HTTP 的 Keep-Alive 也叫 HTTP 长连接,该功能是由「应用程序」实现的,可以使得用同一个 TCP 连接来发送和接收多个 HTTP 请求/应答,减少了 HTTP 短连接带来的多次 TCP 连接建立和释放的开销。
  • TCP 的 Keepalive 也叫 TCP 保活机制,该功能是由「内核」实现的,当客户端和服务端长达一定时间没有进行数据交互时,内核为了确保该连接是否还有效,就会发送探测报文,来检测对方是否还在线,然后来决定是否要关闭该连接。

Get和Post方法都是安全和幂等的吗?

安全和幂等的概念:

  • 在HTTP协议里,所谓的“安全”是指请求方法不会“破坏”服务器上的资源
  • 幂等:意思是多次执行操作,结果都是相同的

通过以上很明显Get方法是安全且幂等的,因为get只是一个获取资源做“只读”的操作,无论操作多少次,服务器上的数据都是安全的,且每一次返回的结果都是相同。

Post因为是“提交数据”的操作,会修改服务器上的资源,所以是不安全的,且多次提交数据就会创建多个资源,所以Psot方法是不安全不幂等的

RTT:从客户端进程发送的连接请求,到收到服务器的连接确认,用时为一个往返时间(Round Trip Time,RTT)

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-29 10:41:46  更:2021-09-29 10:42:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年6日历 -2024/6/27 1:47:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码