文章目录
- 网络应用程序体系结构
- 客户-服务器体系结构
- P2P体系结构
- 进程通信
- 客户和服务器进程
- 进程与计算机网络之间的接口
- 进程寻址
- 可供应用程序使用的运输服务
- 可靠数据传输
- 吞吐量
- 定时
- 安全性
- 因特网提供的运输服务
- TCP服务
- 面向连接的服务
- 可靠数据传输服务
- TCP安全
- UDP服务
- 因特网运输协议所不提供的服务
- 应用层协议
- 本章谈论的网络应用
- 参考资料
应用层协议考虑的是不同端系统之间的通信,因为网络核心不具有应用层
网络应用程序体系结构
应用程序体系结构,即application architecture
现代网络应用程序中所使用的两种主流体系结构:客户-服务器体系结构和对等(P2P)体系结构
客户-服务器体系结构
client-server architecture
端系统通信模式
一个总是打开的主机称为服务器,它服务于来自许多其他称为客户的主机的请求
特点
- 客户相互之间不直接通信
- 服务器具有固定的、周知的IP地址
- 在CS架构中,客户根据IP地址向服务器发送分组
- 为了实现服务器端的负载均衡,现实情况中的服务器往往是由配备大量主机的数据中心(data center)创建的虚拟服务器
应用程序举例
Web、FTP、Telnet和电子邮件
P2P体系结构
P2P architecture
端系统通信模式
应用程序在间断连接的主机对(对等方)之间使用直接通信
特点
自扩展性(self-scalability)
举个例子,在一个P2P文件共享应用中,尽管每个对等方都由于请求文件产生工作负载,但每个对等方通过向其他对等方分发文件也为系统增加服务能力。
应用程序举例
文件共享(例如BitTorrent)、对等方协助下载加速器(例如迅雷)、因特网电话和视频会议(例如Skype)
缺点
高度非集中式结构,面临安全性、性能和可靠性等挑战
CS和P2P杂合的体系结构
举个例子,即时讯息应用如qq,服务器跟踪用户的IP地址,用户到用户的消息在用户主机间直接发送
进程通信
严谨地说,在进行的通信的主体是进程(process)而非程序
当存储在外存中的程序被加载到内存时才变为进程
当多个进程运行在相同的端系统上时,它们使用进程间通信机制相互通信,这个过程由操作系统管理
运行在不同端系统(可能具有不同的操作系统)上的进程间的通信才属于计算机网络讨论的范畴
运行在两个不同端系统上的进程,通过跨越计算机网络交换报文(message)相互通信
客户和服务器进程
网络应用程序由成对的进程组成,这些进程通过网络相互发送报文。
对每对通信进程,一个被标识为客户(client),另一个进程被标识为服务器(server)
客户进程和服务器进程的定义
在一对进程之间的通信会话场景中,发起通信(即在该会话开始时发起与其他进程的联系)的进程被标识为客户,在会话开始时等待联系的进程是服务器。
举个例子
对于Web而言,浏览器是一个客户进程,Web服务器是一台服务器进程
对于P2P文件共享,下载文件的对等方标识为客户,上载文件的对等方标识为服务器。
进程与计算机网络之间的接口
谈论的问题在于通信进程对是如何实现互相发送报文的?
引入套接字,进程通过套接字(socket)向网络发送报文和从网络接收报文
套接字
- 通信进程与运输层的接口,是同一台主机内应用层与运输层之间的接口
- 建立网络应用程序的可编程接口,应用程序和网络之间的应用程序编程接口(Application Programming Interface, API)
进程寻址
进程地址定义
定义两种信息:
①主机的地址;②在目的主机中指定接收进程的标识符
主机地址
由IP地址(IP address)标识
一个32比特的数值,能够唯一地标识一台主机
特定进程
由端口号(port number)标识
指定在接收主机上的接收进程,也即接收套接字,因为一台主机上能够运行许多网络应用
常用的已分配端口号举例:Web服务器进程使用80端口,邮件服务器进程使用25端口
可供应用程序使用的运输服务
问题:针对特定的应用程序,应该怎么选择特定的运输层协议?
运输层协议的选择取决于应用程序所要求的服务
应用程序服务要求分类:可靠数据传输、吞吐量、定时和安全性
可靠数据传输
reliable data transfer
定义:由应用程序的一端发送的数据正确、完全地交付给该应用程序的另一端
要求可靠数据传输服务的应用程序使用提供确保数据交付服务的运输层协议
容忍丢失的应用(loss-tolerant application)可以使用不提供可靠数据传输的运输层协议,例如多媒体应用能承受一定量的数据丢失
吞吐量
定义
进程通信中,发送进程能够向接收进程交付比特的速率
由于因特网中存在多个会话共享一段网络的情况,因此可用吞吐量是随着时间波动的
吞吐量服务
运输层协议能够以某种特定的速率提供确保的可用吞吐量。举个例子,在这种服务下,应用程序请求r比特/秒的确保吞吐量,对应的运输层协议就确保可用吞吐量至少为r比特/秒
服务对象
带宽敏感的应用(bandwidth-sensitive application):具有吞吐量要求的应用程序,如多媒体应用
弹性应用(elastic application):能够根据当时可用的带宽或多或少地利用可供使用的吞吐量的应用程序,即是对bandwidth不敏感的应用程序,如电子邮件、文件传输以及Web传送
定时
服务对象
交互式实时应用程序,如因特网电话、虚拟环境、电话会议和多方游戏
安全性
运输协议能够为应用程序提供一种或多种安全性服务
提供服务
加密解密,数据完整性和端点鉴别
因特网提供的运输服务
因特网(更一般的是TCP/IP网络)为应用程序提供两个运输层协议,即UDP和TCP
需要根据应用程序的服务要求选择运输层协议
TCP服务
提供服务
面向连接服务和可靠数据传输服务
拥塞控制机制:当发送方和接收方之间的网络出现拥塞时,TCP的拥塞控制机制会抑制发送进程(客户或服务器)
面向连接的服务
使用TCP协议的应用程序,在客户端进程和服务器端进程传输数据包之前需要经过三次握手阶段建立起TCP连接(TCP connection)
握手阶段完成了客户和服务器互相交换运输层控制信息
连接性质
全双工,连接双方的进程可以在此连接上同时进行报文收发
可靠数据传输服务
通信进程能够依靠TCP,无差错、按适当顺序交付所有发送的数据,没有字节的丢失和冗余
TCP连接下的数据传输可以保证有序性。当应用层数据报到了运输层时会被切分为多个小片段,每个片段都被加上带有序列号的头部,用于标识其在数据报中的位置,接收方在接收到数据后,会根据序列号将数据进行排序,然后再交给应用层处理。
TCP安全
TCP、UDP都没有提供任何加密机制
安全隐患
明文传输的数据在发送方和接收方之间的所有链路传送,其可能在任何中间链路被嗅探和发现
解决办法
使用TCP的加强版——安全套接字层(Secure Sockets Layer, SSL),SSL提供进程到进程的安全性服务,包括加密、数据完整性和端点鉴别
注意:SSL是基于TCP连接在应用层上进行了安全性服务强化,而非独立于TCP、UDP之外的第三种运输层协议
UDP服务
轻量级运输层协议,仅提供最小服务
无连接
提供一种不可靠数据传送服务
没有拥塞控制机制
因特网运输协议所不提供的服务
目前的因特网运输协议不提供吞吐量保证和定时保证
由于TCP协议提供的可靠数据传输服务,电子邮件、远程终端访问、Web、文件传输都使用了 TCP
因特网电话则对最小带宽有比较高的要求,使用UDP协议来避免TCP的拥塞控制机制和分组开销。但许多防火墙被配置成阻挡(大多数类型的)UDP流量,因特网电话往往需要TCP连接在UDP通信失败的情况下进行备份
应用层协议
application-layer protocol
作用
定义了运行在不同端系统上的应用程序进程如何相互传递报文
应用层协议分两类:共享协议和专用协议。
共享协议是由RFC文档定义的,位于公共领域,例如HTTP协议。
专用协议是只有某些人可以使用的,例如Telnet协议。应用层协议和传输层协议之间的关系是,传输层的协议TCP或UDP加上端口就可以标识一个应用层协议,
应用层协议和网络应用
应用层协议是网络应用的一部分
举个例子:Web应用包括文档格式的标准(即HTML)、Web浏览器、Web服务器和应用层协议(HTTP)
本章谈论的网络应用
5种重要的网络应用:Web、文件传输、电子邮件、目录服务、流式视频和P2P
参考资料
- James F.Kurose&Keith W.Ross Computer Networking A Top-Down Approach(7th ed) 中文版
- TCP如何保证数据的有序传输