面试之HTTP

1.HTTP与HTTPS的区别

  • HTTP运行在TCP之上;HTTPS是运行在SSL之上,SSL运行在TCP之上
  • 两者使用的端口不同:HTTP使用的是80端口,HTTPS使用的是443端口
  • 安全性不同:HTTP没有加密,安全性较差;HTTPS有加密机制,安全性较好
  • 两者消耗资源大小不一:HTTP消耗的资源较少,HTTPS由于需要加密处理,所以消耗的资源更多

2.HTTP中POST和GET方法的区别

相同点:两者都是HTTP协议中的方法

不同点:

  • get方法是用来从服务器上获取资源;post是用来向服务器提交数据的
  • get方法的参数是通过URL进行传递的;post方法的参数存放在请求头或者消息体中进行传递的
  • get方法相比于post方法更不安全,因为请求参数存在于url中,暴露在外
  • get方法在url中传递的参数是有长度限制的(实际上HTTP协议本身对长度没有限制,限制是特定的浏览器以及服务器对他的限制,不同浏览器限制的长度不同。),POST对长度没有限制。

3.Cookie和Session的区别

  • 用范围不同:cookie保存在客户端浏览器;session保存在服务器
  • 存取方式不同:cookie只能保存ASCII,session可以存储任意类型的数据
  • 有效期不同:cookie可设置为长时间保存,比如我们使用的默认登录功能;session一般有时间限制,客户端关闭或者session超时都会失效
  • 存储大小不同:单个cookie保存数据大小不能超过4k;session存储数据可远远高于cookie
  • 安全性不同:cookie将信息存储在客户端,容易遭到非法获取;session信息存储在服务器,安全新相对来说高一些。

4.HTTP常见的状态码

常见的状态码:

  • 200:服务器处理请求成功。
  • 301(永久重定向):浏览器请求的资源已经永久移动到了一个新的URL地址,浏览器会自动将请求重定向到新的URL地址
  • 302(临时重定向):请求的资源只是暂时移动到了一个新的URL地址,浏览器会在下一次请求时再次访问原始URL地址。
  • 400:客户端请求有语法错误,不能被服务器理解
  • 403:服务器收到请求,但是没有权限,服务器拒绝提供服务
  • 404(未找到):服务器找不到请求的资源
  • 500(服务器内部错误):服务器错误,无法完成请求

状态码开头代表的类型:

5.对称加密和非对称加密

对称加密:对称加密指的是加密和解密都是同一个密钥。但是这种加密方式,如果被别人获取密钥,就可以直接获取解密内容,安全性有待提升。

非对称加密:非对称加密用到两个密钥,一个公钥一个私钥。每个客户都拿着一把公钥,服务器拿着一把私钥。公钥加密私钥可以解密;私钥加密公钥可以解密,但是公钥加密公钥不能解密。

区别:对称加密算法相比非对称加密算法来说,加解密的效率要高得多。但是缺陷在于对于秘钥的管理上,以及在非安全信道中通讯时,密钥交换的安全性不能保障。所以在实际的网络环境中,会将两者混合使用.。

6.HTTPS的工作原理

preview

  1. 客户端请求HTTPS 网址,然后连接到服务器的443端口(HTTPS的默认端口)
  2. 采用HTTPS的服务器必须要有一套数字CA证书,颁发证书的时候会产生一个公钥和私钥。私钥由服务端自己保存,不可泄漏,公钥则是附带在证书的信息中,可以公开的。证书本身也附带了一个电子签名,这个签名来验证证书的真实性和完整性,可以防止证书被篡改
  3. 服务器响应客户端请求,将证书传递给客户端,证书包含公钥和大量信息,比如证书颁发机构信息,公司信息和证书有效期等
  4. 客户端解析证书并对其进行验证,如果证书是不可信机构颁发的,或者证书中的域名与实际域名不一致的,或者证书已经过期,就会像访问者显示一个警告,与其选择是否继续通信         如果证书没有问题,客户端会从服务器证书中取出服务器的公钥A,然后客户端会生成一个随机码KEY,并使用公钥A将其加密
  5. 客户端把加密后的随机码KEY发送给服务器,最为后面对称加密的密钥
  6. 服务器在收到随机码KEY之后会使用是私钥B进行解密,经过以上步骤,客户端和服务器终于建立了安全的连接,完美解决了对称加密密钥泄露的问题,后续可以使用对称加密进行通信了
  7. 服务器使用密钥(随机码KEY)对数据进行对称加密并且发送给客户端,客户端使用相同的密钥(随机码KEY)进行解密
  8. 双方使用对称加密的方式传输数据

