HTTP协议及应用

server/2024/10/21 2:02:12/

一.HTTP协议

1.HTTP协议版本

HTTP1.0:服务器处理完成后立即断开TCP连接(无连接),服务器不跟踪每个客户端也不记录过去的请求(无状态);

HTTP1.1:KeepAlived长连接避免了连接建立和释放的开销;通过Content-Length来判断当前请求数据是否已经全部接受(有状态);

HTTP2.0:引入二进制数据帧和流的概念,其中帧对数据进行顺序标识;因为有了序列,服务器可以并行的传输数据。

2.http1.0和http1.1的主要区别如下:

缓存处理:1.1添加更多的缓存控制策略(如:Entity tag,If-Match);

网络连接的优化:1.1支持断点续传;

错误状态码的增多:1.1新增了24个错误状态响应码,丰富的错误码更加明确各个状态;

Host头处理:支持Host头域,不在以IP为请求方标志;

长连接:减少了建立和关闭连接的消耗和延迟。

2.http1.1和http2.0的主要区别:

新的传输格式:2.0使用二进制格式,1.0依然使用基于文本格式;

多路复用:连接共享,不同的request可以使用同一个连接传输(最后根据每个request上的id号组合成正常的请求);

header压缩:由于1.X中header带有大量的信息,并且得重复传输,2.0使用encoder来减少需要传输的hearder大小;

服务端推送:同google的SPDUY(1.0的一种升级)一样;

HTTP与HTTPS之间的区别:

https://img-blog.csdnimg.cn/direct/78fdece7ccdb402b82635d61b68dbda1.png" width="692" />

二.HTTPS链接建立的过程:

1.首先客户端先给服务器发送一个请求;

2.服务器发送一个SSL证书给客户端,内容包括:证书的发布机构、有效期、所有者、签名以及公钥;

3.客户端对发来的公钥进行真伪校验,校验为真则使用公钥对对称加密算法以及对称密钥进行加密;

4.服务器端使用私钥进行解密并使用对称密钥加密确认信息发送给客户端;

5.随后客户端和服务端就使用对称密钥进行信息传输;

对称加密算法:

双方持有相同的密钥,且加密速度快,典型对称加密算法:DES、AES

非对称加密算法:

密钥成对出现(私钥、公钥),私钥只有自己知道,不在网络中传输;而公钥可以公开。相比对称加密速度较慢,典型的非对称加密算法有:RSA、DSA

三.Get和Post请求区别

1.HTTP请求:

https://img-blog.csdnimg.cn/direct/1a60ea302f814eeb8149f1fa877da7a8.png" width="692" />

2.get和Post区别:

https://img-blog.csdnimg.cn/direct/fe006937f3cd4189978276a2c64391bb.png" width="693" />

四.HTTP常见响应状态码

100:Continue---继续。客户端应继续其请求。

200:OK---请求成功。一般用于GET与POST请求。

301:Moved Permanently---永久重定向。

302:Found---暂时重定向。

400:Bad Request---客户端请求的语法错误,服务器无法理解。

403:Forbideen---服务器理解请求客户端的请求,但是拒绝执行此请求。

404:Not Found---服务器无法根据客户端的请求找到资源(网页)。

500:Internal Server Error---服务器内部错误,无法完成请求。

502:Bad Gateway---作为网关或者代理服务器尝试执行请求时,从远程服务器接收到了无效的响应。

五.重定向和转发区别

重定向:redirect:

地址栏发生变化

重定向可以访问其他站点(服务器)的资源

重定向是两次请求。不能使用request对象来共享数据

转发:forward:

转发地址栏路径不变

转发只能访问当前服务器下的资源

转发是一次请求,可以使用request对象共享数据

六.Cookie和Session区别

Cookie和Session都是用来跟踪浏览器用户身份的会话方式,但两者有所区别:

Cookie数据保存在客户端(浏览器端),Session数据保存在服务器端。

cookie不是很安全,别人可以分析存放在本地的COOKIE并进行欺骗,考虑到安全应当使用session。

Cookie一般是来保存用户信息,Session的主要作用就是通过服务端记录用户的状态

七.浏览器输入URL过程

过程:DNS解析、TCP连接、发送HTTP请求、服务器处理请求并返回HTTP报文、浏览器渲染、结束。

https://img-blog.csdnimg.cn/direct/bbe5da1d71c2494f9609229de95b6e15.png" width="693" />


http://www.ppmy.cn/server/41666.html

相关文章

[框架] Unity 公共执行器

本篇我们通过使用单例模式来创建一个公共执行器,使得原本应该在Update()、FixedUpdate()中的指令都可以统一放在一个对象中执行,且可进行添加和移除操作。 1. 创建单例模式改造器:SingletonMono 我们先创建一个单例模式改造器,使…

iOS copy的正确姿势

参考文章 知识准备(理解堆栈) 堆区: 程序员管理 若程序员不释放,由os释放不同于数据结构中的堆,堆区的结构类似于数据结构中的链表栈区: 由编译器来管理 存放函数参数值,局部变量的值等结构类似…

矩阵的特征分解

参考资料:矩阵的特征分解

关于大语言模型的论文和学习资源集合

Milestone Papers DatekeywordsInstitutePaperPublication2017-06TransformersGoogleAttention Is All You NeedNeurIPS2018-06GPT 1.0OpenAIImproving Language Understanding by Generative Pre-Training2018-10BERTGoogleBERT: Pre-tra

【算法刷题day53】Leetcode:1143. 最长公共子序列、1035. 不相交的线、53. 最大子数组和

文章目录 Leetcode 1143. 最长公共子序列解题思路代码总结 Leetcode 1035. 不相交的线解题思路代码总结 Leetcode 53. 最大子数组和解题思路代码总结 草稿图网站 java的Deque Leetcode 1143. 最长公共子序列 题目:1143. 最长公共子序列 解析:[代码随想录…

android原生开发学习路线

基础知识: 学习Java语言基础,包括面向对象编程、数据结构、算法等。了解Android操作系统的基本概念,包括它的架构和组件。 Android开发环境搭建: 安装Android Studio,这是官方推荐的集成开发环境(IDE)。配置Android SD…

QT学习(1)——创建第一个QT程序,信号和槽,打开关闭窗口的案例

目录 引出规范和帮助文档创建第一个Qt程序对象树概念信号signal槽slot自定义信号和槽1.自定义信号2.自定义槽3.建立连接4.进行触发 自定义信号重载带参数的按钮触发信号触发信号拓展 lambda表达式返回值mutable修饰案例 打开关闭窗口案例 总结 引出 QT学习(1&#…

HVV面试题2024护网蓝队面试题

一. 目前有防火墙,全流量检测,态势感知,IDS,waf,web服务器等设备,如何搭建一个安全的内网环境,请给出大概拓扑结构 (适用于中高级) 搭建安全内网环境拓扑结构&#xff1…