网络应用程序体系结构
研究网络应用程序的核心是写出能够运行在不同的端系统和通过网络彼此通信的程序。
客户-服务器体系
-
服务器:打开的主机,服务于来自许多其他称为客户的主机的请求
-
Web应用程序:总是打开的Web服务器服务与来自浏览器(运行在客户主机上)的请求。当Web服务器接收到来自某客户对某对象的请求时,向该客户发送所请求的对象作为响应。
-
在CS体系中,客户之间不直接通信
-
服务器具有固定的周知的地址,称为IP地址,客户总是能够通过向该服务器的IP地址发送分组来与其联系
-
典型的CS架构:Web、FTP、Telnet和电子邮件
-
配备大量主机的数据中心常被用于创建强大的虚拟服务器
####P2P体系 -
对位于数据中心的专用服务器有最小或没有依赖
-
应用程序在间断连接的主机对之间使用直接通信,这些主机被称为对等方
-
对等方通信不需要经过服务器
-
典型的P2P:文件共享、对等方协助下载加速器、因特网电话、IPTV
-
具有自扩展性
-
不需庞大的服务器基础设施和服务器带宽
-
对于许多即时讯息应用,服务器被用于跟踪用户的IP地址,但用户到用户的报文在用户主机之间直接发送(无需通过中间服务器)直接发送
-
P2P面临的挑战
- ISP友好:大部分住宅ISP受限于非对称的应用,也即下载比上载多得多,但是P2P视频流和文件分发应用改变从服务器到ISP的上载流量,为ISP带来了巨大压力
- 安全性:源于高度分布和开放
- 激励
进程通信
客户与服务器进程
- 在P2P文件共享的某些应用中,一个进程能够既是客户又是服务器。
- 定义在给定的一对进程之间的通信会话场景中,发起通信的进程为客户,在会话开始时等待联系的进程是服务器
进程与计算机网络之间的接口
- 进程通过一个称为套接字socket的软件接口向网络发送报文和从网络接收报文
- 套接字也称为应用程序和网络之间的应用程序编程接口 API
- 开发者可以控制socket在应用层的一切
- 开发者在运输层的控制限于:
- 选择运输层协议
- 设定运输层参数
进程寻址
标识接收进程需要两种信息,主机的地址以及定义在目的主机中的接收进程的标识符。主机由IP地址标识。目的地端口号用于标识目的主机的接收进程。
- port 80 标识 Web 服务器
- port 25 标识邮件服务器进程
可供应用程序使用的运输服务
从四个方面对应用程序服务要求分类。
可靠数据传输
确保数据交付服务-认为提供了可靠数据传输。运输层协议能够潜在的向应用程序提供的一个重要服务是进程到进程的可靠数据传输。发送进程只要能将数据传递进套接字,就可以完全相信该数据能无差错到达接收进程。
多媒体应用可以容忍丢失一定量的数据。
吞吐量
可用吞吐量是发送进程能够向接收进程交付比特的速率。
具有吞吐量要求的应用程序被称为带宽敏感的应用。
定时
对于交互式实时应用程序有吸引力
安全性
例如在发送主机中,运输协议能够加密由发送进程传输的所有数据,在接收主机中,运输层协议能够在将数据交付给接收进程之前解密这些数据。
因特网提供的传输服务
TCP和UDP都没有提供任何加密机制。TCP的加强版SSL(安全套接字层)可以提供进程到进程的安全性服务,包括加密、数据完整性和端点鉴别。SSL不是第三种运输层协议,而是TCP的加强。SSL的强化在应用层上完成,有自己的API。
SSL套接字收到明文数据,将加密后的数据传递给TCP套接字。
TCP
TCP服务模型包括面向连接服务和可靠数据传输服务。
- 面向连接的服务:在报文流动之前,客户和服务器交换运输层控制信息。握手阶段后,一个TCP连接就在两个进程的套接字之间建立了。这条连接是全双工的,即连接双方的进程可以在此连接上同时进行报文收发。结束报文发送后,必须拆除该连接。
- 可靠的数据传输服务:无差错、按适当顺序交付。
- 拥塞控制机制:网络拥塞时,会抑制发送进程,也会试图限制每个TCP连接。
UDP
不提供不必要服务的轻量级运输协议,只提供最小服务,是无连接的不可靠数据传输服务。
UDP没有拥塞控制机制,所以其发送端可以用它选定的任何速率向其下层注入数据。实际端到端的吞吐量可能小于这种速率。这是由于中间链路的带宽受限或拥塞造成的。
因特网运输协议所不提供的服务
吞吐量和定时不提供。
应用 | 应用层协议 | 支撑的运输层协议 |
---|---|---|
电子邮件 | SMTP | TCP |
远程终端访问 | Telnet | TCP |
Web | HTTP | TCP |
文件传输 | FTP | TCP |
流式多媒体 | HTTP | TCP |
因特网电话 | SIP、RTP or others | UDP or TCP |
应用层协议
应用层协议定义:
- 交换的报文类型
- 各种报文类型的语法
- 字段的语义
- 一个进程何时以及如何发送报文,对报文响应的规则
应用层协议只是网络应用的一部分