Http和Https

1.http

http是什么,是一个protocol,最后一个p,也就是协议。我们知道客户端和服务端是主动被动的关系,我们上网实际上是用客户端去主动发送请求给服务端,服务端被动的响应,也就是说,客户端需要发送请求报文,而服务端响应报文,这其中http规定了请求和响应报文的格式。

格式是什么样?

http规定了请求报文包含启始行,响应报文对应也有起始行,其中请求报文包含的是方法,客户端请求服务器资源执行的某种操作,请求url 资源的路径,http版本。响应报文包含的是http版本,这里可能和请求http版本不一致,状态码以及原因短码比如 404 NOTFOUND。

然后就是请求和响应首部,也就是我们所谓的请求头和响应头,包含请求响应的属性和条件。然后就是主体,get请求不需要主体如果是post需要加body响应也会有对应的响应主体。

那么请求报文是通过网络通讯发送的,也就是分为四个层面,应用层,也就是我们用户在浏览器输入地址之后,浏览器去访问服务器, 带着这样的请求头。

传输层,定义运输数据的方式,在传输层里面选协议,,TCP或者UDP,绝大多数http用TCP(三次握手)定义传输的方式。

非持久连接:服务器对请求逐个处理,处理完一个就关闭连接,一次一个请求,但是这种方式很难满足我们发送请求的需要。一般http默认持久连接

持久连接,服务端返回消息,客户端继续发起下一个请求,如果没有请求了。发送connection:close关闭。

http最初设计的时候,互联网内连接的主机如果都访问一个服务器,如果服务器记录每一个主机信息的话就会崩溃,所以http是无状态的,也就是我们每次访问都需要登录。也就是这种情况下,有了Cookie技术。也就是在请求头里面加上Cookie,然后服务器可以通过Cookie去判断你是否登录。前端网站一般服务器生成jwt,服务器生成jwt然后保存jwt密文,然后jwt存到响应头里面发送给浏览器,浏览器存到Cookie里面,然后浏览器访问的时候如果登录过就不用再次登录了。

2.https

https并不是单独的协议,http是明文传输,不够安全,https是在http基础上用TLS和SSL进行了加密,这样通讯不容易受到拦截和攻击。

https的核心是TLS和SSL,SSL是TLS的前身,既然https是加密那么我们就需要知道对称加密和非对称加密。

对称加密,发送放和接收方用同一种规则算法G去对数据进行加密和解密。

非对称加密,比如服务器里面有公钥和私钥,当我们客户端发送请求的时候,服务器响应的时候把公钥放在响应体里面给客户端,然后客户端用公钥对数据进行加密,然后发送给服务器,服务器通过私钥去解密。这样就是非对称加密。

加密如图,还有一点当我们访问比如bilibili我们可能输入bi1ibi1i那么就是域名错误,可能进入非法网站。https有一个解决办法就是SSL证书,服务器需要去申请SSL证书保全源服务器数据文件,证明自己网站是合法网站。

TCP握手之后建立连接开始TLS握手,这是应用层的协议建立安全通信信道

当客户端第一次给服务器发送请求的时候,在这之前会先去TLP握手,怎么握手呢?首先客户端发送一个Client Hello包含自己能提供的加密套件以及生成的第一随机数还有支持的TLS版本给服务器。

然后服务器响应Server Hello包含选择的TLS版本和选择的加密套件以及服务器生成的第二随机数,然后再次响应把SSL证书给到客户端,然后再次响应把公钥给客户端,然后响应完毕响应。

客户端发送请求携带者公钥加密的数据以及随机生成的第三随机数给服务器,然后服务器和客户端现在都有第一随机数和第二随机数和第三随机数也就是预主密钥然后生成会话密钥。

之后就是对称加密了通过会话密钥。就可以连续发送请求以及服务器响应了。

总结HTTP就像我们在大街上讲话,HTTPS就像在密室里面沟通还能确定对方的身份。

相关推荐
dbdr0901几秒前
Linux 入门到精通,真的不用背命令!零基础小白靠「场景化学习法」,3 个月拿下运维 offer,第二十六天
linux·运维·服务器·网络·python·学习
日更嵌入式的打工仔2 小时前
PHY的自适应协商简析
网络·嵌入式硬件·自适应·phy
XMYX-03 小时前
解决 Apache/WAF SSL 证书链不完整导致的 PKIX path building failed 问题
网络协议·apache·ssl
XXYBMOOO3 小时前
Qt UDP 通信类详解与实现
开发语言·网络·c++·qt·网络协议·ui·udp
Jayyih3 小时前
嵌入式系统学习Day29(tcp)
网络·学习·tcp/ip
dog2503 小时前
乐观并发: TCP 与编程实践
网络·网络协议·tcp/ip
MoloXuanhe3 小时前
[TryHackMe]Wordpress: CVE-2021-29447(wp漏洞利用-SSRF+WpGetShell)
运维·网络·安全·tryhackme·thm
wanhengidc4 小时前
网页版的云手机都有哪些优势?
运维·网络·安全·游戏·智能手机
Hello.Reader4 小时前
一文吃透 Protobuf “Editions” 模式从概念、语法到迁移与实战
linux·服务器·网络·protobuf·editions
長琹5 小时前
AES加密算法详细加密步骤代码实现--身份证号码加解密系统
网络·数据库·人工智能·python·密码学