1. 首先,不管是服务器程序还是客户端程序,在程序工程上分为两大类:
1)和自己本地通信:就是调用本地宿主机的资源:CPU、存储、内存、传感设备等等
2)和别分远程通信:就是通过网络(有线网络和无线网络)【路】去别人家的主机访问他们的资源!这个网络可以是以太网络、蓝牙网络、红外线网络、射频网络等等...
我们知道使用各个网络有各个网络的协议,我们在蓝牙网络的时候需要遵循蓝牙的协议...在以太网的时候我们要遵循以太网的协议。就是TCP/IP协议
3)而目前影响力最广、网络地域最广、最普及、用户最多的当属以太网构建的全球性互联网!
4)在以太网中我们主要遵循TCP/IP协议簇
5)在TCP/IP五层模型中。从应用层的数据经过传输层的TCP/UDP协议的封装之后,下达到网络层的IP协议,然后继续经过了数据链路层协议,最后通过以太网网口把数据报文给发送出去!接收则反之。这是我们通常在写以太网通信软件的通信路程。
6)我们看到在以太网的传输层,就只要两个协议,TCP/UDP协议。所有上层应用层都需要传输层的TCP和服务器建立连接(三次握手之后),把数据封装成各种各样的协议格式(HTML/XML/简单文本/图片/视频/音频/邮件/等等),交个一个【套接字:socket】的载体,然后给到TCP进行继续封装下去。
应用层 | XML | HTML |
txt | ||
图片 | 视频 | |
音频 | 密文等等 | |
下传 | ||
socket套接字 | ||
传输层 | TCP | UDP |
7)我们卡住一个套接字socket。然后回想一下,好像我们学过的C/C++/C#/java也好,都有一个socket网路编程的概念,然后我们知道socket分为ClientSocket【C】和Serversocket!在此就产生了C/S架构的概念!最开始我们还没那么发达的时候,各自都是孤零零的客户端和服务器,且很多还是嵌入式式产品的客户端。独立运营。再到后来,有了操作系统的技术之后,便是一个平台化技术的开始!!所有的客户端可以全部丢到一个硬件设备【的操作系统】平台上运行,当然服务器程序也是。但是网络编程的客户端还是发socket,但是统一由平台帮忙管理的收发!你只需要去特定的端口提交你的需求和接收你的信息。端口的诞生也是以为操作系统平台化产生的,因为一个硬件设备只有一个真实的以太网端口,但是这个设备上有很多的不用的客户端,怎么办?操作系统OS就为没一个程序(进程)划分各自的虚拟端口!所以你用IP【设备】+端口。就能找到特定的进程通信!!这是平台化的第一层。客户端不需要自己去制造硬件设备!
8)再接着,有些客户端不断的壮大,自己的用户越来越多。从流量经济和分流的角度,它可以分发给各个代理商来利用流量经济,从而从中获取利益。浏览器这个有专门学术名称的客户端(还是socket客户端)就诞生了!浏览器把自己的搭建成一个C/S平台。让大家把自己的想法和业务功能以一个更加简单的方式【HTML】直接丢到自己的平台上,就能完成和单独写socket客户端一样的功能!这是平台化的第二层。客户不需要自己实现socket客户端程序了!只要你的内容遵循行业协会的标准即可:HTTP。
9)另外一边,服务器那端也是,Apache这个服务器厂商也在服务端那用ServerSocket搭建了一个平台:Tomcat。也让开发者们不需要亲自写服务器端的socket程序也能和自己的客户端通信服!又节省了成本!!只要你写好一个叫做servlet的东西,并遵循其标准丢到这个平台上来!这样一个Tomcat平台就的实现很多个服务器服务了!Tomcat也即被称为servlet的容器!!
8)和9)的技术结合起来就是今天的B/S架构。B是Browser浏览器的意思。S就是server的意思!!html*Browser/Tomcat*servlet
B/S | |||
应用层 | html*Browser | HTTP | Tomcat*servlet |
ClientSocket | socket | ServerSocket | |
C/S | |||
传输层 | TCP/IP |
10)我们看下如下浏览器内核webkit的技术原理
11)我们看下如下Tomcat内核的技术原理
12)我们看到以上浏览器内核和Tomcat都有socket和TCP的身影!都是需要建立TCP连接和socket收发管理。
13)如今平台技术发展越来越好。比如,再由微信平台承载的小程序、公众号和天猫平台承载的各个电商的产品售卖服务!平台化技术能发展得越来越好不轻易到的原因是:共赢模式,我让大家都赚钱了,我不可能倒,以为大家的力量不可能让我倒下的!这就是为什么每个公司做到一定程度之后,都想往平台化发展的原因!