之前在写https的时候,我突然联想到OSI模型的知识。其实整个通信的基础和逻辑就是OSI模型。所以,在这里想结合通讯的实践来进一步深刻理解OSI模型。
首先一个大框架是,在客户端和服务器两端都是遵循OSI模型的逻辑进行设计。意味着两边的数据链路是对称的。
OSI模型的七层,在实际的TCP/IP中只有四层。至于为啥四层,是个好问题,但是我不在这里展开。留作下一篇的主题。五层包括应用层/传输层/网络层/数据链路层。
Https是基于TCP,在应用层添加了TSL/SSL用来数据加密。我们经常所的https的三次握手是在传输层进行的,证书的校验是在应用层进行的。注意,并不是说在三次握手的时候,客户端的传输层直接发消息给了服务器端。而是都需要经历从应用层发起请求,然后,再逐层往下,一直到数据通过物理的光纤传递到服务器端的光纤。然后,服务器端再从最底层的物理层再一层层往上直至到应用层,一层层剥开来自客户端的请求。
数据的流向如下图所示:
由于本人比较懒,对应的服务器端就没画了,大家自行补脑上。
在这个链路里,数据都经历了哪些处理呢?
大家可以理解比如发一封信给对方,信封上要写收件地址是在哪个国家哪个城市甚至家门牌号。所以,从应用层来的请求,也是要经历这样的一个过程。当服务器端物理层拿到这封信的时候,他也是一层层看地址,先分开是哪个国家,再哪个城市,一层层地投递,直至到这个人的家里。
服务器做的就是逆着客户端对数据再做个反向操作。
下图是这个数据链路经历的处理过程:
同样也是懒,服务器那端,我没有画了,大家自行脑补吧。另外,我这里写的是http的,实际上https就是http加了了TSL/SSL。整个数据链路和处理还是一样的哈。