应用层协议【HTTP和HTTPS】

1.概念

1.1 协议

协议是指在计算机通信和网络通信中,为了实现数据交换而建立的一套规则、约定或者标准。它定义了通信双方之间的通信格式、传输方式、数据的含义、错误处理等细节,从而确保通信的可靠性、有效性和安全性。

>1在计算机网络中,协议通常分为两种主要类型:

1. **通信协议(Communication Protocol):** 这类协议定义了计算机之间或计算机与设备之间的通信规则,以确保数据的可靠传输。例如,TCP(传输控制协议)和UDP(用户数据报协议)是两种常见的网络层协议,用于在互联网上进行数据传输。

2. **应用层协议(Application Layer Protocol):** 这类协议建立在通信协议之上,用于定义应用程序之间的通信规则。应用层协议通常针对特定的应用领域或服务,例如HTTP(超文本传输协议)用于在Web浏览器和服务器之间传输超文本文档,SMTP(简单邮件传输协议)用于电子邮件的传输等。

协议在计算机通信中起着至关重要的作用,它们使得不同系统和设备能够相互通信并交换数据,从而构建了整个互联网和各种网络服务。

1.2 HTTP

HTTP(超文本传输协议)是一种用于传输超文本文档(例如HTML文件)的应用层协议,是互联网上最常用的协议之一。它建立在TCP/IP协议之上,用于客户端和服务器之间的通信。

HTTP的工作原理如下:

1. **客户端发送请求:** 客户端(例如Web浏览器)向服务器发送HTTP请求,请求获取或传输特定资源,例如网页、图像、视频等。

2. **服务器处理请求:** 服务器接收到客户端的请求后,根据请求的内容和类型进行处理。服务器可能会读取文件、运行脚本、查询数据库等操作。

3. **服务器发送响应:** 服务器处理完请求后,将所请求的资源以及相关的响应信息发送回客户端。

4. **客户端接收响应:** 客户端接收到服务器发送的响应后,根据响应的内容进行相应的处理,例如渲染网页、显示图像、播放视频等。

HTTP通信的特点包括:

- **简单性:** HTTP的基本功能和操作相对简单,易于实现和理解。
- **灵活性:** HTTP允许传输各种类型的数据,包括文本、图像、音频、视频等。
- **无状态性:** HTTP是一种无状态协议,每个请求都是独立的,服务器不会在多次请求之间保持任何状态信息。
- **连接性:** HTTP默认使用短连接,即每个请求/响应周期都会建立一个新的TCP连接,但也可以通过HTTP持久连接来重用连接以提高性能。

HTTP协议的版本有多个,其中最常见的是HTTP/1.1和HTTP/2,而HTTP/3则是基于UDP的新一代HTTP协议。

HTTP传输的弊端:

1. **不安全性**:HTTP 传输的数据并没有加密,容易被网络中的攻击者截获、篡改或者窃取,导致数据泄露和安全问题。

2. **性能瓶颈**:HTTP 协议中每次请求和响应都需要建立 TCP 连接,这会增加额外的网络延迟和资源开销。而且 HTTP 的请求和响应头部信息较多,还会占用带宽。

3. **可扩展性差**:HTTP 协议本身的设计比较简单,只支持基本的请求和响应方式,难以满足复杂的应用需求。此外,HTTP 协议在传输二进制数据等其他格式的数据时,需要对这些数据进行 Base64 编码,这会增加额外的传输开销。

4. **无法支持实时性交互**:HTTP 是一种请求-响应模式,客户端需要不断地发送请求来获取最新的数据,这会导致实时性较差,难以支持实时性交互。

为了解决 HTTP 协议的这些弊端,人们已经提出了许多新的协议和技术,如 HTTPS、SPDY、HTTP/2、WebSocket 等,这些协议和技术可以提供更好的安全性、性能和可扩展性,从而满足不同应用场景的需求。

1.3 HTPS

HTTPS的工作原理

HTTPS(HyperText Transfer Protocol Secure)是一种通过计算机网络进行安全通信的协议。它是基于HTTP协议的加密版本,通过使用TLS/SSL协议进行数据加密,确保通信的安全性和隐私性。以下是HTTPS的工作原理:

1. **建立连接:** 客户端(例如浏览器)向服务器发送连接请求,请求建立安全连接。

