前言
这次梳理的篇幅主要是涉及网络部分,包括HTTP等,对巩固自己的网络知识体系也是很有帮助的,进一步的对性能优化而言也是帮助很大的。
但更多的是抛砖引玉,希望对你们有所帮助。
感谢掘友的鼓励与支持\ud83c\udf39\ud83c\udf39\ud83c\udf39,往期文章都在最后梳理出来了('◡')
接下来就以问题的形式展开梳理\ud83d\udc47
谈一谈HTTP协议优缺点
超文本传输协议,「HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范」。
HTTP 特点
「灵活可扩展」。一个是语法上只规定了基本格式,空格分隔单词,换行分隔字段等。另外一个就是传输形式上不仅可以传输文本,还可以传输图片,视频等任意数据。「请求-应答模式」,通常而言,就是一方发送消息,另外一方要接受消息,或者是做出相应等。「可靠传输」,HTTP是基于TCP/IP,因此把这一特性继承了下来。「无状态」,这个分场景回答即可。
HTTP 缺点
「无状态」,有时候,需要保存信息,比如像购物系统,需要保留下顾客信息等等,另外一方面,有时候,无状态也会减少网络开销,比如类似直播行业这样子等,这个还是分场景来说。「明文传输」,即协议里的报文(主要指的是头部)不使用二进制数据,而是文本形式。这让HTTP的报文信息暴露给了外界,给攻击者带来了便利。「队头阻塞」,当http开启长连接时,共用一个TCP连接,当某个请求时间过长时,其他的请求只能处于阻塞状态,这就是队头阻塞问题。
HTTP/1.0 HTTP1.1 HTTP2.0版本之间的差异
HTTP 0.9
1991年,原型版本,功能简陋,只有一个命令GET,只支持纯文本内容,该版本已过时。
HTTP 1.0
任何格式的内容都可以发送,这使得互联网不仅可以传输文字,还能传输图像、视频、二进制等文件。除了GET命令,还引入了POST命令和HEAD命令。http请求和回应的格式改变,除了数据部分,每次通信都必须包括头信息(HTTP header),用来描述一些元数据。只使用 header 中的 If-Modified-Since 和Expires 作为缓存失效的标准。不支持断点续传,也就是说,每次都会传送全部的页面和数据。通常每台计算机只能绑定一个 IP,所以请求消息中的 URL 并没有传递主机名(hostnam