客户端/服务器模式
peer to peer 模式(对等模式)
???????在第一章的内容中,我们学习了计算机网络的大体轮廓,因为在计算机网络中,我们需要记住非常多的专有名词,所以在第一章中,我们需要进行非常多的记忆。第一章还是非常重要的。
???????比如,我们所使用的E-mail,Web服务器,文本信息,远程登陆,P2P文件共享(基于P2P模式下),即时通信,多用户网络游戏,流媒体的应用(YouTobe,Hulu,Netfix),Internet电话,实时电视通信,社交网络,搜索功能等一些例子。
???????在客户端/服务器模式下,有一个总是打开的主机称为服务器,它服务于许多来自其他称为客户机的主机请求。
? ? ? ?答案是不对等的,因为在进行对话中,客户端程序必须知道服务器程序的地址,客户机上一般不需要特殊的硬件和复杂的操作系统。而在服务器中运行的软件则是专门进行提供某种服务的程序,可同时处理多个进程或本地客户的要求,被动地等待并接收各地客户的请求。因此,服务器程序不需要知道客户程序的地址。
???????不难看出,在C/S模式中,服务器的性能好坏决定了整个系统的性能,当大量用户请求服务时,服务器就必然成为系统的瓶颈。P2P模式的思想是整个网络中的传输内容不再被保存在中心服务器上,每一个节点都同时具有下载、上传的功能,其权利和义务都是大体对等的。
???????在获取服务的同时,还要给其他节点提供服务,因此会占用较多的内存,影响整机的速度。
???????在未建立前,服务器在某一个端口上监听。客户端是连接的请求方,客户端必须事先知道服务器的地址才能发出连接请求,而服务器则从客户端发来的数据包中获取客户端的地址。一旦连接建立,服务器就能响应客户端请求的内容,服务器也能主动发送数据给客户端,用于消息的通知,比如一些错误的消息。
???????客户机的作用是根据用户需求向服务器发出服务请求,并将服务器返回的结果呈现给客户,因此客户机是面向用户的,服务器是面向任务的。
我们来举一些例子:
在线检测:集中C/S模式
两个用户之间聊天:P2P模式
文件搜索:集中
文件传输:P2P
进程:在主机上运行的应用程序
客户端进程:发起通信的进程
服务器进程:等待连接的进程
进程中通信可以分为两种:在同一主机内通信;在不同主机内通信
- 在同一主机内,使用进程间通信机制通信(操作系统定义)
- 不同主机,通过交换报文来通信:使用OS提供的通信服务;按照应用协议交换报文,借助传输层提供的服务。
注意:不管是C/S模式,还是P2P模式,其架构的应用都有客户端进程和服务器进程之分。
进程为了接收报文,必须要有一个标识,即:SAP(发送也需要标识)
一些知名的端口号有:HTTP:tcp80,FTP:tcp21,SMTP:tcp25,POP:tcp110
之前说,一个进程无法只通过一个IP地址进行标识,所以要通过IP+port(端口)来进行标识。
本质上,一对主机之间的通信要有两个端结点构成。
层间接口需要携带的信息:
传输层实体根据这些信息进行数据报的封装,但是在封装过程中,会不会觉得很麻烦呢?是的,比较麻烦。
???????为了解决上述的问题,并且每一次传输,都携带如此多的信息,太繁琐易错,不便于管理,所以我们可以采用一个编号来表示通信的双方或者单方。
TCP的Socket是一个四元组,包括:源IP,源port,目标IP,目标port
UDP的Socket是一个二元组,包括:本IP,本port