2. **握手阶段:** 在这个阶段,TLS/SSL协议用于进行握手操作,以确保通信的安全性。这包括以下步骤:
   - 客户端发送支持的加密算法列表和其他必要的信息给服务器。
   - 服务器选择一个加密算法并发送其证书(包含公钥)给客户端。
   - 客户端验证服务器证书的有效性,并生成一个用于对称加密的随机密钥,然后使用服务器的公钥加密该密钥,并发送给服务器。
   - 服务器使用自己的私钥解密客户端发送的随机密钥。

3. **加密通信:** 一旦握手成功,客户端和服务器之间的通信将使用双方协商好的对称加密密钥进行加密和解密。这确保了数据在传输过程中的机密性。

4. **数据传输:** 在建立安全连接后,客户端和服务器可以安全地传输数据,所有传输的数据都会被加密。

5. **连接关闭:** 当通信结束时,客户端或服务器可以选择关闭连接。

总的来说,HTTPS通过使用加密技术确保了数据在传输过程中的安全性,防止了数据被窃取或篡改的风险。这使得用户可以放心地在互联网上进行敏感数据的传输,例如登录凭证、支付信息等。

HTTPS通信特点

HTTPS通信的特点包括:

1. **安全性:** HTTPS使用TLS/SSL协议对数据进行加密,因此可以有效防止数据在传输过程中被窃取或篡改。这种加密技术保护了用户的隐私和敏感信息,使其在互联网上传输时更加安全。

2. **验证身份:** 在握手阶段,服务器会向客户端发送其证书,证书包含了服务器的公钥和相关信息。客户端可以验证证书的有效性,确保其连接的是预期的服务器,而不是中间人攻击或伪装的服务器。

3. **完整性保护:** HTTPS不仅对数据进行加密,还使用消息认证码(MAC)来保护数据的完整性。这意味着即使数据被窃取,攻击者也无法篡改数据,因为篡改后的数据在解密时会被检测到。

4. **信任度:** HTTPS通常使用由权威机构颁发的数字证书,这些证书通过了严格的身份验证,客户端可以信任这些证书。这增加了用户对连接的信任度,减少了受到钓鱼攻击等威胁的风险。

5. **SEO优化:** 谷歌等搜索引擎对采用HTTPS协议的网站给予更高的排名,这也促使更多网站采用HTTPS,提升了整个网络环境的安全性。

综上所述,HTTPS通信的特点使得其成为互联网上安全传输敏感信息的首选协议,保护用户隐私,防止数据泄露和篡改。

HTTPS传输的弊端

HTTPS作为一种安全通信协议,在保护用户数据方面有着明显的优势,但也存在一些弊端:

1. **性能开销:** HTTPS通信涉及加密和解密操作,这会增加服务器和客户端的计算负担,导致一定程度的性能损失。尤其是在服务器端,加密操作可能对服务器的响应时间产生影响。

2. **证书管理成本:** 为了使用HTTPS,网站需要获取和维护数字证书。证书的获取和管理可能需要费用,尤其是对于企业级网站来说,还需要定期更新证书,这增加了运维成本。

3. **部署复杂性:** 配置和部署HTTPS通常比HTTP更为复杂,特别是对于较大规模的网站或复杂的网络架构。需要对服务器、负载均衡器等进行适当的配置和调整。

4. **可能存在中间人攻击:** 尽管HTTPS可以防止数据被窃取或篡改,但仍然存在中间人攻击的可能性。如果攻击者能够获取有效的数字证书或以其他方式介入通信,他们可能会中断或篡改通信。

5. **不可缓存性:** HTTPS通信的内容通常不能被中间节点(例如代理服务器或内容分发网络)缓存,这可能影响到内容分发和加速,增加了网络传输的负担。

虽然HTTPS有一些弊端,但综合考虑其安全性和保护用户隐私的重要性,大多数网站仍然选择采用HTTPS来保护数据传输的安全。随着技术的发展和优化,一些弊端可能会逐渐减少。

2.HTTPS和HTTP的区别

3.资源的使用情况

HTTP使用TCP三次握手建立连接,客户端和服务器需要交换3个包(具体可查看马海祥博客《HTTP服务的七层架构技术解析及运用》的相关介绍);HTTPS除了TCP的三个包,还要加上ssl握手需要的9个包,所以一共是12个包。

HTTP建立连接,按照下面链接中针对Computer Science House的测试,是114毫秒;HTTPS建立连接,耗费436毫秒,ssl部分花费322毫秒,包括网络延时和ssl本身加解密的开销(服务器根据客户端的信息确定是否需要生成新的主密钥;服务器回复该主密钥,并返回给客户端一个用主密钥认证的信息;服务器向客户端请求数字签名和公开密钥)。

