一、软件开发的架构
C/S架构:
客户端与服务器端架构(Client - Server),这种架构是从用户层面(也可以是物理层面)来划分的。这里的客户端一般泛指客户端应用程序 EXE,程序需要先安装,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖较大
B/S架构:
浏览器端与服务器端架构(Browser - Server),这种架构也是从用户层面来划分的。Browser 浏览器,其实也是一种 Client 客户端,只是这个客户端不需要去安装什么应用程序,只需在浏览器上通过 HTTP 请求服务器端相关的资源(网页资源),客户端 Browser 浏览器就能进行增删改查。
服务端需要遵循的原则:
1)服务端与客户端都需要有唯一的地址,但是服务端的地址必须固定
2)对外一直提供服务,稳定运行
3)服务端应该支持并发
二、网络基础
网络建立的目的是为了数据之间进行交互(或者说通信)
如何实现通信:
1)建立底层的物理连接介质
2)有一套统一的通信标准,称之为互联网协议
互联网协议按照功能不同分为 OSI 七层或 TCP/IP 五层或 TCP/IP 四层
每层运行常见物理设备:
物理层功能是基于电器特性发送高低电平(电信号),高电平为1,低电平为0。单纯的电信号 0 和 1 没有任何意义,必须规定电信号多少位一组,每组什么意思,数据链路层的功能就是定义了电信号的分组方式。早起的时候各个公司有自己的分组方式,后来形成了统一的标准,即以太网协议。以太网协议规定,一组电信号构成一个数据包,叫做 “帧”,还规定但凡接入互联网的计算机,必须有一块网卡,网卡在出厂时就被烧制好一个世界唯一的 MAC 地址,有了 MAC 地址,同一网络内的两台主机就可以进行通信了(一台主机通过 ARP 协议获取另外一台主机的 MAC 地址),以太网协议采用最原始的广播的方式进行通信,通俗的说,计算机的通信基本靠吼。
有了以太网协议,MAC 地址以及广播的发送方式,世界上的计算机就可以彼此通信了,问题是世界范围的互联网是由一个个彼此隔离的小的局域网组成的,那么如果所有的通信都采用以太网的广播方式,那么一台机器发送的包全世界都会收到,这就不仅仅是效率低的问题了,这会是一种灾难。
一个大的网络有一个个小的彼此隔离的局域网组成,以太网只能在一个局域网内发送,一个局域网是一个广播域,跨广播域的通信只能通过路由转发,这就有了网络层,网络层功能是引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址。基于网络层的常用协议有 IP 协议、ARP协议等。
网络层的 IP 帮我们区分子网,以太网层的 MAC 地址帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启QQ,暴风影音等多个应用程序,那么通过 IP 和 MAC 地址找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口,端口即应用程序与网卡关联的编号。因而传输层功能就是建立端口到端口的通信,基于网络层的协议有TCP、UDP协议。
TCP 协议可以为各种各样的程序传递数据,比如 Email、WWW、FTP 等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了 “应用层”。应用层功能就是规定应用程序的数据格式。