计算机网络概论
利用蟹堡王的商业帝国来通俗了解:
- 网络结构;
- 建立对网络协议分层的认知以及常见协议基本原理;
- 分析HTTP1、2、3的关系和基本原理;
- CDN运行的基本原理;
- 网络安全基本原则和实现
三、Web中的网络
(1)HTTP协议基本结构
以这个HTTP协议为示例,红色区域的为请求,蓝色区域为响应。
请求的第一行为起始行,包含了三个要素:请求的方法、资源路径和HTTP的版本,紧随其后的是请求头部,每一行代表一个头部,头部使用冒号分隔,左边为头部的名称,右边为头部的值。
响应的第一行为响应状态行,也包含了三个要素:HTTP的版本、状态码和状态信息,其中状态信息可以自定义。同样,后面的是响应头部,与请求中的头部类似,不同的是这里的响应头部里包含了正文。
(2)HTTPL连接模型
与TCP相比,在我们看来HTTP的报文更加容易理解,但相对的,对于计算机来讲可能就没那么好理解。
而HTTP协议的特性也引发了一些问题,HTTP协议使用的模型是典型的请求——响应模型,也就是说,当客户端发起第一个请求后,需要等待服务端先返回第一个请求的完整响应,客户端才能发起第二个请求,这种方式的网络利用率太低。这种模型导致的另一个问题是无法在一条连接上多路复用,在一个完整请求中间插入另一个请求的内容会导致HTTP无法分辨这部分内容是来自哪个请求,请求的头部和响应头部都有很多的重复,这些重复会重复发送,增加报文的体积。
在HTTP 1.1 出现无法多路复用的问题后,HTTP 2 采用了新的方式:将多个HTTP请求拆分到帧中,每个帧可以携带来自不同HTTP协议的请求,这种方式可以标识每个数据包属于哪个请求。 而HTTP 2 也不再是只有请求、响应两种类型,多了很多类型,比如:Magic、DATA、HEADERS、WINDOW_UPDATE等。HTTP 2 除了解决无法多路复用和队头堵塞的问题以外,还能调整响应传输的优先级、头部压缩和Server Push,这些功能都能通过不同的帧来实现。
HTTP 3 的出现则是因为HTTP 2 速度还不够快,也无法解决TCP上的队头堵塞问题。 HTTP 3 : QUIC (Quick UDP Internet Connection)。QUIC将TLS作为自身的一部分,解决了原先TCP将TLS需要各自握手的问题,又吸取了HTTP 2 中流的概念。而QUIC可以为除HTTP协议以外的应用层协议提供支持。