当SSL连接建立后,之后的加密方式就变成了3DES等对于CPU负荷较轻的对称加密方式,相对前面SSL建立连接时的非对称加密方式,对称加密方式对CPU的负荷基本可以忽略不记,所以问题就来了,如果频繁的重建ssl的session,对于服务器性能的影响将会是致命的,尽管打开HTTPS保活可以缓解单个连接的性能问题,但是对于并发访问用户数极多的大型网站,基于负荷分担的独立的SSL termination proxy就显得必不可少了,Web服务放在SSL termination proxy之后,SSL termination proxy既可以是基于硬件的,譬如F5;也可以是基于软件的,譬如维基百科用到的就是Nginx。

那采用HTTPS后,到底会多用多少服务器资源,2010年1月Gmail切换到完全使用HTTPS, 前端处理SSL机器的CPU负荷增加不超过1%,每个连接的内存消耗少于20KB,网络流量增加少于2%,由于Gmail应该是使用N台服务器分布式处理,所以CPU负荷的数据并不具有太多的参考意义,每个连接内存消耗和网络流量数据有参考意义,这篇文章中还列出了单核每秒大概处理1500次握手(针对1024-bit 的 RSA),这个数据很有参考意义。

Heartbleed这个被称作史上最大的网络安全漏洞,想必很多人都有所耳闻,Heartbleed之所以能够出现,其实和我们这个问题关系还不小,前面我们谈到了频繁重建SSL/TLS的session对于服务器影响是致命的,所以,聪明的RFC在2012年提出了RFC6520 TLS的心跳扩展,这个协议本身是简单和完美的,通过在客户端和服务器之间来回发送心跳的请求和应答,保活TLS session,减少重建TLS的session的性能开销,令人遗憾的是,openssl在实现这个心跳扩展时,犯了一个低级的错误,没有对收到的心跳请求进行长度检查,直接根据心跳请求长度拷贝数据区,导致简单的心跳应答中可能包含了服务器端的核心数据区内容,用户名,密码,信用卡信息,甚至服务器的私有密钥都有可能泄露。

4.网站的搭建需不需使用HTTPS

从难易程度来讲,HTTP的搭建肯定比HTTPS简单的多,但是如果你的网站涉及交易支付、在线购物等建议网站应该使用 HTTPS 来保护数据传输的安全性。HTTPS 是基于 HTTP 协议之上的一种安全协议,通过使用 SSL/TLS 协议来加密数据传输,从而保证了数据传输的机密性、完整性和可信性。

在您的网站涉及到用户信息的收集、交易支付、在线购物等,那么使用 HTTPS 协议将更为重要。因为在 HTTP 协议下,所有数据都是明文传输的,如果被黑客截获,可能会导致用户账号密码、银行卡信息等敏感数据泄露,给用户造成不必要的损失。

此外,现在许多搜索引擎和浏览器都更加重视网站的安全性,推荐使用 HTTPS。例如,Google 在其搜索引擎结果中标注了非 HTTPS 网站为“不安全”,使用 HTTPS 的网站则会获得优先显示和更高的排名。

虽然使用 HTTPS 要比 HTTP 更加复杂,需要配置证书、升级服务器等,但是它可以有效地保护用户数据传输的安全性,有助于提高网站的信誉度和用户体验。

5.搭建HTTPS

搭建 HTTPS,您需要完成以下步骤:

1. **获取 SSL 证书**:您需要从数字证书认证机构(CA)或者自签名方式获得 SSL 证书。CA 是一个可信的第三方机构,可以对您的身份和网站进行验证,并颁发 SSL 证书。自签名证书是自己制作的证书,不需要经过 CA 的认证,但是它不能被大多数浏览器所信任。在选择证书时,您需要考虑到其安全性、价格和可信度等因素。

2. **配置服务器**:您需要在 Web 服务器上进行相应的配置,以便支持 HTTPS 协议。对于 Apache 和 Nginx 等常见的 Web 服务器,您需要修改配置文件,以启用 HTTPS 支持,并指定 SSL 证书的位置。

3. **安装 SSL 证书**:您需要将 SSL 证书安装到 Web 服务器中,并配置好相应的密钥和证书链。SSL 证书一般包括公钥和私钥两部分,私钥需要妥善保管,不要泄露给他人。

4. **测试 HTTPS 连接**:在完成上述步骤之后,您需要测试 HTTPS 连接是否正常工作。您可以使用浏览器来访问网站,并检查浏览器地址栏中是否显示了 HTTPS 协议和 SSL 证书相关信息。