7.在浏览器中输入www.baidu.com后执行的全过程

  1. 域名解析(将域名www.baidu.com变为ip地址):浏览器首先搜索自己的DNS缓存(维护一张域名与IP的对应表),若没有则搜索操作系统的DNS缓存,若没有则搜索操作系统的hosts文件。若都没有找到,则找TCP/IP参数设置中的首选DNS服务器,即本地的DNS服务器(递归查询),本地域名服务器查找自己的DNS缓存,如果没有,则进行迭代查询。将本地服务器的IP返回给操作系统,同时缓存IP
  2. 使用三次握手机制建立TCP连接,浏览器会以一个随机端口(1024-65535)向服务端的web程序80端口发起TCP连接
  3. 建立TCP连接之后发起HTTP请求
  4. 服务器响应HTTP请求,客户端得到HTML代码。服务器web应用程序收到HTTP请求之后,就开始处理请求,处理完成之后就返回给浏览器HTML文件
  5. 浏览器解析HTML代码,并请求HTML中的资源
  6. 浏览器对页面进行渲染,呈现给用户 

8.HTTP/1.0和HTTP/1.1有什么区别

HTTP/1.0 和 HTTP/1.1 对比

  • 连接方式:HTTP/1.0为短连接,HTTP/1.1支持长连接
  • 状态响应码:HTTP/1.1中新加入了大量的状态码,光是错误码就新增了24种。比如100——在请求大资源时预热,206——范围请求的标识码,409——请求与当前资源规定冲突。
  • 缓存机制:在HTTP/1.0中主要使用Hearder里的If-Modified-Since,Expires 来做为缓存判断的标准,HTTP/1.1则引入了更多的缓存控制策略例如 Entity tag,If-Unmodified-Since, If-Match, If-None-Match 等更多可供选择的缓存头来控制缓存策略。
  • 带宽:HTTP/1.0中存在一些浪费带宽的现象,例如客户端某个对象的一部分,而服务器却将整个对象都送过来,并且不支持断点续传功能;HTTP/1.1则在请求头引入了range头域,它允许请求资源的某个部分,返回码为206,这样就方便开发者自由的选择以便于充分利用带宽和连接
  • Host头处理:HTTP/1.1引入了Host头字段,允许在统一IP地址上托管多个域名,从而支持虚拟主机的功能。而HTTP/1.0没有Host字段,无法实现虚拟主机

9.HTTP/1.1和HTTP/2.0有什么区别

HTTP/1.0 和 HTTP/1.1 对比

  •  IO多路复用:HTTP/2.0在同一连接上可以同时传输多个请求和响应。这使得HTTP/2.0在处理多个请求时更加高效,减少了网络延迟和提高了性能。HTTP/1.1则使用串行的方式,每个请求和响应都需要独立的连接。
  • 二进制帧:HTTP/2.0使用二进制帧进行数据传输,二进制帧更加紧凑和高效,减少了数据的传输量和带宽消耗。HTTP/1.1则使用文本格式的报文
  • 头部压缩:HTTP/1.1支持body压缩,不支持Header压缩;HTTP/2.0支持对Header压缩,减少了网络开销
  • 服务器推送:HTTP/2.0支持服务器推送,可以在客户端请求一个资源时,将其他相关资源一并推送给客户端,从而减少客户端的请求次数和延迟。HTTP/1.1需要客户端自己发送请求来获取相关资源

10.HTTP/2.0和HTTP/3.0有什么区别

