1.2 基础的结构并不简单
前面介绍的BS结构是最基础的结构,不过即使这种最基础的结构的底层实现也并不简单,因为它需要通过互联网传输数据,而互联网是一个错综复杂的网络,其中包含的节点不计其数,而且每两个节点之间的距离以及连接的路线都是不确定的,数据在传输的过程中还可能会丢失,所以非常复杂。所有问题都有它对治的方法,对于复杂问题的对治方法就是将其分解成多个简单的问题,然后通过解决每个简单问题,最终解决复杂问题。BS结构网络传输的分解方式有两种:一种是标准的OSI参考模型,另一种是TCP/IP参考模型。它们的分层方式及对应关系如图1-3所示。
图1-3 OSI和TCP/IP分层模型及对应关系
OSI参考模型一共分7层,不过它主要用于教学,实际使用中更多的是TCP/IP的4层模型。对于TCP/IP的4层模型可以简单地理解为:
□网络接入层:将需要相互连接的节点接入网络中,从而为数据传输提供条件。
□网际互联层:找到要传输数据的目标节点。
□传输层:实际传输数据。
□应用层:使用接收到的数据。
这种分层模型非常容易理解,就好像我们要在网上买东西,首先要确定自己所在的位置有相应的快递,这就相当于网络接入层,然后需要告诉卖家地址,地址就相当于网际互联层,快递送货相当于传输层,最后我们收到货物之后拆包使用就相当于应用层。
对于广泛使用的东西就需要制定相应的标准,没有规矩不成方圆,如果都按自己的想法去做就乱套了。对一个小作坊来说,做事情可以比较随意,但是一个大型公司就需要有很多制度来规范做事情的流程了。由于网络传输应用非常广泛,所以需要大家都遵守的规矩,不过网络传输中的这些规矩并不是强制性的,所以不叫制度也不叫标准而叫协议,其实TCP/IP参考模型也可以看作一种协议。BS结构中TCP/IP模型中的网络接入层没有相应协议,网际互联层是IP协议,传输层是TCP协议,应用层是HTTP协议。
另外在BS结构中还使用到了DNS协议,而且在HTTP上层还有相关的规范,如Java Web开发中使用的是Servlet标准。
数据传输的本质就是按照晶振震动周期或者其整数倍来传输代表0/1的高低电平,传输过程中最核心就是各种传输协议,对直接连接的硬件来说就是各种总线协议,对网络传输来说就是网络协议,如果将传输的协议弄明白了,那么也就掌握了传输的核心,第2章会介绍BS结构中常用的协议和标准。下面先接着看网站架构的演变过程,开发一套前面介绍的那种BS结构的程序并非难事,特别是使用现在成形的框架来做就更加简单了,只需要写好核心的业务就可以了。不过这种基础架构的网站虽然可以用但并不代表好用,除了用户交互(那是另外一个话题),最重要的就是速度问题。如果打开一个连接的时间都可以喝完一杯咖啡,那样的系统能不能使用就看每个人自己的理解了。不过无论怎么理解,如果不是企业内部办公必须使用的系统,也不是像12306那种具有垄断资源的系统,相信大部分人是不会有那个耐心去等待的。解决速度问题的核心主要就是解决海量数据操作问题和高并发问题,网站复杂的架构就是从这两个问题演变出来的。