应用层协议原理
一.应用层协议原理
1.应用进程通信方式
(1)每个应用层协议都是为了解决某一个应用问题,通过位于不同主机中的多个应用进程之间的通信和协同工作来完成。
①两台主机通信实际是其上对应的两个应用进程在通信;
②应用进程:为解决具体应用问题而彼此通信的进程。
(2)应用层的具体内容就是规定应用进程在通信时所遵循的协议。
a.客户/服务器(C/S)方式;
b.浏览器/服务器(B/S)方式;
c.对等(P2P)方式。
(3)客户/服务器(C/S,Client/Server)方式
a.集中结构,一对多;
b.服务器共享资源,客户机资源不共享;
c.服务器可能负载过重;
d.网络带宽限制。
①应用层的许多协议是基于C/S方式,例如,在移动互联网环境下,每个应用app都是一个客户端:
a.客户和服务器是指通信中所涉及的2个应用进程;
b.客户/服务器方式描述的是应用进程之间服务和被服务的关系;
c.客户是服务请求方(主动请求服务,被服务);
d.服务器是服务提供方(被动接受服务请求,提供服务)。
②C/S方式可以是面向连接的,也可以是无连接的。
③面向连接时,C/S通信关系一旦建立,通信就是双向的,双方地位平等,都可以发送和接收数据。
④功能较强的计算机可同时运行多个服务器进程。
⑤客户进程的特点
a.在进行通信时临时成为客户,它也可在本地进行其它的计算;
b.用户计算机上运行,在打算通信时主动向远地服务器发起通信;
c.客户方必须知道服务器进程所在主机的IP地址才能发出服务请求;
d.需要时可以与多个服务器进行通信。
⑥服务器进程的特点
a.专门用来提供某种服务的程序,可“同时”处理多个远地或本地客户的请求;
b.必须始终处于运行状态才有可能提供服务;
c.通信开始之前服务器进程不需要知道客户进程所在主机的IP地址,无论客户请求来自哪里,服务器进程被动等待服务请求的到来即可;
d.通常是当系统启动时即自动调用并一直运行着。某些服务器程序也可以由用户或其它进程在通信前启动;
e.被动等待并接受来自多个客户的通信请求。
(4)浏览器/服务器(B/S,Browser/Server)方式
①B/S方式可以看做C/S方式的特例,即客户软件改为浏览器了。
②B/S方式采取浏览器请求、服务器响应的工作模式。
③在B/S方式下,用户界面完全通过Web浏览器实现,一部分事务逻辑在前端实现,但主要的事务逻辑在服务器端实现。
④B/S方式通常采取三层架构实现
a.数据层:由数据库服务器承担数据处理逻辑,其任务是接受Web服务器对数据服务器提出的数据操作请求,然后由数据库服务器进行数据处理并把处理结果返回给Web服务器。
b.处理层:由Web服务器承担业务处理逻辑和页面存储管理,接受客户浏览的任务请求,执行相应的事务处理。
c.表现层:浏览器仅承担网页信息的浏览功能,以超文本格式实现信息的输入和浏览。
⑤实际部署时也可以把数据库服务器和Web服务器部署在同一台设备上。
⑥B/S方式的特点
a.界面统一,使用简单。客户端只需安装浏览器软件;
b.易于维护。对应用系统升级时,只需更新服务器端的软件,减轻了系统维护和升级的成本;
c.可扩展性好。采用标准的TCP/IP和HTTP协议,具有良好的扩展性;
d.信息共享度高。HTML是数据格式的一个开放标准,目前大多数流行的软件均支持HTML;
e.需要注意的是:在一种浏览器环境下开发的界面在另一种浏览器环境下可能有不完全适配的情况,这时需要安装对应的浏览器。
(5)对等(P2P,Peer to Peer)方式
①对等方式是指两个进程在通信时并不区分服务的请求方和服务的提供方。
a.只要两个主机都运行P2P软件,他们就可以进行平等、对等的通信;
b.双方都可以下载对方存储在硬盘中的共享文档,如果权限允许的话。
②音频/视频应用推动了P2P对等通信方式的发展。
③音频/视频流量已占主要比例。
④对等方式
a.非集中结构,多对多;
b.节点具备客户与服务器双重特性;
c.充分利用终端资源;
d.可扩展性好。
e.类型:
- 纯P2P:Gnutella;
- 混合P2P:迅雷。
⑤P2P方式从本质上看仍然是使用了C/S方式,但强调的是通信过程中的对等,这时每一个P2P进程既是客户同时也是服务器。
2.服务器进程工作方式
(1)循环方式iterative mode ===> 无连接循环方式
a.一次只运行一个服务进程;
b.当有多个客户进程请求服务时,服务进程就按请求的先后顺序依次做出响应(阻塞方式)。
①使用无连接的UDP服务进程通常都工作在循环方式,即一个服务进程在同一时间只能向一个客户进程提供服务。(顺序服务)
a.服务进程收到客户进程的请求后,就发送UDP用户数据报响应该客户;
b.对其他客户进程发来的请求则暂时不予理睬,这些请求都在服务端的队列中排队等候服务进程的处理;
c.当服务进程处理完毕一个请求时,就从队列中读取来自下一个客户进程的请求,然后继续处理。
②服务进程只使用一个服务套接字,每个客户则使用自己设定端口号的客户套接字。
(2)并发方式concurrent mode ===> 面向连接的并发方式服务
a.可以同时运行多个服务进程;
b.每一个服务进程都对某个特定的客户进程做出响应(非阻塞方式)。
①面向连接的TCP服务进程通常都工作在并发服务方式,服务进程在同一时间可同时向多个客户进程提供服务。(并发服务)
②在TCP服务进程与多个客户进程之间必须建立多条TCP连接,每条TCP连接在其数据传输完毕后释放。
③一个TCP连接对应一个(熟知)服务端口。
④主服务进程在熟知端口等待客户进程发出的请求。一旦收到客户的请求,就创建一个从属服务进程,并指明从属服务进程使用临时套接字与该客户建立TCP连接,然后主服务进程继续在原来的熟知端口等待向其他客户提供服务。
⑤主服务进程也称为父服务进程,而从属服务进程又称为子服务进程。
3.应用进程通信原理
①进程:运行在端系统中的程序。
a.在同一台主机中:两个进程使用进程间通信IPC(由操作系统定义)通信。
b.在不同的主机中:进程通过交换报文通信。
c.客户机进程:发起通信的进程。
d.服务器进程:等待联系的进程。
e.注意:具有P2P体系结构的应用程序具有客户机进程和服务器进程。
(1)寻址进程—Socket
①一个主机中可能同时运行有多个进程,接收端从网络收到消息后要交给哪个进程?
a.对于接收报文的进程,必须具有一个标识;
b.一台主机具有一个独特的32bit的IP地址;
c.标识符包括IP地址和与主机上该进程相关的端口号;
d.端口号例子:
- HTTP服务器:80
- 电子邮件服务器:25
②套接字Socket
a.进程通过套接字在网络上发送/接收报文;
b.套接字类似于门
- 上联应用进程;
- 下联网络协议栈;
c.套接字是应用程序与网络之间的API(应用程序编程接口)
(2)应用的运输服务要求
①应用程序需要什么样的运输服务:
a.可靠的数据传输
i.某些应用(如音频)能够容忍某些丢失;
ii.其他应用(如文件传输,TeInet)要求100%可靠数据传输。
b.吞吐量
i.某些应用(如多媒体)要求“有效的”最小量的带宽;
ii.其他应用(“弹性应用”)充分利用它们获得的所有带宽。
c.定时
某些应用(如因特网电话、交互式游戏)要求“有效的”低时延。
d.安全
加密、数据完整性等。
②普通应用的运输服务要求
③因特网运输协议服务
a.TCP服务
i.面向连接:客户机和服务器之间所需的建立;
ii.可靠传输:在发送和接收进程之间;
iii.流控制:发送方不会淹没接收方;
iv.拥塞控制:当网络过载时抑制发送方;
v.并不提供:定时、最小带宽保证。
b.UDP服务
i.在发送进程及接收进程之间的不可靠数据传输;
ii.不提供:建立连接、可靠性、流控、拥塞控制、定时或带宽保证。