c/s(客户机/服务器)有三个主要部件:数据库服务器、客户应用程序和网络。服务器负责有效地管理系统的资源,其任务集中于:
1数据库安全性的要求
2数据库访问并发性的控制
3数据库前端的客户应用程序的全局数据完整性规则
4数据库的备份与恢复
客户端应用程序的的主要任务是:
1提供用户与数据库交互的界面
2向数据库服务器提交用户请求并接收来自数据库服务器的信息
3利用客户应用程序对存在于客户端的数据执行应用逻辑要求
4网络通信软件的主要作用是,完成数据库服务器和客户应用程序之间的数据传输。
三层C/S结构是将应用功能分成表示层、功能层和数据层三部分。
解决方案是:对这三层进行明确分割,并在逻辑上使其独立。
在三层C/S中, 表示层 是应用的用户接口部分,它担负着用户与应用间的对话功能。它用于检查用户从键盘等输入的数据,显示应用输出的数据。为使用户能直观地进行 *** 作,一般要使用图形用户接口 (GUI), *** 作简单、易学易用。在变更用户接口时,只需改写显示控制和数据检查程序,而不影响其他两层。检查的内容也只限于数据的形式和值的范围,不包括有关业务本身的处理逻辑。
功能层 相当于应用的本体,它是将具体的业务处理逻辑地编入程序中。表示层和功能层之间的数据交往要尽可能简洁。
数据层 就是DBMS,负责管理对数据库数据的读写。DBMS必须能迅速执行大量数据的更新和检索。现在的主流是关系数据库管理系统 (RDBMS)。因此一般从功能层传送到数据层的要求大都使用SQL语言。
在三层或N层C/S结构中,中间件 (Middleware) 是最重要的部件。所谓中间件是一个用API定义的软件层,是具有强大通信能力和良好可扩展性的分布式软件管理框架。它的功能是在客户机和服务器或者服务器和服务器之间传送数据,实现客户机群和服务器群之间的通信。其工作流程是:在客户机里的应用程序需要驻留网络上某个服务器的数据或服务时,搜索此数据的C/S应用程序需访问中间件系统。该系统将查找数据源或服务,并在发送应用程序请求后重新打包响应,将其传送回应用程序。随着网络计算模式的发展,中间件日益成为软件领域的新的热点。中间件在整个分布式系统中起数据总线的作用,各种异构系统通过中间件有机地结合成一个整体。每个C/S环境,从最小的LAN环境到超级网络环境,都使用某种形式的中间件。无论客户机何时给服务器发送请求,也无论它何时应用存取数据库文件,都有某种形式的中间件传递C/S链路,用以消除通信协议、数据库查询语言、应用逻辑与 *** 作系统之间潜在的不兼容问题。
三层C/S结构的优势主要表现在以下几个方面:
1利用单一的访问点,可以在任何地方访问站点的数据库;
2对于各种信息源,不论是文本还是图形都采用相同的界面;
3所有的信息,不论其基于的平台,都可以用相同的界面访问;
4可跨平台 *** 作;
5减少整个系统的成本;
6维护升级十分方便;
7具有良好的开放性;
8系统的可扩充性良好;
9进行严密的安全管理;
10系统管理简单,可支持异种数据库,有很高的可用性。大 学学习网络基础的时候老师讲过,网络由下往上分为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。通过初步的了解,我知道IP协议对应于网 络层,TCP协议对应于传输层,而>
主要区别:
客户服务方式是客户机/服务器(client/server)的简写,客户服务器方式所描述的是进程之间服务和被服务的关系,客户是服务的请求方而服务器是服务的提供方对等通信方式是一种点对点的通信方式。
客户服务器方式:
客户服务器方式(简称C/S方式),为网络边缘的系统中运行的程序之间的一种通信方式。描述的是进程之间服务和被服务的关系,客户是服务请求方,服务器是服务提供方。客户服务器模式是一种分布式系统体系结构。
共同点:
主机之间的通信方式实际上是主机A的某个进程和主机B的某个进程之间进行通信。
(1) 连接 当客户在浏览器上键入或单击一个URL时,客户程序就在网络上搜索定位正确的服务器,并与其连接。(2) 请求 在连接后,客户程序向服务器发出一个请求,要求服务器向自己发送指定的信息。
(3) 响应 服务器收到请求,就向客户端传回所需要的文件。
(4)关闭 服务器发出数据后,就断开与客户端的连接,以便接受其他客户的连接。1.“ping”命令所产生的数据包,我们归类为ICMP协议。说白了就是向目的地发送一个数据包,然后等待回应,如果回应正常则目的地的网络就是通的。当我们输入了“ping”命令之后,我们的机器(电脑A)就生成了一个包含ICMP协议域的数据包,姑且称之为“小德”吧~~~~
2.“小德”已经将ICMP协议打包到数据段里了,可是还不能发送,因为一个数据要想向外面传送,还得经过“有关部门”的批准------IP协议。IP要将你的“写信人地址”和“收信人地址”写到数据段上面,即:将数据的源IP地址和目的IP地址分别打包在“小德”的头部和尾部,这样一来,大家才知道你的数据是要送到哪里。
3.准备工作还没有完。接下来还有部门要审核------ARP。ARP属于数据链路层协议,主要负责把IP地址对应到硬件地址。直接说吧,都怪交换机太“傻”,不能根据IP地址直接找到相应的计算机,只能根据硬件地址来找。于是,交换机就经常保留一张IP地址与硬件地址的对应表以便其查找目的地。而ARP就是用来生成这张表的。比如:当“小德”被送到ARP手里之后,ARP就要在表里面查找,看看“小德”的IP地址与交换机的哪个端口对应,然后转发过去。如果没找到,则发一个广播给所有其他的交换机端口,问这是谁的IP地址,如果有人回答,就转发给它。
4.经过一番折腾,“小德”终于要走出这个倒霉的局域网了。可在此之前,它们还没忘给“小德”屁股后面盖个“戳”,说是什么CRC校验值,怕“小德”在旅行途中缺胳膊少腿,还得麻烦它们重新发送。。。。。我靠~~~~注:很多人弄不清FCS和CRC。所谓的CRC是一种校验方法,用来确保数据在传输过程中不会丢包,损坏等等,FCS是数据包(准确的说是frame)里的一个区域,用来存放CRC的计算结果的。到了目的地之后,目的计算机要检查FCS里的CRC值,如果与原来的相同,则说明数据在途中没有损坏。
5.在走出去之前,那些家伙最后折磨了一次“小德”------把小德身上众多的0和1,弄成了什么“高电压”“低电压”,在双绞线上传送了出去。晕~~出趟门就这么麻烦吗?
6.坐着双绞线旅游,爽!可当看到很多人坐着同轴电缆,还有坐光纤的时候,小德又感觉不是那么爽了。就在这时,来到了旅途的中转站------路由器。这地方可是高级场所,人家直接查看IP地址!剩下的一概不管,交给下面的人去做。够牛吧?路由器的内部也有一张表,叫做路由表,里面标识着哪一个网络的IP对应着路由器的哪一个端口。这个表也不是天生就有的,而是靠路由器之间互相“学习”之后生成的,当然也可以由管理员手工设定。这个“学习”的过程是依靠路由协议来完成的,比如RIP,EIGRP,OSPF等等。
7.当路由器查看了“小德”的IP地址以后,根据路由表知道了小德要去的网络,接着就把小德转到了相应的端口了。至此,路由器的主要工作完成,下面又是打包,封装成frame,转换成电压信号等一系列“折腾”的活,就由数据链路层和物理层的模块去干吧。
8.小德从路由器的出口出来,便来到了目的地----电脑B----所属的网络的默认网关。默认网关可以是路由器的一个端口,也可以是局域网里的各种服务器。不管怎样,下面的过程还是一样的:到交换机里的ARP表查询“小德”的IP地址,看看属于哪个局域网段或端口,然后就转发到B了。
9.进了B的网卡之后,还要层层“剥皮”,基本上和从A出来的程序是一样的------电脑B先校验一下CRC值,看看数据是否完整;然后检查一下frame的封装,看到是IP协议之后,就把“小德”交给IP“部门”了;IP协议一看目的地址,正确,再看看应用协议,是ICMP。于是知道了该怎么做了------产生一个回应数据包,(可以命名为“回应小德”),并准备以同样的顺序向远端的A发送。。至于刚刚收到的那个数据包就丢弃了。
10.“回应小德”这个数据包又开始了上述同样的循环,只不过这次发送者是B而接收者是A了。 以上是一个最简单的路由过程,任何复杂的网络都是在次基础之上实现的。
同学您好,这个问题我分开解答哈!①单个用户与单个服务器通信采用Socket进行连接,用户方面的流程是:1新建套接字Socket s;2确定服务器IP地址和端口号 addr = 192168112 port = 8080;3对本机地址进行显式或隐式绑定(一般采用隐式绑定故这步可以忽略)4开启与服务器的连接connect(s,addr);5进行数据交互传输 send recv;6通信结束 关闭套接字closesocket(s);
服务器方面的流程是:1新建套接字Socket s;2确定本地IP和端口号(不能隐式绑定)addr = 192168112 port = 8080;3对本地IP和端口进行绑定bind(s,addr);4对端口进行监听listen(s);5接收一个连接 newsock = accept(s);6进行数据交互传输 send recv;7通信结束 关闭套接字closesocket(s)。
②单个服务器与多个用户的通信连接,用户端与①中流程相同,服务器端第5步接收了一个连接之后开始不同。服务器在接收了一个连接之后,便新建一个套接字newsock,此时要开启一个子线程来负责处理与该用户机的数据传输,而主线程继续监听端口创建新的子线程来与多个用户进行连接。C下可以采用createThread函数,
CreateThread( NULL,0,chat, //子线程函数入口
&newsock, //传给子线程的参数
0, &Tid);然后在chat函数中进行recv和send即可
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)