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和HTTPS -> 正文阅读

[网络协议]HTTP和HTTPS

HTTP和HTTPS

HTTP:超文本传输协议,明文传输,80端口

超文本:文字、图片、视频、超链接等的混合体(比如HTML)

HTTP状态码

状态码含义例子
1xx协议处理的中间状态
2xx成功200、204
3xx重定向301、302
4xx客户端错误(可能是报文格式有问题,服务器无法解析)400、403、404
5xx服务器错误500、502

200:OK,表示发送成功

204:Not Content,只包含响应头

301:Moved Permanently,永久重定向

302:Found,临时重定向

400:Bad Request,客户端报文有误

403:Forbidden,服务器禁止访问

404:Not Found,请求的资源未找到

500:Internal Server Error,内部错误

502:Bad Gateway,表示后端服务器发生错误

HTTP常见字段

Host服务器域名
Content-Length数据长度
Connection持久/非持久连接
Content-Type数据格式
Accept客户端能够接受的数据格式

Get和Post

Get是从服务器获取资源

Post是向URI提交数据

安全和幂等

安全指请求方法不会破坏服务器上的资源

幂等指多次操作结果不变

所以Get是安全且幂等的,Post是不安全不幂等的

HTTP特性

  • 优点
  1. 报文格式简单,key-value的首部+数据部分
  2. 易于扩展
  3. 跨平台
  • 缺点
  1. 无状态,也就是HTTP在双方进行通信时,不知道对方是谁,一般会加上Cookie、Session等使其有状态
  2. 明文传输,调试很方便,但是容易被窃取
  3. 不安全:明文+不验证身份+可能被篡改(这几个问题可以通过HTTPS解决)

HTTP/1.x

1.0是短连接,1.1是长链接(多次通信只需建立一次连接)

三次握手建立连接、四次握手断开连接

  • 长链接的好处
  1. 多次通信只需要建立一次连接,加速+减少资源消耗
  2. 多次通信可以流水发送,不必等待响应,减少总的响应时间
  • 长链接的坏处
  1. 如果有一个请求在服务器阻塞了,所有已发送的请求都会被阻塞

HTTPS

HTTPS:在TCP和HTTP之间加入了SSL/TLS安全协议,加密传输,443端口

相比于HTTP:

  1. HTTPS在建立连接时还需要进行SSL/TLS的握手过程
  2. 通过加密等方法,解决了HTTP不安全的几个问题

HTTPS增加的功能

  • 信息加密

使用对称加密非对称加密结合的混合加密方式

  1. 通信建立前,使用非对称加密交换会话秘钥

  2. 通信过程中,使用对称加密的会话秘钥加密明文数据

非对称加密有公钥和私钥,公钥可以公开,解决了秘钥交换问题

对称加密秘钥必须保密,但是计算速度快

  • 校验机制

使用摘要算法,数据无法被篡改,如果数据被篡改了就不能正常显示

其实比较类似数据传输中的校验码之类的东西

  • 身份证书

服务器公钥放入数字证书(需要预先向证书权威机构申请数字证书),解决冒充风险

客户端使用公钥加密,服务器端使用私钥解密

HTTP/2和HTTP/3

HTTP/2基于HTTPS,所以是安全的

相较于1.1的改进

  1. 首部压缩,多个请求的重复首部不会被发送(HPACK算法)
  2. 二进制格式,将文本转化为二进制 再发送,增加传输效率
  3. 数据流,数据包不按顺序发送,所以必须在数据包中标记编号
  4. 可以指定请求优先级
  5. 多路复用,一个TCP连接并发多个请求/回应
  6. 服务器推送,可以主动把可能用到的JS、CSS等静态资源发送给客户端

2的局限性

  1. 复用同一个TCP,如果有丢包,就会引发重传,导致阻塞(只有这个包ACK了才,滑动窗口才会继续向后移动)

HTTP/3

为了解决2的问题,HTTP/3把HTTP下层的TCP修改成了UDP,通过UDP的QUIC协议实现可靠性传输。

缺点在于比较新,很多设备的UDP不支持QUIC,导致导致本应可靠的数据不可靠

Reference

小林Coding系列文章

HTTP是一个无状态的协议。这句话里的无状态是什么意思?

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:56:55  更:2022-03-24 00:57:53 
 
开发: 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年11日历 -2024/11/26 5:36:06-

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