HTTP/2.0 和 HTTP/3.0 对比

  • 传输协议:HTTP/2.0是基于TCP协议实现的,HTTP/3.0 新增了 QUIC(Quick UDP Internet Connections) 协议来实现可靠的传输,提供与TLS/SSL相当的安全性,具有较低的连接和传输延迟(可以将QUIC看作是UDP 的升级版本,在其基础上新增了很多功能比如加密,重传等)
  • 连接建立:HTTP/2.0需要经过经典的TCP三次握手过程。HTTP/3.0由于QUIC特性,建立连接的时间远远小于HTTP/2.0建立的时间
  • 队头阻塞:HTTP/2.0多请求复用一个TCP连接,一旦发生丢包,就会阻塞所有的HTTP请求;由于QUIC的特性,HTTP/3.0在一定程度上解决了队头阻塞问题,一个连接建立多个不同的数据流,这些数据流之间互不影响,某个数据流发生丢包了,其数据流不影响
  • 错误恢复:HTTP/3.0具有更好的错误恢复机制,当出现丢包,延迟等网络问题时,可以更快的进行恢复和重传。HTTP/2.0还是依赖于TCP的错误恢复和重传
  • 安全性:HTTP/2.0和HTTP/3.0对于安全都有很高的要求,支持加密通信,但是实现方式不同。HTTP/2.0使用TLS协议进行加密,而HTTP/3.0基于QUIC协议,包含了内置的加密和验证身份机制,可以提供更强的安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/47237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python刷小红书流量(小眼睛笔记访问量),metrics_report接口,原理及代码,以及x-s签名验证2023-08-21

一、什么是小眼睛笔记访问量 如下图所示,为笔记访问量。 二、小眼睛笔记访问量接口 1、url https://edith.xiaohongshu.com/api/sns/web/v1/note/metrics_report 2、payload data{"note_id": note_id,"note_type": note_type,"report_t…

爬虫逆向实战(十九)--某号站登录

一、数据接口分析 主页地址:某号站 1、抓包 通过抓包可以发现登录接口 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现有一个jsondata_rsa的加密参数 请求头是否加密? 无响应是否加密? 无cookie是否…

【报错】yarn --version Unrecognized option: --version Error...

文章目录 问题分析解决问题 在使用 npm install -g yarn 全局安装 yarn 后,查看yarn 的版本号,报错如下 PS D:\global-data-display> yarn --version Unrecognized option: --version Error: Could

数据结构---串(赋值,求子串,比较,定位)

目录 一.初始化 顺序表中串的存储 串的链式存储 二.赋值操作:将str赋值给S 链式表 顺序表 三.复制操作:将chars复制到str中 链式表 顺序表 四.判空操作 链式表 顺序表 五.清空操作 六.串联结 链式表 顺序表 七.求子串 链式表 顺序表…

掌握AI助手的魔法工具:解密Prompt(提示)在AIGC时代的应用「上篇」

在当今的AIGC时代,我们面临着越来越多的人工智能技术和应用。其中一个引人注目的工具就是Prompt(提示)。它就像是一种魔法,可以让我们与AI助手进行更加互动和有针对性的对话。那么,让我们一起来了解一下Prompt&#xf…

广东灯具3D扫描抄数建模服务3D测绘出图纸三维逆向设计-CASAIM

灯具三维逆向建模是一种将实际物体转换为数字模型的过程。通过逆向工程技术,可以将现有的灯具进行3D扫描,然后利用专业的逆向设计软件将其转换为准确的三维模型。 以下是CASAIM实施灯具三维逆向建模的一般步骤图: 1. 扫描:三维扫…

SSL证书如何使用?SSL保障通信安全

由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中,因此,仅需安装数字证书或服务器证书就可以激活功能了。SSL证书主要是服务于HTTPS,部署证书后,网站链接就由HTTP开头变为HTTPS。 SSL安全证书主要用于发送安全电子邮件、访…

社交工程和钓鱼攻击防范: 分析针对人类心理和社交工程的攻击技术,并介绍预防这些攻击的方法

第一章:引言 随着科技的不断进步,网络安全问题愈发凸显。在这个数字化时代,社交工程和钓鱼攻击成为黑客们获取敏感信息的常用手段。这些攻击不是基于技术漏洞,而是利用人类心理弱点来进行。本文将深入探讨社交工程和钓鱼攻击的原…

Flowable学习[一]

一、参考CSDN博主[水中加点糖]的博客[采用springbootflowable快速实现工作流],文章地址:https://puhaiyang.blog.csdn.net/article/details/79845248,下载其发布在github上的代码 二、本地解压代码,并加载到idea中 三、使用docke…

ubuntu18.04安装远程控制软件ToDest方法,针对官网指令报错情况

