一篇文章搞懂HTTP和HTTPS的的本质区别
nanshan 2025-05-28 19:20 24 浏览 0 评论
http协议是基于tcp协议,默认是80端口。它的特点是什么?它是基于请求和响应的,大家抓个包能看到http协议有一个请求报文有一个响应报文,还有它是一个无状态的协议,还有一个无连接的协议。
无连接是指:
http协议每次只能处理一个请求,限制我们每次连接只处理一个请求,就是服务器处理完客户的一个请求,并且收到客户的应答之后就会断开连接,即一个连接处理一个请求。
后续再有其他请求需要重新发起连接。它采用这种方式啊,其实是为了节省时间,但是一般web页面都比较复杂,可能需要在一个连接里面要处理多个请求,这时就不希望处理完一个请求,就断开连接,而是希望一个连接里面要去处理多个请求,于是在这个协议里面定义了一个新的功能叫做keep alive机制,它就可以让我们的一个连接保持。我们让它保持之后呢,它就变成了一个长链接。
无状态是指:
就是这个协议对于客户端是没有任何的记忆能力,那它导致一个问题,例如一个请求,断开了,没有保留本次请求里面的一个消息。然后下一个请求又来了。那么此时要用到上一个请求的东西怎么办?这时候就需要重新传输。
比如说使用淘宝,用户需要先进行登录,然后再去购买商品,那登录是一个请求,购买商品又是另外一个请求,那购买商品的时候是不是一定要先登录,这时就希望他能够给我保留一些登录相关的信息,怎么办呢?这时候我们应该采取一些什么样的机制来进行呢?就是一个cookie的机制和一个session的一个机制。
明文就是没有加过密的报文。所以账号密码都可以看见,非常的不安全,也不会对双方的“身份”进行认证。比如说我们有一个客户端,要想跟服务器进行一个通信,那中间如果有一个第三者,它就做了一个截取消息,篡改消息,因为客户端和服务器它并没有进行身份认证,所以中间第三者他可以把这个消息窃取到,进行修改之后再发给服务器。这是一个很不安全的地方,这就是http协议的一个非常明显的一个缺点。基于这个缺点HTTPS(全称:Hyper Text Transfer Protocol Secure)应运而生,就是超文本传输安全协议。
https协议它是加过密的,它的报文我们叫做密文。没有相关的密钥是看不到里面的具体消息,还可以保证我们的一个消息避免被窃取。
http + 加密 + 身份认证 + 完整性 = HTTPS
https协议是基于tcp的443端口。我们经常把https协议叫做披着ssl协议外壳的http协议。http协议和https协议都是基于TCP协议的,但是对于https协议呢,它是先有一个ssl协议的,它需要先有1个ssl封装加密。HTTPS网络中数据包的封装的过程:先封装一个ssl协议头部,然后再去封装一个http协议,所以它需要先去基于1个ssl加密的,然后呢在这个加密的基础上面发送http的消息。
ssl协议它有一个非常复杂的一个握手过程。不是tcp的这个握手,我们的ssl握手的过程。过程比较复杂,
大家可以看一下这个图:
这个图的过程其实是很复杂的,我们用一个比较浅显的例子来帮大家来理解这个过程。客户端想要跟服务器建立连接的基础上面去建立连接。
比如说这个女生是一个客户端。这个男生是服务器。客户端要去跟服务器建立https的连接。男生也是很有诚意的,他就说好呀,那既然你要跟我建立连接,我们先建立一个安全通道吧。也就是ssl握手的过程。
第一条消息是由客户端发起的。所以叫做client hello消息。消息包括客户端支持的所有加密方式。男生(服务器)会在女生(客户端)告诉的加密方式里面去选一个一样的加密方法,也就是要选择一样的语言来进行沟通。
第二条消息,是男生基于女生发的第一条消息回应的一个消息。刚刚客户端这边叫做client hello,现在男生回复的叫做server hello。
当然男生作为一个gentleman,他要表达他的诚意,他把他的身份证给了这个女生表示我是一个合法公民,相当于服务器的一张证书,给到了客户端。那客户端拿到这个证书,证书里面包含了一些密钥信息。所以拿到这个证书之后,她在本地默默地生成了一个密钥,这个密钥用来加密后面的传输数据,就是用来加密后面的http协议的交互消息的。她就把这个密钥消息通过一定的方式来告诉了这个男生。男生也记下来了。它记下来之后,它也要发一条消息告诉这个客户端我记下来了,那以后我们就用这个加密方式来进行一个安全聊天,至此我们的ssl握手就结束了。
刚刚那个是简易过程,下图为一个细化版。
左边是客户端,右边是服务器
客户端给服务器发一个handshake(client hello)握手消息,把所有的加密规则都发给服务器,那服务器收到之后回了一个server hello,这里面包括一组加密算法,一个身份证消息,以证书的形式发给了浏览器,第二条消息是server hello,第三条消息也是我们的一个证书。客户端获得了证书之后去验证他的证书,看他的身份是不是合法的。如果这个证书要是受信任的,客户端就会在本地默默生成一个密钥,生成的密钥之后把这个密钥告诉服务器。通过client key exchange就是客户端密钥来进行一个交换,他会给他发一个加密的一个套件说明给到客户端。总共做的事情就是把我本地生成的密钥告诉了客户端,那服务器他收到之后也要去确认一下。那ssl握手就结束。
总结:
首先加密的功能通过客户端生成的一个密钥来进行加密,身份认证是通过服务器给发的证书做身份认证。只有服务器发了证书这种叫作单向认证。如果有些网站安全要求比较高,可以做双向认证!单项认证只有服务器发了证书,那如果要去做双向认证,就是客户端和服务器都认证,相互交换证书,也就是说我的客户端也要去向CA申请一张证书,然后把这张证书发给服务器,让服务器也来认证一下我客户端的身份
完整性验证就是防止有第三方去篡改消息,有一个叫作MD5的哈希算法,通过MD5进行哈希算法。相当于我打了一个补丁,放在客户端的消息,然后把消息带这个补丁发给服务器,让服务器收到后再去验证对比一下这个摘要的正确性,这个摘要跟客户端的那个补丁是否一样的,如果他们一样,就表示这个消息没有被篡改。
那面试官常常会问的一个问题就是:https协议和http协议的区别
第一:安全性
从安全性角度, https协议是比http协议安全的,因为http是明文,易受攻击,也没有办法认证身份,也没有办法保证数据的完整性,https协议呢?它密文加密了,还能认证身份,还能防止消息被篡改,对安全性是非常高的。这是他们两个的第一个非常重要的区别.
第二:灵活性
http是tcp的80端口,https是tcp的443端口,灵活性不同, http协议也没有复杂的握手过程,https因为ssl这个协议的实现过程比较复杂,有一些加密,有些密钥的计算,有一些很复杂的技术在里面,所以它的技术门槛比较高,如果你要基于这个技术去开发一个网站的话,它的技术要求会比较高。
第三:速度
很明显http协议速度肯定快。因为它不需要经过复杂的ssl的握手,所以它的速度非常快。https协议需要经过一些复杂的安全过程,所以需要服务器性能好,服务器如果资源不够,都没有办法承载这个复杂的加密算法,也会导致我们用户的访问速度会比较慢.
第四:经济适用度
就是http协议,它没有一些额外的费用。但是呢,https协议,要去CA颁发证书,这个需要花钱的,年费大概是600到1000左右,还需要一些技术支持等费用,它是比较贵的,https优势这么明显,但是仍然有一些网站,像有一些小公司,由于对服务器要求比较高,可能就承担不起.
关注我了解更多程序员资讯技术,领取丰富资料
相关推荐
- Linux 中如何提取压缩文件 ?(linux怎么解压到当前文件夹)
-
Linux是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在Linux中提取不同类型的压缩文件。1.Unpa...
- 在 WSL 中体验 Unix 哲学:从发消息到加密传输文件
-
Unix哲学强调小而简单的工具,利用它们组合起来完成复杂的任务。WindowsSubsystemforLinux(WSL)为我们提供了一个可以在Windows上运行Linux工具的...
- 还在用数据线?这样传文件简直不要太方便!支持多设备互传!
-
这是一款局域网文件传输工具,它支持windows端、安卓端、苹果端、和linux端的设备在同一局域网下进行文件互传,省去了数据线连接的麻烦。工具我已经为大家打包好了,有兴趣的朋友可以在这里获取。大家好...
- Linux远程文件传输神器:rz / sz 全指南(含实操示例)
-
原文链接:「链接」在日常使用Linux服务器时,是否常常因为文件传输问题而苦恼?复制粘贴效率低,FTP配置复杂?今天推荐一套简单高效的终端工具组合:rz和sz。这两个命令搭配使用,能在本地与...
- 机房搬迁后域控服务器失联?原因令人乍舌,看我如何快速修复
-
一、问题背景:一场搬迁后引发的连锁故障为某客户的主域服务器升级内存,因为我们知道有备域,所以也就没多想,直接关闭了主域服务器,可是刚打开机箱盖,就有用户反馈,不能上网了,紧接着,各部门都来反馈断网,难...
- 办公室SSH服务器远程访问,重启自动建立通道
-
背景可以通过一台外网服务器建立来自Internet上的客户与办公室SSH服务的连接。Ubuntu下可以使用如下命令。autossh-M0-o"ServerAliveInterval3...
- Windows Autopatch热修复功能上线:企业PC Win11更新无需重启
-
IT之家6月25日消息,今年5月,微软为Windows11设备发布了首个热修复更新,并在同一时期为WindowsAutopatch添加了热修复功能。Autopatch是微软的...
- 路由器设置优化指南,小白也能轻松上手!
-
【ZOL中关村在线原创技巧应用】在数字化时代,网络已成为生活必需品,追剧、游戏、办公、学习都离不开稳定高速的网络。但很多人面对新路由器,不知道如何设置才能上网。本文将用通俗易懂的方式,一步步教你完成设...
- 如何防止DDoS攻击导致的服务中断(如何防止服务器被ddos)
-
防止DDoS(分布式拒绝服务)攻击导致的服务中断需要结合多种技术和策略。DDoS是通过大量恶意流量压垮服务器或网络资源,使正常用户无法访问服务。以下是针对DDoS攻击的预防措施和应对策略,帮...
- 零配置网络与.local 后缀(零配置失败)
-
在小型的家庭网络或办公室环境中,你可能经常遇到这样的场景:想要访问网络中的一台设备,比如家里的网络打印机、智能音箱,或者一个共享文件服务器,但你不知道它的具体IP地址。每次都要去路由器后台查看或者...
- 蓝牙无法搜索到设备?全面排查与解决指南
-
蓝牙作为主流无线连接技术,偶尔会出现“无法搜索到设备”的问题,这类故障多由设备状态、设置错误或兼容性问题引发。以下是一套系统化的排查方案,从基础检查到深度修复,帮你快速恢复蓝牙连接功能。一、快速检...
- 电脑网络出现黄色感叹号?一文教你彻底解决无网络连接问题
-
当电脑右下角的网络图标突然亮起黄色感叹号,显示"无Internet连接"时,这种突如其来的断网状况往往让人措手不及。无论是正在进行的视频会议、即将提交的工作文件,还是在线游戏的关键时刻...
- 手机信号恢复最简单的方法(手机信号怎么修)
-
重启手机或开关飞行模式信号恢复最简单的方法是重启手机或开关飞行模式,这一操作能快速刷新网络连接,解决80%以上的临时性信号丢失问题。快速恢复信号的简易步骤开关飞行模式。下拉通知栏,开启飞行模式等待10...
- 《Windows 学习:100 条命令大全》内容总结
-
一、文件与目录管理1.基础操作dir:用于列出当前目录下的文件和子目录。在命令提示符中输入dir,即可显示当前目录的内容,如文件名称、大小、修改日期等信息。若想查看隐藏文件,可使用dir/a命令。...
- 路由器亮红灯:网络“健康警报”的全面解读与自救指南
-
当你发现路由器的指示灯突然泛起红光,往往代表着你的网络连接已出现严重问题。面对这一情况,不必惊慌。本文将带你一步步拆解红灯背后的常见原因,并提供系统性的解决方案,让你从被动等待转为主动修复。红灯亮起的...
你 发表评论:
欢迎- 一周热门
-
-
UOS服务器操作系统防火墙设置(uos20关闭防火墙)
-
极空间如何无损移机,新Z4 Pro又有哪些升级?极空间Z4 Pro深度体验
-
手机如何设置与显示准确时间的详细指南
-
NAS:DS video/DS file/DS photo等群晖移动端APP远程访问的教程
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
如何修复用户配置文件服务在 WINDOWS 上登录失败的问题
-
一加手机与电脑互传文件的便捷方法FileDash
-
日本海上自卫队的军衔制度(日本海上自卫队的军衔制度是什么)
-
10个免费文件中转服务站,分享文件简单方便,你知道几个?
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)