理解http协议和https协议

本文详细介绍了HTTP和HTTPS协议。HTTP是应用广泛的网络协议,具有简单快速等优点,但存在安全隐患。HTTPS在HTTP基础上加入SSL层,保证传输安全,不过会增加加载时间和成本。还阐述了两者区别及搜索引擎对HTTPS的态度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、http

1.什么是http

http是一种超文本传输协议,是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。http也是应用层协议,同其他应用层协议一样,是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。

2.http运行机制

http是一个简单的请求-响应协议,它通常运行在TCP之上。任何服务器除了包括HTML文件以外,还有一个http驻留程序,用于响应用户请求。浏览器是http客户,向服务器发送请求,当浏览器中输入了一个开始文件或点击了一个超级链接时,浏览器就向服务器发送了http请求,此请求被送往由IP地址指定的URL

3.工作原理

HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程:
(1)客户与服务器建立连接;
(2)客户向服务器提出请求;
(3)服务器接受请求,并根据请求返回相应的文件作为应答;
(4)客户与服务器关闭
说明:
客户与服务器之间的HTTP连接是一种一次性连接,它限制每次连接只处理一个请求,当服务器返回本次请求的应答后便立即关闭连接,下次请求再重新建立连接。这种一次性连接主要考虑到WWW服务器面向的是Internet中成千上万个用户,且只能提供有限个连接,故服务器不会让一个连接处于等待状态,及时地释放连接可以大大提高服务器的执行效率。
HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态。这就大大减轻了服务器记忆负担,从而保持较快的响应速度。HTTP是一种面向对象的协议。允许传送任意类型的数据对象。它通过数据类型和长度来标识所传送的数据内容和大小,并允许对数据进行压缩传送。当用户在一个HTML文档中定义了一个超文本链后,浏览器将通过TCP/IP协议与指定的服务器建立连接。
从技术上讲是客户在一个特定的TCP端口(端口号一般为80)上打开一个套接字。如果服务器一直在这个周知的端口上倾听连接,则该连接便会建立起来。然后客户通过该连接发送一个包含请求方法的请求块。
HTTP规范定义了9种请求方法,每种请求方法规定了客户和服务器之间不同的信息交换方式,常用的请求方法是GET和POST。服务器将根据客户请求完成相应操作,并以应答块形式返回给客户,最后关闭连接。

4.http协议的优点

(1)支持客户/服务器模式。
(2)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
(3)灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
(4)无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
(5)无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

5.http协议的缺点

http协议对其数据的明文传送和消息完整性检测的缺乏, 而这两点恰好是网络支付, 网络交易等新兴应用中安全方面最需要关注的,所以http存在着不小的安全隐患,另外,http协议在传输客户端请求和服务端响应时, 唯一的数据完整性检验就是在报文头部包含了本次传输数据的长度, 而对内容是否被篡改不作确认

6.一次完整的http请求过程

(1)TCP建立连接 HTTP协议是基于TCP协议来实现的,因此首先就是要通过TCP三次握手与服务器端建立连接,一般HTTP默认的端口号为80;
(2)浏览器发送请求命令 在与服务器建立连接后,Web浏览器会想服务器发送请求命令(3)浏览器发送请求头消息 在浏览器发送请求命令后,还会发送一些其它信息,最后以一行空白内容告知服务器已经完成头信息的发送;
(4)服务器应答 在收到浏览器发送的请求后,服务器会对其进行回应,应答的第一部分是协议的版本号和应答状态码;
(5)服务器回应头信息 与浏览器端同理,服务器端也会将自身的信息发送一份至浏览器(6)服务器发送数据 在完成所有应答后,会以Content-Type应答头信息所描述的格式发送用户所需求的数据信息
(7)断开TCP连接 在完成此次数据通信后,服务器会通过TCP四次挥手主动断开连接。但若此次连接为长连接,那么浏览器或服务器的头信息会加入keep-alive的信息,会保持此连接状态,在有其它数据发送时,可以节省建立连接的时间

二、https

1.什么是https

HTTPS是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面

2.https的工作原理