有时我们在家办公,需要控制实验室的笔记本,因此好用的远程控制软件会让我们的工作事半功倍! 常用的远程控制软件有ToDesk,向日葵,以及TeamViewer,但是为感觉ToDesk更流畅一些,所以这里介绍一下…

深入了解Git:介绍及常用命令指南

当今软件开发领域中,版本控制是一个至关重要的概念,而Git作为最流行的分布式版本控制系统,发挥着不可替代的作用。本文将介绍Git的基本概念以及常用命令,帮助你更好地理解和使用这一强大的工具。 Git简介 Git是一种分布式版本管…

从业务层的代码出发,去排查通用框架代码崩溃的问题

目录 1、问题说明 1.1、Release下崩溃,Debug下很难复现 1.2、用Windbg打开dump文件,发现崩溃在通用的框架代码中 2、进一步分析 2.1、使用IDA查看汇编代码尝试寻找崩溃的线索 2.2、在Windbg中查看相关变量的值 2.3、查看最近代码的修改记录&#…

SAP ABAPG开发屏幕自动生成日期的搜索帮助

代码如下: REPORT z_jason_test_f4 . TABLES: s031. PARAMETER p_spmon TYPE spmon DEFAULT sy-datum0(6) OBLIGATORY. SELECT-OPTIONS s_spmon FOR s031-spmon DEFAULT sy-datum0(6) OBLIGATORY. AT SELECTION-SCREEN ON VALUE-REQUEST…

Python面向对象植物大战僵尸

先来一波效果图 来看看如何设计游戏架构 import sysimport pygameclass BaseSprite(pygame.sprite.Sprite):def __init__(self, name):super().__init__()self.image pygame.image.load(name)self.rect self.image.get_rect()class AnimateSprite(BaseSprite):def __init__(…

C++信息学奥赛1131:基因相关性

这段代码的功能是比较两个字符串的相似度&#xff0c;并根据给定的阈值判断是否相似。 解析注释后的代码如下&#xff1a; #include <iostream> #include <string> using namespace std;int main() {double bf; // 定义双精度浮点数变量bf&#xff0c;用于存储阈…

MAC钓鱼并Root权限上线CS并权限维持,以及所有的坑如何解决

本文转载于&#xff1a;https://www.freebuf.com/articles/web/350592.html 作者&#xff1a;文鸯涂鸦智能安全实验室 制作MAC 一、下载工具 首先从github上下载CrossC2。链接&#xff1a;https://github.com/gloxec/CrossC2/releases/tag/v3.1.0。 根据你CS客户端的操作系统选…

python 打印沁园春 雪 居中对齐 文本对齐

以下是python 中使用 DebugInfo 模块居中对齐打印《沁园春・雪》的效果 引入模块 pip install DebugInfopython代码 # -*- coding:UTF-8 -*-# region 引入必要依赖 from DebugInfo.DebugInfo import * # endregion诗文 沁园春 雪 作者: 毛主席 北国风光&#xff0c;千里冰封…

Swagger2 使用

大家好 , 我是苏麟 , 今天带来Swagger的使用 . 官方文档 : 招摇文档 (swagger.io) 访问地址 : 在路径后加上doc.html 例如: http://localhost:8000/doc.html Swagger 使用 依赖 <!--Swagger依赖 核心--><dependency><groupId>io.springfox</groupId&g…

smartsofthelp 5.0 最专业的数据库优化工具,数据库配置优化,数据库高并发优化,SQL 语句优化...

下载地址:百度网盘 请输入提取码 SQL操作返回历史记录&#xff1a; 2023-08-21 20:42:08:220 输入&#xff1a;select version as 版本号 2023-08-21 20:42:08:223 输出&#xff1a;当前数据库实例版本号&#xff1a;Microsoft SQL Server 2012 - 11.0.2100.60 (X64) …

TheGem主题 - 创意多用途和高性能WooCommerce WordPress主题/网站

TheGem主题概述 – 适合所有人的TheGem 作为设计元素、样式和功能的终极 Web 构建工具箱而设计和开发&#xff0c;TheGem主题将帮助您在几分钟内构建一个令人印象深刻的高性能网站&#xff0c;而无需触及一行代码。不要在编码上浪费时间&#xff0c;探索你的创造力&#xff01…