HTTP/HTTPS底层原理揭秘

简介: HTTP/HTTPS底层原理揭秘

这篇文章不详细讲解HTTP协议


基本的HTTP大家应该熟悉,这里就不额外进行详细的讲解了。


计算及网络分层


  1. 1.应用层

  2. 2.传输层

  3. 3.网络层

  4. 4.数据链路层

  5. 5.物理层

HTTP

  1. 1.http(超文本传输协议) ,是用于应用层,用来进行服务端和客户端进行文件传输的协议。

  2. 2.HTTP是无连接,无状态的一种协议,常用的HTTP1.0,常用端口为80端口,其是以TCP为基础进行的传输。

  3. 3.在HTTP的所有传输过程中,你的数据包全部是明文显示

常见的HTTP方法


1.GET 请求指定的页面信息,并返回实体主体。


2.HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头


3.POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。

POST 请求可能会导致新的资源的建立和/或已有资源的修改。


4.PUT 从客户端向服务器传送的数据取代指定的文档的内容。


5..DELETE 请求服务器删除指定的页面。


6.CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。


7.OPTIONS 允许客户端查看服务器的性能。


8.TRACE 回显服务器收到的请求,主要用于测试或诊断。


9.PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新 。


HTTP1.1


1.缓存处理, 在header中加入了if-modified-Since,Expires来作为缓存判断的标准,服务器可以识别发起请求的资源有没有进行变化,如果没有变化,则可直接使用上次请求获得的资源


2.长连接,在HTTP1.1中支持长连接和请求的流水线(pipling)。在一个TCP链接上可以传送多个HTTP请求和相应, 减少了建立和关闭连接的消耗和延迟。HTTP中是默认开启KEEP-ALIVE。减少了资源消耗。


4.带宽优化和网络链接使用


5.HOST头处理


HTTP2.0


1.新的二进制格式(Binary Format), HTTP1.1的解析是基于文本。基本文本协议的格式解析存在天然缺陷,考虑到场景的增多,HTTP2.0采用二进制格式。


2.多路复用(Multiplexing),连接共享,每一个request都是用作链接共享机制的。一个request对应一个id,这样一个连接上可以有多个request, 每个连接的requerst可以随机混杂在一起,接受方可以根据request的id将requerst在归属到各自不同的服务端请求里面。


3.header压缩 使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields 表。避免了重复header的传输,又减少了需要传输的大小


4.服务器推送 Server push 功能


HTTP3.0

1.解决队头阻塞问题 , HTTP2.0协议的多路复用机制解决了HTTP层的队头阻塞问题,但是在TCP层仍然存在队头阻塞问题。CP协议在收到数据包之后,这部分数据可能是乱序到达的,但是TCP必须将所有数据收集排序整合后给上层使用,如果其中某个包丢失了,就必须等待重传,从而出现某个丢包数据阻塞整个连接的数据使用。


QUIC协议是基于UDP协议实现的,在一条链接上可以有多个流,流与流之间是互不影响的,当一个流出现丢包影响范围非常小,从而解决队头阻塞问题。


2.0RTT 建链, 衡量网络建链的常用指标是RTT Round-Trip Time,也就是数据包一来一回的时间消耗。RTT包括三部分:往返传播时延、网络设备内排队时延、应用程序数据处理时延。一般来说HTTPS协议要建立完整链接包括:TCP握手和TLS握手,总计需要至少2-3个RTT,普通的HTTP协议也需要至少1个RTT才可以完成握手。QUIC协议可以分为首次连接和非首次连接


3.前向纠错, QUIC每发送一组数据就对这组数据进行异或运算,并将结果作为一个FEC包发送出去,接收方收到这一组数据后根据数据包和FEC包即可进行校验和纠错。


4.连接迁移 TCP协议使用五元组来表示一条唯一的连接,当我们从4G环境切换到wifi环境时,手机的IP地址就会发生变化,这时必须创建新的TCP连接才能继续传输数据。QUIC协议基于UDP实现摒弃了五元组的概念,使用64位的随机数作为连接的ID,并使用该ID表示连接。基于QUIC协议之下,我们在日常wifi和4G切换时,或者不同基站之间切换都不会重连,从而提高业务层的体验。


UDP优点


1.基于TCP开发的设备和协议非常多,兼容困难


2.TCP协议栈是Linux内部的重要部分,修改和升级成本很大


3.UDP本身是无连接的、没有建链和拆链成本


4.UDP的数据包无队头阻塞问题


5.UDP改造成本小


QUIC其实是Quick UDP Internet Connections的缩写,直译为快速UDP互联网连接。

20200924154322773.png

数据包在整个网络的移动


当你在浏览器输入了网址之后,通过DNS获取·了目标的IP地址,然后TCP建立连接,然后发送http请求,在数据链路层,数据包就会沿着如下图的顺序进入网络,通过一个一个的节点传送到目的地。


1.HTTP使用的是80端口


2.HTTPS使用的是443端口


在80端口路线的所有节点上,都可以使用代理进行拦截,修改,查看。所以你的个人信息在HTTP中都是存在安全隐患的。


HTTPS通过443端口连接沟通加密算法。

20200812110940452.png

HTTPS


1.HTTPS协议需要到CA申请证书,一般免费证书很少,需要缴费


2.HTTP协议运行在TCP之上,所有的传输都是铭文,HTTPS运行在SSL/TLS之上, SSL/TLS运行在TCP之上,所有的传输内容都是经过加密的


3.HTTPS使用443 端口, HTTP使用80端口


4.HTTPS可以有效的防止运行商劫持,解决了防劫持的一个大问题


流程:


