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的密文。

使

相关文章
|
11天前
|
算法 网络协议 安全
HTTP 原理和面试题
HTTP 原理和面试题
|
2天前
|
安全 网络协议 应用服务中间件
一文读懂HTTPS⭐揭秘加密传输背后的原理与Nginx配置攻略
一文读懂HTTPS⭐揭秘加密传输背后的原理与Nginx配置攻略
|
3天前
|
缓存 安全 算法
网络原理 HTTP _ HTTPS
网络原理 HTTP _ HTTPS
10 0
|
12天前
|
安全 网络协议 算法
【计算机网络】http协议的原理与应用,https是如何保证安全传输的
【计算机网络】http协议的原理与应用,https是如何保证安全传输的
|
13天前
|
网络协议 安全 算法
HTTP协议与HTTPS协议
HTTP协议与HTTPS协议
|
13天前
|
数据采集 缓存 网络协议
静态代理IP是否支持HTTP和HTTPS?
静态代理IP支持HTTP、HTTPS、FTP、Socks5等协议,HTTP协议因其简单、灵活而常用,通常比HTTPS速度快,因无需加密处理。HTTP代理比SOCKS5代理通常更快,因为HTTP专注于HTTP请求,而SOCKS5处理多种网络流量。静态HTTP代理适合浏览器和爬虫,SOCKS5代理支持更多协议,如TCP、UDP。选择取决于应用场景和需求。
|
14天前
|
网络协议 安全
【专栏】`curl`是广泛用于网络编程和自动化脚本的命令行工具,支持HTTP、HTTPS等协议
【4月更文挑战第28天】`curl`是广泛用于网络编程和自动化脚本的命令行工具,支持HTTP、HTTPS等协议。在处理大文件或慢速服务器时,设置超时参数至关重要。本文介绍了`curl`的超时参数,如`-m`(最大操作时间)、`-c`(连接超时)、`--dns-timeout`(DNS解析超时)和`-t`(时间条件)。通过示例展示了如何设置这些超时,并提到了一些高级技巧和注意事项,如错误处理和带宽限制。合理设置超时能提高效率和可靠性,对编写健壮的自动化脚本非常有用。
|
16天前
|
安全 网络协议 算法
秒懂HTTPS接口(原理篇)
【4月更文挑战第24天】秒懂HTTPS接口(原理篇)
34 4
秒懂HTTPS接口(原理篇)
|
18天前
|
安全 Go
解决https页面加载http资源报错
请注意,混合内容可能导致安全性问题,因此在使用上述方法时要小心。最好的方式是尽量减少或完全消除混合内容,以确保页面的安全性。
22 0
|
23天前
|
网络协议 网络安全 数据安全/隐私保护
http和https的区别!
http和https的区别!