需要注意的是,在搭建 HTTPS 时,您需要考虑到服务器的硬件性能、带宽、证书有效期、证书更新等因素。同时,您也需要及时升级 Web 服务器软件和 SSL/TLS 协议,以保证数据传输的安全性。

6.免费的证书推荐

推荐几个免费的 SSL 证书颁发机构:

1. **Let's Encrypt**:Let's Encrypt 提供了免费的 SSL/TLS 证书,其证书受到大多数现代浏览器的信任。您可以使用 Certbot 工具来自动化证书的获取和配置过程,极大地简化了搭建 HTTPS 的流程。

2. **Cloudflare**:Cloudflare 提供了免费的基本 SSL 证书,可以通过 Cloudflare 的 CDN 服务来实现 HTTPS 加速和安全性增强。其免费证书支持 SNI 技术,适用于大多数网站。

3. **ZeroSSL**:ZeroSSL 提供了简单易用的免费 SSL 证书生成工具,您可以通过其在线工具来生成免费的 SSL 证书。它也提供了 API 和 ACME 协议的支持,方便自动化证书的获取和更新。

4. **SSL For Free**:SSL For Free 提供了免费的 SSL 证书,支持通配符证书和多域名证书。您可以通过其在线工具来获取证书,并提供了相应的安装说明。

这些免费的 SSL 证书颁发机构都提供了简单易用的方式来获取和配置 SSL 证书,可以帮助您快速实现网站的 HTTPS 加密,提升网站的安全性和用户信任度。

7.每期一问

上期答案

struct ListNode* reverseList(struct ListNode* head) {//判断传入的值为空或者只有一个节点直接返回if(head == NULL || head->next == NULL){return head;}struct ListNode* p1;//定义三个指针struct ListNode* p2;struct ListNode* p3;p1 = NULL;p2 = head;p3 = head->next;while(p2){//翻转指针p2->next = p1;p1 = p2;p2 = p3;if(p3 != NULL){p3 = p3->next;}}return p1;
}

本期问题:. - 力扣(LeetCode)

本期内容就这些,我们下期再见!

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

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

相关文章

注册讲堂 | 体外诊断试剂分类目录的变化

5月11日,千呼万唤的《体外诊断试剂分类目录》(2024年第58号)终于发布! 前世今生 2013年:《6840 体外诊断试剂分类子目录(2013版)》(以下简称2013版目录) 2017年&#xff…

苹果永久版安装PD虚拟机:Parallels Desktop 19 一键激活版

Parallels Desktop 19是一款功能强大的虚拟机软件,专为Mac用户设计,允许用户在同一台Mac电脑上同时运行Windows、Linux等多个操作系统,而无需额外的硬件设备。 下载地址:https://www.macz.com/mac/9581.html?idOTI2NjQ5Jl8mMjcuM…

Kubernetes入门:核心概念

集群架构与组件 一个kubernetes集群主要是由控制节点(master)、工作节点(node)构成,每个节点上都会安装不同的组件。 master:集群的控制平面,负责集群的决策 ( 管理 ) api-server : 资源操作的唯一入口,接收用户输入的命令&…

文本控件Text Control示例: 将图像插入 TX 的各种方法

TX Text Control 是一款功能类似于 MS Word 的文字处理控件,包括文档创建、编辑、打印、邮件合并、格式转换、拆分合并、导入导出、批量生成等功能。广泛应用于企业文档管理,网站内容发布,电子病历中病案模板创建、病历书写、修改历史、连续打…

在Linux上面部署ELK

注明:一下的软件需要自己准备 一、准备环境: 1.两台elasticsearch主机4G内存 2.两台elasticsearch配置主机名node1和node2(可以省略) #vim /etc/hostname #reboot 3. 两台elasticsearch配置hosts文件 #vim /etc/hosts 192.168.1.1 node1 192…

RTMP低延迟推流

人总是需要压力才能进步, 最近有个项目, 需要我在RK3568上, 推流到公网, 最大程度的降低延迟. 废话不多说, 先直接看效果: 数据经过WiFi发送到Inenter的SRS服务器, 再通过网页拉流的. 因为是打金任务, 所以逼了自己一把, 把RTMP推流好好捋一遍. 先说说任务目标, 首先是MPP编码…

【Altium】AD-检查原理图中元器件未连接的Passive Pin

1、 文档目标 如何让原理图编译时找出元器件上未连接的Passive Pin 2、 问题场景 当引脚属性(Pin type)为passive时,原理图编译的默认规则是不会去检查它们是否有连接的。在实际设计过程中,经常会有导线虚连,漏连的事…

