HTTP和HTTPS协议的比较

📅 2026/7/28 15:30:14
HTTP和HTTPS协议的比较
1.HTTP协议定义HTTPhyperText transport Protocol超文本传输协议用于传送www方式的数据关于http协议采用了请求-响应模型客户端向服务器发送了一个请求服务器以一个状态行作为响应。请求报文请求方法URLURI (统一资源标识Uniform Resource Indentifier) 用来唯一表示一个资源。URI由主要的子集URL和URN组成。URL(统一资源定位Uniform resource Locator) 通过资源的位置来标识资源。URN(统一资源命名Uniform resource Name) 通过资源的名字来表示资源与其所处位置无关这样即使资源位置发生变动其URN也不会变化。协议版本格式为HTTP/主版本号.次版本号常用的是HTTP/1.1 和 HTTP/1.0 。请求头部响应报文协议版本同请求报文。状态码响应头部HTTP 是无状态的无状态是指协议对于事务处理没有记忆能力。因为http协议目的在于支持超文本的传输更加广义一点就是支持资源的传输那么在客户端浏览器向服务器发送请求继而服务器将相应的资源发回客户。这样一个过程中无论对于客户端还是服务器都没有必要记录这个过程。因为每一次请求和响应都是相对独立的一般而言一个url对应唯一的超文本正因为这样d唯一性所以http协议被设计为无状态的链接协议符合他本身的需求。2. HTTP 用的是什么连接在HTTP/1.0中默认使用的是短链接。也就是浏览器和服务器每进行一次HTTTP 操作就会建立一次连接但任务中断就会结束连接。如果客户端浏览器访问的某个HTML 或其他类型的Web页面中包含其他的Web资源例如JavaScript文件、图像文件、CSS文件等当浏览器没遇到一个这样的web资源就会建立一次HTTP会话。在HTTP/1.1中默认的使用是长连接以保持响应特性。使用长连接的HTTP协议会在响应头加入这一行代码Connectionkeep-alive。如果浏览器再次访问这个服务器上的网页就会继续使用这个已经建立的连接。keep-alive不会永远保持连接它有一个保持时间可以再服务器软件中设置这个时间。实现长连接要客户端和服务器端都支持长连接。3. HTTP REST定义REST(Representational State Transfer)一种轻量级的Web Service架构。可以完全通过HTTP协议实现。其实现和操作比SOAP和XML-RPC更为简洁还可以利用缓存Cache来提高响应速度性能、效率和易用性上都优于SOAP协议。REST架构对资源的操作包括获取、创建、修改和删除资源的操作对应HTTP协议提供的GET、POST、PUT和DELETE方法。REST提供了一组架构约束当作为一个整体来应用时强调组件交互的可伸缩性、接口的通用性、组件的独立部署、以及用来减少交互延迟、增强安全性、封装遗留系统的中间组件。REST架构约束客户-服务器Client-Server提供服务的服务器和使用服务的客户需要被隔离对待客户和服务器之间通过一个统一的接口来互相通讯。无状态Stateless服务端并不会保存有关客户的任何状态客户端自身负责用户状态的维持并在每次发送请求时都需要提供足够的信息。可缓存CachableREST系统需要能够恰当地缓存请求以尽量减少服务端和客户端之间的信息传输以提高性能。分层系统Layered System服务器和客户之间的通信必须被这样标准化允许服务器和客户之间的中间层Ross代理网关等可以代替服务器对客户的请求进行回应而且这些对客户来说不需要特别支持。统一接口Uniform Interface客户和服务器之间通信的方法必须是统一化的。4. HTTP 缓存问题定义缓存是一种保存资源副本并在下次请求中直接使用该副本的技术缓存能够节约网络资源提升页面响应速度。常见的缓存类型分为共享缓存和私有缓存。分类私有缓存只能用于单独用户常见的浏览器缓存便是私有缓存。私有缓存能够存储用户通过http下载过的文档从而在用户再次访问时直接提供给用户而不用向服务器发送请求。共享缓存共享缓存能够被多个用户使用常用的web代理中便使用的共享缓存。缓存寿命请求头中的Cache-Control: max-ageN。相应的缓存寿命即为 N从设置开始N秒之后过期。Expires属性Expires属性的值为过期的时间点在这个时间点后该缓存被认为过期。Last-Modified信息。缓存的寿命为头里面 Date表示的事件点减去 Last-Modified的时间点的结果乘以 10%。判断文件是否更改可以看文件时间戳。5. GET 和 POST 的区别GET从指定的资源请求数据。POST向指定的资源提交要被处理的数据。由于HTTP的规定和浏览器/服务器的限制导致它们在应用过程中体现出一些不同。6. HTTP 和 HTTPS 的区别HTTP协议传输的数据都是未加密的也就是明文的因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输于是网景公司设计了SSLSecure Sockets Layer协议用于对HTTP协议传输的数据进行加密从而就诞生了HTTPS。简单来说HTTPS协议是由SSLHTTP协议构建的可进行加密传输、身份认证的网络协议要比http协议安全。HTTPS和HTTP的区别主要如下https协议需要到ca申请证书一般免费证书较少因而需要一定费用。http是超文本传输协议信息是明文传输https则是具有安全性的ssl加密传输协议。http和https使用的是完全不同的连接方式用的端口也不一样前者是80后者是443。http的连接很简单是无状态的HTTPS协议是由SSLHTTP协议构建的可进行加密传输、身份认证的网络协议比http协议安全。7. HTTPS 中SSL 层原理SSL利用数据加密、身份验证和消息完整性验证机制为网络上数据的传输提供安全性保证。SSL支持各种应用层协议。由于SSL位于应用层和传输层之间所以可以为任何基于TCP等可靠连接的应用层协议提供安全性保证。身份验证机制。SSL利用数字签名来验证通信对端的身份。非对称密钥算法可以用来实现数字签名。由于通过私钥加密后的数据只能利用对应的公钥进行解密因此根据解密是否成功就可以判断发送者的身份如同发送者对数据进行了“签名”。例如Alice使用自己的私钥对一段固定的信息加密后发给BobBob利用Alice的公钥解密如果解密结果与固定信息相同那么就能够确认信息的发送者为Alice这个过程就称为数字签名。使用数字签名验证身份时需要确保被验证者的公钥是真实的否则非法用户可能会冒充被验证者与验证者通信。SSL利用PKI提供的机制保证公钥的真实性。数据传输的机密性。SSL加密通道上的数据加解密使用对称密钥算法目前主要支持的算法有DES、3DES、AES等这些算法都可以有效地防止交互数据被破解。对称密钥算法要求解密密钥和加密密钥完全一致。因此利用对称密钥算法加密传输数据之前需要在通信两端部署相同的密钥。消息完整性验证。为了避免网络中传输的数据被非法篡改SSL利用基于MD5或SHA的MAC算法来保证消息的完整性。MAC算法是在密钥参与下的数据摘要算法能将密钥和任意长度的数据转换为固定长度的数据。利用MAC算法验证消息完整性的过程如下图所示。发送者在密钥的参与下利用MAC算法计算出消息的MAC值并将其加在消息之后发送给接收者。接收者利用同样的密钥和MAC算法计算出消息的MAC值并与接收到的MAC值比较。如果二者相同则报文没有改变否则报文在传输过程中被修改接收者将丢弃该报文。MAC算法要求通信双方具有相同的密钥否则MAC值验证将会失败。因此利用MAC算法验证消息完整性之前需要在通信两端部署相同的密钥。利用非对称密钥算法保证密钥本身的安全。利用PKI保证公钥的真实性。8. Socket 编程和 HTTP 协议Socket 编程由于通常情况下Socket连接就是TCP连接因此Socket连接一旦建立通信双方即可开始相互发送数据内容直到双方连接断开。但在实际网络应用中客户端到服务器之间的通信往往需要穿越多个中间节点例如路由器、网关、防火墙等。大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致 Socket 连接断连因此需要通过轮询告诉网络该连接处于活跃状态。HTTP协议HTTP连接使用的是“请求—响应”的方式不仅在请求时需要先建立连接而且需要客户端向服务器发出请求后服务器端才能回复数据。很多情况下需要服务器端主动向客户端推送数据保持客户端与服务器数据的实时与同步。1此时若双方建立的是Socket连接服务器就可以直接将数据传送给客户端2若双方建立的是HTTP连接则服务器需要等到客户端发送一次请求后才能将数据传回给客户端因此客户端定时向服务器端发送连接请求不仅可以保持在线同时也是在“询问”服务器是否有新的数据如果有就将数据传给客户端。