聊到计算机就不得不提到HTTP和HTTPS了,每当你打开浏览器搜索一个东西时,上面导航栏总会出现http或者https,这个时候你就有疑问了,为什么有的是http,有的是https呢,它们有什么用,又有什么区别呢?
好的,这样我们就开始带着问题找答案啦
首先我们先看HTTP
我们根据计算机网络TCP/IP 四层模型中可以看出,http协议它是属于应用层协议,我们知道上层要用到下层提供的服务,它的下一层是传输层。这时候我们就该想了,http协议它会用哪个传输层协议来传输呢,(个人理解)http协议全称超文本传输协议,我们如果在网络中传输丢了其中的一部分数据那肯定会有影响的,所以http协议就是用的有连接、可靠的运输层协议(TCP协议)在网络中通信的,并且默认的端口号为80。
下面简单的讲解一下HTTP协议的通信过程
由于HTTP默认的端口为80
服务器会在http默认的80端口等待客户的请求,用户输入url,通过dns解析查找到对应服务器的ip
这是浏览器会发送一个到服务器的TCP连接,然后服务器接收到TCP连接并建立起连接(TCP三次握手连接省略了,感兴趣的同学自行查阅相关资料),然后浏览器和服务器就可以交换HTTP信息了,最后再关闭TCP连接。
这里有一个点就是HTTP没有进行加密是明文传输的
然后我们看HTTPS
HTTPS协议是一种特殊的HTTP协议,也是用的TCP作为底层运输协议,并且额外使用 SSL/TLS 协议用作加密和安全认证,默认的端口号为443。
其实看到这里你也能发现HTTP和HTTPS之间的区别了,对那就是HTTPS用了SSL/TLS协议进行额外的加密
我们知道现如今我们离不开互联网,各种信息在网络上传播,要是被有意之人恶意窃取了那多危险啊,所有HTTPS就有效的能够避免这种情况发生。
HTTPS的核心--SSL/TLS
HTTPS之所以能达到如此高的安全性,多亏了SSL/TLS和TCP,对通信进行加密,解决了HTTP数据透明明文传输的问题。
SSL和TLS没有太大的区别(想了解的同学可以自行查询资料),这里我们主要讲SSL/TLS的工作原理
SSL/TLS的工作原理(看JavaGuide讲的很不错)
非对称加密
非对称加密是SSL/TLS的核心要素,非对称加密顾名思义就是加密和解密用的是不同的密钥,在非对称加密中公钥和私钥会用比较复杂的数学机制生成
对称加密
对称加密顾名思义就是通信双方用的同一把密钥。
由于对称加密生成密钥的代价远比非对称加密生成密钥的代价小,考虑到效率问题SSL/TLS实际对消息的加密是使用的对称加密。这个时候就有同学想了,那对称加密的密钥在传输中是不是很容易被破解呀,不要急继续往下看。
在通信前双方需要商量一个用于对称加密的密钥。但我们知道在网络通信的信道是不安全的,任何人都能看到传输报文,那么密钥的交换肯定就不能直接在网络信道中传输了。这个时候,使用非对称加密,对对称加密的密钥进行加密,保证密钥的安全性,这样只需一次非对称加密,交换通信双方的对称加密的密钥,在之后的传输中对消息进行对称加密,这样就能保证传输消息的保密了。
HTTP协议的优点
扩展性好,速度快
HTTPS协议的优点
保密性好
总结
端口号:HTTP 默认是 80,HTTPS 默认是 443。
URL 前缀:HTTP 的 URL 前缀是 http://,HTTPS 的 URL 前缀是 https://。
安全性和资源消耗:HTTP是在TCP上明文传输的,而HTTPS是根据SSL/TLC对内容进行加密,加密采用对称机密,但对称加密的密钥采用非对称加密。所以HTTP没有HTTPS安全性高,但HTTPS比HTTP消耗更多的服务器资源。
注
http3.0是基于UDP的QUIC协议来进行网络间的通信的