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就像在密室里面沟通还能确定对方的身份。

相关推荐
就不爱吃大米饭20 分钟前
Web3实操:2025年DePIN 挂机项目要点分享
网络
国科安芯26 分钟前
AS32S601ZIT2型MCU:基于RISC-V架构的抗辐照设计与试验评估
网络·单片机·嵌入式硬件·fpga开发·架构·硬件架构·risc-v
FreeBuf_2 小时前
Zloader木马再次升级:通过DNS隧道和WebSocket C2实现更隐蔽的攻击
websocket·网络协议·php
JanelSirry2 小时前
VMware+RockyLinux+ikuai+docker+cri-docker+k8s+calico BGP网络 自用 实践笔记(底稿)
网络·docker·kubernetes
chuxinweihui3 小时前
Socket编程UDP
linux·网络·网络协议·udp·通信
北京耐用通信3 小时前
神秘魔法?耐达讯自动化Modbus TCP 转 Profibus 如何为光伏逆变器编织通信“天网”
网络·人工智能·网络协议·网络安全·自动化·信息与通信
Ronin3053 小时前
【Linux网络】Socket编程:UDP网络编程实现Echo Server
linux·网络·udp·网络通信·socket编程
游戏开发爱好者84 小时前
TCP 抓包分析:tcp抓包工具、 iOS/HTTPS 流量解析全流程
网络协议·tcp/ip·ios·小程序·https·uni-app·iphone
在路上看风景4 小时前
1.9 IP地址和Mac地址
网络
爱奥尼欧4 小时前
【Linux】网络部分——网络基础(协议与网络传输)
linux·网络·arm开发