网络协议

ok这是一篇网络相关的知识点普及。
首先我们的网络的话分成好几层 ,分别是应用层 传输层 网络层 数据链路层 物理层,
今天先来讲讲应用层和传输层把。

应用层的话就是就是最上面的一层,也就是跟用户打交道的一层。
那我们的http https 就是这一层也是我们前端最熟悉的协议。
http和https 最大的区别就是一个是https = http +tls,也可以说是包含关系,也可以说就多出一个tls,tls也是最安全的协议类型。因为用了tls 进行加密保护通讯,防止中间人攻击,他的加密用到的算法跟前端的一些加密算法很像, 还有重合的算法 比如RSA AES等 ,以后的网站的话 还是最推荐使用https协议的。

应用层和传输层的融合使用

HTTP的版本很多,就是一个漫长的网络协议进化史。最久远的我们就先不看了,就从1.1版本开始讲吧。

HTTP 1.1

一开始 http1,1 中因为协议限制 所以只能是串行单一的并且要严格按照顺序执行的,
他的设定就要求所有的i请求都要进行顺序的请求和响应,假设有a b c 三个请求按顺序发出,服务器接受到之后处理完后,如果b c 的响应结果优于a早早的处理完成,也是必须要等待a处理结束,才能按照顺序返回响应。
就是因为这个原因,所以会造成一个问题就是对头堵塞的问题,
也就是当其他的请求都请求完了还是要卡在那里等到头部请求完成才能一块返回。继而造成了堵塞。
虽然http1.1 在chrome中可以支持最多6个tcp链接,治标不治本,还是依然有这个问题的存在。

HTTP 2

所以在http2 的时候对这个问题做出了改进,就是推出了多路复用来解决之前的应用层对头堵塞问题,多路复用实现了逻辑上的并行,可以让请求可以交错的去请求,并乱序返回响应,这样就没有了非要去按照顺序造成的堵塞问题了,彻底解决了这个http1.1版本中的问题。

当然HTTP2也不是没有问题,它里面会一个传输层对头堵塞的问题,因为http2是基于tcp的。
tcp 的话说到底还是一个单字节流协议,虽然http2 中做了一些改进,实现了“并行”,但是还是不能改变tcp底层的原则就是需要数据按序到达,他这个跟http1.1的规则很像,也只有因为如此严谨可靠,所以才能保证数据的交互安全。
但是如果一旦出现中间的数据包丢失的情况,那tcp就必然会去重新发送请求去拿到丢失的包,这样的话后面的包就需要排队等候,就造成了传输层对头堵塞的问题。

当然还有一种不可靠会掉包,但是速度很快的传输层协议udp,
这个一般用于视频流、直播等这种场景,就算中间丢包好像也没什么关系,但是速度很快。

HTTP 3

http3 是彻底解决了上面遗留的问题。
因为它使用的是udp,对就是那个不怎么靠谱的udp,
在http3中作为传输底层,自然就不会出现tcp出现的问题了对吧。
当然udp 也有很多缺陷,那http3 的话对这些做了弥补,udp 有一个好处就是真正实现了每个流的独立传输,就是不需要在进行串行和逻辑形式上的并行,而是真正的可以进行真正的并行操作。可想而知也会很快。
但是这还是一个未来式,还没有规模使用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容