网络编程之C/S架构

网络编程之C/S架构

一、什么是C/S架构

C指的是client(客户端软件),S指的是server(服务端软件),本章的重点就是学会写一个C/S架构的软件,实现服务端软件与客户端软件基于网络通信。

二、计算机基础知识

作为应用开发程序员,我们开发的软件都是应用软件,而应用软件必循运行于操作系统上,操作系统则运行于硬件上,应用软件是无法直接操作硬件的,应用软件对硬件的操作必须调用操作系统的接口,有操作系统操作硬件。

比如客户端软件想要基于网络发送一条信息给服务端软件,流程如下:

1、客户端软件产生数据,存放于客户端软件的内存中,然后调用接口将自己内存中的数据发送/拷贝给操作系统内存。

2、客户端操作系统收到数据后,按照客户端软件指定的规则(即协议),调用网卡发送数据。

3、通过网络传输数据

4、服务端软件调用系统接口,想要将数据从操作系统内存拷贝到自己的内存中。

5、服务端操作系统接收到指令后,使用与客户端相同的规则(即协议)从网卡接收到数据,然后拷贝给服务端软件。

三、什么是网络

硬件之上安装好操作系统,然后装上软件就可以正常使用了,但此时你也只能自己用。

如何能和其他人一起“玩耍”呢?那就得联网了,即internet。

internet是什么?举个简单的例子:如果把一个人与这个人的有线电话比喻一台计算机,那么其实这两台计算机之间通信与两个人打电话之间通信的原理是一样的。两个人之间想要打电话首先一点是必须接电话线,这就好比是计算机之间的通信首先要有物理链接介质,比如网线、交换机、路由器等网络设备。通信的线路建好之后,只是物理层有了可以承载数据的介质,想要通信,还需要按照某种规则组织好我们的数据,这样对方再接收到数据后就可以按照相同的规则去解析出数据,这里说的规则指的就是:互联网协议。我们需要做的是,让全世界的计算机都学会互联网协议,这样任意一台计算机在发送信息时都严格按照协议规定的格式去组织数据,接收方就可以按照相同的协议解析出结果,这就实现了全世界的计算机都能无障碍通信。

按照功能的不同,人们将互联网协议分为osi七层 或 tcp/ip五层 或 tcp/ip四层,这种分层就好比是学习英语的几个阶段,每个阶段应该掌握专门的技能或者完成特定的任务,比如:第一阶段——学音标,第二阶段——学单词,第三阶段——学语法,第四阶段——写作文......

每一层运行着常见的物理设备(了解就行)

四、什么是TCP/IP?

Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础。

五、TCP/IP的起源

20世纪50年代,正处于冷战时期。当时美国军方为了自己的计算机网络在受到袭击时,即使部分网络被摧毁,其余部分仍能保持通信,便由美国国防部的高级研究计划局(ARPA)建设了一个军用网——“阿帕网”(ARPAnet)。阿帕网于1969年正式启用,当时仅连接了24台计算机,供科学家们进行计算机联网实验用,这就是因特网的前身。

到70年代,ARPAnet已经有了好几十个计算机网络,但是每个网络只能在网络内部的计算机之间互联通信,不同计算机网络之间仍然不能互通。为此,ARPA又设立了新的研究项目,支持学术界和工业界进行有关的研究,研究的主要内容就是想要一种新的方法将不同的计算机局域网互联,形成“互联网”。研究人员称之为“internetwork”,简称“Internet”,这个名称就一直沿用到现在。

1974年,TCP/IP诞生,TCP/IP有一个非常重要的特点,就是开放性,即TCP/IP的规范和Internet的技术都是公开的。目的就是使任何厂家生成的计算机都能相互通信,使Internet成为一个开放的系统,这正是后来Internet得到飞速发展的重要原因。

六、OSI七层模型

美国国防部在开发TCP/IP的同时,还有一些其它大厂商也开发出了自己的网络体系,实际上世界上第一个网络体系结构由IBM公司提出(也是74年,比TCP/IP略早,SNA),以后其它公司也相继提出自己的网络体系结构,如:Digital公司的DNA,美国国防的TCP/IP等,多种网络体系结构并存,其结果是若采用IBM的结构,只能选用IBM的产品,只能与同种结构的网络互联。这就像中国人说中文,美国人说英语,俄罗斯人说俄语一样,同一国家的人沟通没问题,但不同国家之间的人没法通信。

为了解决网络通信中这样不互通的问题,国际标准化组织ISO于1977年成立了一个委员会,在现有网络的基础上,提出了不基于具体机型、操作系统或公司的网络体系结构,称之为开放系统互联模型。

OSI/RM模型(Open System Interconnection / Reference Model)的设计目的是成为一个所有计算机厂商都能实现的开放网络模型,来克服使用众多私有网络模型所带来的困难和低效性。

posted @ 2019-09-06 16:34  Kwan、C  阅读(1964)  评论(0编辑  收藏  举报