在这里插入图片描述
(1) 客户端将它所支持的算法列表和一个用作产生密钥的随机数发送给服务器;
(2) 服务器从算法列表中选择一种加密算法,并将它和一份包含服务器公用密钥的证书发送给客户端;该证书还包含了用于认证目的的服务器标识,服务器同时还提供了一个用作产生密钥的随机数
(3) 客户端对服务器的证书进行验证(有关验证证书,可以参考数字签名),并抽取服务器的公用密钥;然后,再产生一个称作 pre_master_secret 的随机密码串,并使用服务器的公用密钥对其进行加密(参考非对称加 / 解密),并将加密后的信息发送给服务器
(4)客户端与服务器端根据 pre_master_secret 以及客户端随机数值独立计算出加密和 MAC密钥(参考 DH密钥交换算法)
(5)客户端将所有握手消息的 MAC 值发送给服务器
(6) 服务器将所有握手消息的 MAC 值发送给客户端,与服务器的随机数值独立计算出加密和 MAC密钥(参考 DH密钥交换算法)

3.优点

(1)使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器
(2)HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,要比 HTTP 协议安全,可防止数据在传输过程中被窃取、改变,确保数据的完整性
(3)HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本

4.缺点

(1)相同网络环境下,HTTPS 协议会使页面的加载时间延长近 50%,增加 10%到 20%的耗电。
(2)HTTPS 协议还会影响缓存,增加数据开销和功耗
(3)HTTPS 协议的安全是有范围的,在黑客攻击、拒绝服务攻击和服务器劫持等方面几乎起不到什么作用
(4)SSL 证书的信用链体系并不安全。特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行
(5)成本增加。部署 HTTPS 后,因为 HTTPS 协议的工作要增加额外的计算资源消耗

5.https的主要作用

(1)建立一个信息安全通道,来保证数据传输的安全
(2)确认网站的真实性

6.应用场景

(1)业务系统需要符合相关安全评测的要求。
如业务系统需要通过信息安全测评、等级保护测评等上级主管部门安全要求,而评测细则中明确要求网站必须通过https方式进行加密。
(2)提高网站在搜索引擎中的排名。
采用https进行网站的部署,可以明显提高网站在同类行业中的排名优先级,提高站点的可信度、品牌形象。
(3)提高网站的安全性。
全站Https是根治中间人流量劫持的解决方案,不仅可以杜绝网页中被插入小广告,更可以保护用户隐私安全

7.ssl建立的过程

ssl的位置
在这里插入图片描述
证书主要作用是在SSL握手中,我们来看一下SSL的握手过程
(1)客户端提交https请求
(2)服务器响应客户,并把证书公钥发给客户端
(3)客户端验证证书公钥的有效性
(4)有效后,会生成一个会话密钥
(5)用证书公钥加密这个会话密钥后,发送给服务器
(6)服务器收到公钥加密的会话密钥后,用私钥解密,回去会话密钥
(7)客户端与服务器双方利用这个会话密钥加密要传输的数据进行通信

8.https证书的申请

(1)域名型SSL证书
该证书可以免费申请,信任等级一般,只需验证网站的真实性。
(2)企业型SSL证书
信任等级强,需要验证企业的身份,审核严格。
(3)增强型证书
信任等级最高,一般用于银行证券等金融机构。

9.https怎么实现的

① 证书验证阶段
(1)浏览器发起 HTTPS 请求
(2)服务端返回 HTTPS 证书
(3)客户端验证证书是否合法,如果不合法则提示告警
② 数据传输阶段
(1)当证书验证合法后,在本地生成随机数
(2)通过公钥加密随机数,并把加密后的随机数传输到服务端
(3)服务端通过私钥对随机数进行解密
(4)服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输

三、主要区别

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
3、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
4、HTTP 的 URL 以 http:// 开头,而 HTTPS 的 URL 以 https:// 开头
5、在 OSI 网络模型中,HTTP 工作于应用层,而 HTTPS 工作在传输层

四、搜索引擎对https的态度

1.谷歌的态度
谷歌在HTTPS站点的收录问题上与对HTTP站点态度并无什么不同之处,甚至把“是否使用安全加密”(HTTPS)作为搜索排名算法中的一个参考因素,采用HTTPS加密技术的网站能得到更多的展示机会,排名相对同类网站的HTTP站点也更有优势。
而且谷歌曾明确表示“希望所有的站长都能将使用HTTPS协议,而非HTTP”更是表明了其对达到“HTTPS everywhere”这一目标的决心。
2、百度的态度
虽然百度曾表示“不会主动抓取https页”,但对于“很多https网页无法被收录”也是“耿耿于怀”,百度曾就“https站点如何建设才能对百度友好”问题发布了一篇文章,给出了“提高https站点的百度友好度”的四项建议及具体操作。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值