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

相关推荐
Tao____1 分钟前
如何对接Modbus-tcp协议(使用Thinlinks物联网平台)
java·物联网·网络协议·tcp/ip·modbus
乾元8 分钟前
如何把 CCIE / HCIE 的实验案例改造成 AI 驱动的工程项目——从“实验室能力”到“可交付系统”的完整迁移路径
大数据·运维·网络·人工智能·深度学习·安全·机器学习
liulilittle11 分钟前
俄罗斯访问欧洲国际线路优化
开发语言·网络·信息与通信·ip·通信·俄罗斯·莫斯科
菜择贰27 分钟前
计算机网络课设
网络·计算机网络·智能路由器
weixin79893765432...29 分钟前
深入浅出 WebSocket 协议
websocket·http·socket·sse
浅安的邂逅44 分钟前
ubuntu 18.04及以上版本配置静态IP方法
linux·运维·网络·ubuntu·ip设置
阿巴~阿巴~1 小时前
从钓鱼到高性能服务器:深入解析操作系统五大 I/O 模型
运维·服务器·网络·系统调用·五种i/o模型
callJJ1 小时前
WebSocket 两种实现方式对比与入门
java·python·websocket·网络协议·stomp
sunfove10 小时前
光网络的立交桥:光开关 (Optical Switch) 原理与主流技术解析
网络
Kevin Wang72713 小时前
欧拉系统服务部署注意事项
网络·windows