医疗传感器种类不断增多 市场规模逐渐扩大

医疗传感器种类不断增多 市场规模逐渐扩大 医疗传感器是将人体的生理信息转换为电信息的变换装置。医疗传感器具有高灵敏度、高精度、实时监测等优点,可以检测佩戴者的心率、呼吸频率、活动量等,从而更加准确地了解身体情况。   经过多年发展&#…

【极简】docker常用操作

镜像images是静态的 容器container是动态的,是基于镜像的,类似于一个进程。 查看docker images: docker images 或者docker image ls 查看docker container情况:docker ps -a,-a意思是--all 运行一个container: doc…

数字水印 | 奇异值分解 SVD 的 Python 代码实现

🥑原理:数字水印 | 奇异值分解 SVD 的定义、原理及性质 🥑参考:Python 机器学习笔记:奇异值分解(SVD)算法 正文 对于一个图像矩阵,我们总可以将其分解为以下形式: 通过…

使用API有效率地管理Dynadot域名,默认将域名隐形转发至其他界面

关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…

【大模型微调】一文掌握7种大模型微调的方法

本篇文章深入分析了大型模型微调的基本理念和多样化技术,细致介绍了LoRA、适配器调整(Adapter Tuning)、前缀调整(Prefix Tuning)等多个微调方法。详细讨论了每一种策略的基本原则、主要优点以及适宜应用场景,使得读者可以依据特定的应用要求和计算资源限…

openGauss一主两备集群异常断电后不能正常启动的解决过程简记

背景 因异常断电后opengauss 5.0.0版本,一主两备集群启动失败。 报错不是主机,由于当时没有截图,查看日志后发现报错是: 定位过程 Day1 1. 尝试用另外两台机器启动每台机器 发现都报错自己不是主机,像极了唐僧被妖…

哪款桌面便签app能帮助我提升工作效率

作为上班族,我们每天都要处理大量的工作事项,从策划方案到处理邮件,每一个环节都需高效且有条不紊。在这样的工作环境下,提升效率显得尤为重要。而选择一款优秀的桌面便签app,无疑是提高工作效率的关键。 桌面便签app…

【数据结构】数据结构大汇总 {数据结构的分类总结:定义和特性、实现方式、操作与复杂度、适用场景、相关算法、应用实例}

一、线性结构 1.1 顺序表 定义和特性:顺序表是一种线性表的存储结构,它采用一段地址连续的存储单元依次存储线性表中的元素。顺序表具有随机访问的特性,即可以通过元素的下标直接访问元素。 实现方式:顺序表可以通过数组来实现&…

基于51单片机的非接触式无线红外测温

基于51单片机的无线红外测温 (程序+原理图+设计报告) 功能介绍 具体功能: 1.采用红外温度传感器测温并用LCD1602显示; 2.按键为启动按键、保存按键、显示数据按键,可以实现对温度数值的控制…

【制作100个unity游戏之26】unity2d横版卷轴动作类游戏6(附带项目源码)

最终效果 系列导航 文章目录 最终效果系列导航前言敌人动画配置撞墙判断敌人基本AI逻辑实现 野猪受伤死亡死亡敌人死亡时,还是会对人物产生伤害有限状态机&抽象类多态 定义不同状态的敌人行为防止野猪在悬崖掉下去野猪的追击状态的转换敌人主动查找玩家 追击状态…

基于微信小程序+JAVA Springboot 实现的【智慧乡村旅游服务平台】app+后台管理系统 (内附设计LW + PPT+ 源码+ 演示视频 下载)

项目名称 项目名称: 基于微信小程序的智慧乡村旅游服务平台的设计与实现 项目技术栈 该项目采用了以下核心技术栈: 后端框架/库: Java SSM框架数据库: MySQL前端技术: 微信开发者工具、uni-app其他技术&#xff1a…

8B10B编码(高速收发器五)

1、8B10B解决的问题 8B10B编码是1983年IBM公司提出的传输编码标准,通常用于高速收发器中,常见的JESD204B、SATA等接口协议,使用查表就可以实现编码和解码。 在这些高速收发器的接收端需要通过CDR技术去恢复时钟与数据的相位关系,在…

Linux day6 yum下载,systemctl,

yum命令 yum [-y] install wget 通过yum下载wget小工具 -y的意思是,如果有询问,自动确认(总是允许)。 yum remove wget 也可以通过这种方式卸载wget