当使用HTTPS发送数据信息的时候,发送端使用签名对内容进行摘要算法得出摘要,发送(原本数据+摘要+算法)发送给接收端


浏览器向443端口请求加密算法- 传输加密算法->保证安全,不被拦截


浏览器向80端口发送请求


加密算法decode(密文)

20200812135812691.png

加密的过程:私钥 ->数据->加密->密文->公钥->原文


浏览器持有公钥,使用公钥加密->密文->使用私钥解密->原文


公钥加密,私钥解密


非对称加密建立连接,对称机密进行通信


问题1:如果使用公钥伪造数据呢


用私钥加密,中间人用公钥解密,可以查看原文内容,但是此时它无法使用公钥进行加密还原,因为他无法获得私钥。此时就会出现一个问题,不能篡改但是可以进行查看


问题2: 第三者在中间拦截你的公钥然后再用自己的私钥进行解密,加密,同样内容会被篡改


中间者第三人可以生成一组公钥和私钥。他先使用公钥解密然后查看内容,然后将原文用自己的私钥进行加密,再传递给服务端。


CA第三方证书验证


有了上面的问题2,第三方CA可以使用自己的私钥生成出->CA公钥。浏览器保存CA的公钥,服务器把服务器端的公钥提交给CA。


CA.私钥(服务器端公钥) = 密文


浏览器使用CA.公钥进行解密,这样浏览器可以查看密文内容。CA的公钥时不进行传输,整个网络上的人就无法解密CA的密文。

使

相关文章
|
6月前
|
XML JSON API
识别这些API接口定义(http,https,api,RPC,webservice,Restful api ,OpenAPI)
本内容介绍了API相关的术语分类,包括传输协议(HTTP/HTTPS)、接口风格(RESTful、WebService、RPC)及开放程度(API、OpenAPI),帮助理解各类API的特点与应用场景。
|
6月前
|
Android开发 Kotlin
|
12月前
|
安全 算法 网络协议
解析:HTTPS通过SSL/TLS证书加密的原理与逻辑
HTTPS通过SSL/TLS证书加密,结合对称与非对称加密及数字证书验证实现安全通信。首先,服务器发送含公钥的数字证书,客户端验证其合法性后生成随机数并用公钥加密发送给服务器,双方据此生成相同的对称密钥。后续通信使用对称加密确保高效性和安全性。同时,数字证书验证服务器身份,防止中间人攻击;哈希算法和数字签名确保数据完整性,防止篡改。整个流程保障了身份认证、数据加密和完整性保护。
|
8月前
|
Web App开发 网络协议 应用服务中间件
HTTP2.0 从原理到实践,保证把你治得服服帖帖!
HTTP/2 是 HTTP/1.1 的重要升级,通过多路复用、头部压缩、服务器推送等特性显著提升性能与效率。本文详细解析了 HTTP/2 的优势、配置方法及实际应用,涵盖 Nginx/Apache/IIS 配置、curl 测试工具使用,并对比 HTTP/1.1 指出其优化点。同时提醒需注意 HTTPS 支持、客户端兼容性等问题,助你高效掌握并运用 HTTP/2 技术。
907 5
HTTP2.0 从原理到实践,保证把你治得服服帖帖!
|
8月前
|
安全 网络安全 数据安全/隐私保护
网页安全演进:HTTP、HTTPS与HSTS
这整个进程实质上是网页安全由“裸奔”到“穿衣”再到“绑带”的演变史。它保障了数据的机密性和完整性,降低了中间人攻击的风险,最终实现了更自由、更安全的网络环境。但别忘了,技术永远在发展,网络安全的赛跑也永无终点。*ENDPOINT*
526 11
|
9月前
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
248 18
|
9月前
|
JSON 安全 网络协议
HTTP/HTTPS协议(请求响应模型、状态码)
本文简要介绍了HTTP与HTTPS协议的基础知识。HTTP是一种无状态的超文本传输协议,基于TCP/IP,常用80端口,通过请求-响应模型实现客户端与服务器间的通信;HTTPS为HTTP的安全版本,基于SSL/TLS加密技术,使用443端口,确保数据传输的安全性。文中还详细描述了HTTP请求方法(如GET、POST)、请求与响应头字段、状态码分类及意义,并对比了两者在请求-响应模型中的安全性差异。
857 20
|
9月前
|
安全 网络协议 算法
HTTP/HTTPS与SOCKS5协议在隧道代理中的兼容性设计解析
本文系统探讨了构建企业级双协议隧道代理系统的挑战与实现。首先对比HTTP/HTTPS和SOCKS5协议特性,分析其在工作模型、连接管理和加密方式上的差异。接着提出兼容性架构设计,包括双协议接入层与统一隧道内核,通过协议识别模块和分层设计实现高效转换。关键技术部分深入解析协议转换引擎、连接管理策略及加密传输方案,并从性能优化、安全增强到典型应用场景全面展开。最后指出未来发展趋势将更高效、安全与智能。
364 1
|
10月前
|
安全 网络安全 数据安全/隐私保护
HTTP 与 HTTPS 协议及 SSL 证书解析-http和https到底有什么区别?-优雅草卓伊凡
HTTP 与 HTTPS 协议及 SSL 证书解析-http和https到底有什么区别?-优雅草卓伊凡
524 3
|
网络协议 安全 网络安全
HTTP与HTTPS协议入门
HTTP协议是互联网的基石,HTTPS则是其安全版本。HTTP基于TCP/IP协议,属于应用层协议,不涉及数据包传输细节,主要规定客户端与服务器的通信格式,默认端口为80。
521 25
HTTP与HTTPS协议入门