应用层协议【HTTP和HTTPS】

news2025/1/21 8:57:32

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.coloradmin.cn/o/1681900.html

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

相关文章

大模型相关内容的研究学习

大模型研究学习 1.大模型的“幻觉” 幻觉可以分为事实性幻觉和忠实性幻觉。 事实性幻觉,是指模型生成的内容与可验证的现实世界事实不一致。 比如问模型“第一个在月球上行走的人是谁?”,模型回复“Charles Lindbergh在1951年月球先驱任务…

高稳定LED驱动IC防干扰数显驱动控制器热水器LED驱动芯片VK1650 SOP16/DIP16 原厂FAE支持

产品型号:VK1650 产品品牌:永嘉微电/VINKA 封装形式:SOP16/DIP16 工程服务,技术支持! 概述 VK1650是一种带键盘扫描电路接口的 LED 驱动控制专用芯片,内部集成有数据锁存器、LED 驱动、键盘扫描等电路。…

Python筑基之旅-溯源及发展

目录 一、Python的起源 二、Python的版本更替及变化 三、Python的优缺点 四、Python的发展方向 五、Python之禅 六、推荐专栏/主页: 1、Python函数之旅:Functions 2、Python算法之旅:Algorithms 3、个人主页:https://mye…

0515《羊了个羊》小程序复刻开发-项目

https://doc.youyacao.com/114/2102 0515《羊了个羊》小程序复刻开发-项目 介绍 2024年5月15日经过一定时间的洽谈和磋商,优雅草获得了甲方客户外包的《羊了个羊》APP复刻开发,加急开发7个自然日,工作日照算。 项目案例甲方 甲方客户-个…

C# 快速排序(QuickSort)

QuickSort是一种基于分而治之算法的排序算法,它选择一个元素作为主元,并通过将主元放置在已排序数组中的正确位置,围绕所选主元对给定数组进行分区。 快速排序是如何工作的? QuickSort中的关键过程是partition()。分区的…

【动态规划】子序列问题II|最长定差子序列|最长的斐波那契数列的长度|最长等差数列|等差数列的划分

一、最长定差子序列 1218. 最长定差子序列 算法原理: 💡细节: 1.正常创建dp表,分析状态转移方程:可能b存在于多个不同的位置,那么要用哪个下标的dp呢? 用最后一个b的,因为用前面的可…

手机图片恢复不求人:手动找回丢失的照片!

无论是外出旅行、聚会还是日常点滴,我们总是习惯用手机记录下来,让美好的瞬间定格在一张张照片中。然而,有时因为误删、清空缓存或是更换手机,那些珍贵的照片突然消失了。手机图片恢复有什么简单易行、容易上手的方法吗&#xff1…

Flink 高可用之StandAlone-HA模式(一)

Flink 高可用之StandAlone-HA模式 压缩包: tar -xvzf flink-1.9.1-bin-scala_2.11.tgz -C /opt && cd /opt/flink-1.9.1 集群规划: 1.集群规划 - 服务器: node1(Master Slave): JobManager TaskManager- 服务器: node2(Master Slave): JobManager TaskManager- …

【介绍下JSON,JSON是什么?】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

【三十一】springboot+easyExcel实现多文件导出压缩包

互相交流入口地址 整体目录: 【一】springboot整合swagger 【二】springboot整合自定义swagger 【三】springboot整合token 【四】springboot整合mybatis-plus 【五】springboot整合mybatis-plus 【六】springboot整合redis 【七】springboot整合AOP实现日志操作 【…

用AI绘画制作虚拟网红!9个月涨粉30万!超强变现案例分享

大家好,我是向阳。 2023年是AI爆发的一年,AI的飞速发展,让创造AI虚拟人变得简单,于是有人发明一种玩法:AI虚拟网红,模拟真人的外观和生活方式,吸引流量和商家关注。 其中fit_aitana就是一个典型…

设备接入物联网平台必须掌握的关键信息——青创智通

工业物联网解决方案-工业IOT-青创智通 设备接入物联网平台需要掌握的信息相当丰富且复杂,这涉及到多个层面,包括技术细节、平台选择、安全性考虑以及后期管理与维护等。以下将详细阐述设备接入物联网平台所需掌握的关键信息。 首先,我们需要…

充电桩战火重燃,特来电、星星充电上演“龙虎斗”

配图来自Canva可画 小米Su7真的太火了,上市40天锁单量超过10万供不应求,给新能源汽车行业带来了新的活力,也促进了充电桩行业的发展。 据中国汽车工业协会数据,4月份新能源汽车产销分别完成87万辆和85万辆,同比分别增…

ROS 手眼标定 realsense435i+ur5e

手眼标定的原理 基坐标系(base_tree)和相机(camera_tree)两个坐标系属于不同的tree,通过将标签贴到手上,相机识别出标签的position和orention,并通过easy_handeye标定包得到tool0(机械手)&…

企业数据治理:挑战与机遇并存的道路

在数字化浪潮席卷全球的今天,数据已经成为企业最宝贵的资产之一。然而,如何有效地管理和利用这些数据,确保数据的准确性、可靠性和安全性,成为了摆在企业面前的一大难题。数据治理,作为这一难题的解决方案,…

03-行为型模式(共10种)

上一篇: 02-结构型设计模式(共7种) 1. Strategy(策略模式) 策略模式是一种行为型设计模式,它定义了一系列算法,将每个算法封装到独立的类中,并使它们可以互相替换。这样可以使算法的变化独立于使用算法的客户端。 在 C 中,策略模式…

数据结构复习指导之图的遍历

文章目录 图的遍历 考纲内容 复习提示 1.广度优先搜索 1.1BFS算法的性能分析 1.2BFS算法求解单源最短路径问题 1.3广度优先生成树 2.深度优先搜索 2.1DFS算法的性能分析 2.2深度优先的生成树和生成森林 3.图的遍历与图的连通性 4.知识回顾 图的遍历 考纲内容 &…

Signal 即将成为JavaScript的一部分

什么是响应性? 在过去的几年中,响应性成为了所有现代前端框架以及React库的核心。 对于不熟悉前端开发的人来说,起初这可能是一个令人困惑的概念,因为它改变了常规的、自上而下的、从调用者到被调用者的顺序工作流。 在响应性范…

GIT基础02 多机器协作等命令

前言 首先我们知道git给我们提供了分支管理的功能 我们一般使用master分支作为线上环境,master分支一般是一个稳定的分支 我们通常是会创建一个其他分支进行开发,这样不会影响线上的机器运行 如果没有git提供这样的分支功能,就无法做到这一套了 指令学习 假设软件出现问题咋办…

得物质量管理体系的建设与应用

一、背景 质量保障是一门基于软件测试的系统化工程,遵循渐进式的发展规律。通过因地制宜地制定落地策略,设计场景方案,获取试验结果,并加以循环往复。最终,在每一位得物测试工程师的共同努力下,积累出一套…