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

相关推荐
xiaoye-duck3 小时前
《Linux 网络编程》深入理解 IP 协议(二):网段划分、私有 IP 与 NAT 地址转换
linux·网络·ip
广州宏帝箱包5 小时前
出口箱包的包装标准:防潮、防摔、运输安全的设计要点
大数据·网络
彧azz5 小时前
Linux 网络编程学习总结
linux·网络·笔记·学习·面试
碳基修炼5 小时前
排查记:本地 devServer 是 http,浏览器却把 302 重定向升级成了 https
前端·http
updayday8546 小时前
离职域账号状态变更与Ping64操作记录核对
大数据·网络·数据库·安全·智能路由器
安易算力7 小时前
PUE优化工程实践:从1.5到1.2的制冷架构与气流组织改造路径
网络·python·容器·架构·kubernetes
Ivanqhz8 小时前
数据搬运是性能关键
java·服务器·网络·人工智能·深度学习
Julien20048 小时前
自动挂载网络附加存储
linux·服务器·网络
K成长日志8 小时前
BLE链路层-隐私保护
网络·物联网·蓝牙·iot·ble
K成长日志8 小时前
BLE链路层-Feature Support
网络·嵌入式·无线通信·蓝牙·iot·ble