计算机网络——应用层
应用层
应用层协议原理
网络应用程序体系结构
应用程序体系结构(application architecture)由应用程序研发者设计,规定了如何在各种端系统上组织该应用程序。
两种主流体系结构:
客户-服务器体系结构、对等(P2P)体系结构。
客户 — 服务器体系结构(client-server architecture)
有一个总是打开的主机称为服务器,它服务于来自许多其他称为客户的主机的请求。
特征:
客户相互之间不直接通信;
该服务器具有固定的、周知的地址,该地址称为IP地址。
具有该体系结构的应用程序包括:Web、FTP、Telnet和电子邮件。
配置大量主机的数据中心(data center)常被用于创建强大的虚拟服务器。
最为流行的因特网服务——如搜索引擎(谷歌、Bing、百度)、因特网商务(亚马逊、e-Bay、阿里巴巴)、基于Web的电子邮件(Gmail、雅虎邮件)、社交网络(脸书、Instagram、推特、微信),就应用了一个或多个数据中心。
P2P体系结构(P2P architecture)
对位于数据中心的专用服务器有最小的(或者没有)依赖。
应用程序在间断链接的主机对之间使用直接通信,这些主机对被称为对等方。
特性:自扩展性(self-scalability)。
P2P体系结构也是有成本效率的,因为它们通常不需要庞大的服务器基础和服务器带宽(这与具有数据中心的客户-服务器设计形成鲜明对比)。
进程通信
用操作系统的术语来说,进行通信的实际上是进程(process)而不是程序。
在两个不同端系统上的进程,通过跨越计算机网络交换报文(message)而相互通信。
发送进程生成并向网络中发送报文;接收进程接收这些报文并可能通过回送报文进行响应。
1. 客户和服务器进程
网络应用程序由成对的进程组成,这些进程通过网络相互发送报文。
对每队通信进程,通常将这两个进程之一标识为客户(client),而另一个进程标识为服务器(server)。
定义客户和服务器进程如下:
在一对进程之间的通信会话场景中,发起通信(即在该会话开始时发起与其他进程的联系)的进程被标识为客户,在会话开始时等待联系的进程是服务器。
2. 进程与计算机网络之间的接口
从一个进程向另一个进程发送的报文必须通过下面的网络。
进程通过一个称为套接字(socket)的软件接口向网络发送报文和从网络接收报文。
套接字是同一台主机内应用层与运输层之间的接口。
由于该套接字是建立网络应用程序的可编程接口,因此套接字也称为应用程序和网络之间的应用程序编程接口(Application Programming Interface, API)。
3. 进程寻址
在一台主机上运行的进程为了向在另一台主机上运行的进程发送分组,接收进程需要有一个地址。
为了标识该接收进程,需要定义两种信息:主机的地址;在目的主机中指定接收进程的标识符。
在因特网中,主机由其IP地址(IP address)标识。
目的地端口号(port number)用于这个目的。
所有因特网标准协议的周知端口号的列表在http://www.iana.org找到。
可供应用程序使用的运输服务
可以从四个方面对应用程序服务要求进行分类:可靠数据传输、吞吐量、定时和安全性。
1. 可靠数据传输
数据丢失可能会造成灾难性的后果。
为了支持这些应用,必须做一些工作以确保由应用程序的一端发送的数据正确、完全地交付给该应用程序的另一端。
如果一个协议提供了这样的确保数据交付服务,就认为提供了可靠数据传输(reliable data transfer)。
当一个运输层协议不提供可靠数据传输时,由发送进程发送的某些数据可能到达不了接收进程。这可能能被容忍丢失的应用(loss-tolerant application)所接收。如交谈式音频/视频,它们能够承受一定量的数据丢失。
2. 吞吐量
吞吐量就是发送进程能够向接收进程交付比特的速率。
具有吞吐量要求的应用称作被称为带宽敏感的应用(bandwidth-sensitive application)。
带宽敏感的应用具有特定的吞吐量要求,而弹性应用(elastic aoolication)能够根据当时可用的带宽或多或少地利用可供使用的吞吐量。
电子邮件、文件传送以及Web传送都属于弹性应用。
3. 定时
运输层协议也能提供定时保证。
比特传输时间保证。
4. 安全性
运输协议能够为应用程序提供一种或多种安全性服务。
运输协议还能提供除了机密性以外的其他安全性服务,包括数据完整性和端点鉴别。
因特网提供的运输服务
因特网为应用程序提供两个运输层协议,即UDP和TCP。
1. TCP服务
TCP服务模型包括面向连接服务和可靠数据传输服务。
面向连接的服务:
在应用层数据报文开始流动之前,TCP让客户和服务器互相交换运输层控制信息。
在握手阶段后,一个TCP连接(TCP connection)就在两个进程的套接字之间建立了。
可靠的数据传送服务
通信进程能够依靠TCP,无差错、按适当顺序交付所有发送的数据。
TCP协议还具有拥塞控制机制,这种服务不一定能为通信进程带来直接好处,但能为因特网带来整体好处。
2. UDP服务
UDP是一种不提供不必要服务的请量级运输协议,它仅提供最小服务。
UDP是无连接的,因此在两个进程通信没有握手过程。
UDP协议提供一种不可靠数据传输服务,也就是说,当进程将一个报文发送进UDP套接字,UDP协议并不保证该报文将到达接收进程。
UDP没有包括樱色控制机制,所有UDP的发送端可以用它选定的任何速率向其下层(网络层)注入数据。
3. 因特网运输协议所不提供的服务
不提供吞吐量或定时保证
应用层协议
应用层协议(application-layer protocal)定义了运行在不同端系统上的应用程序进程如何相互传递报文。
应用层协议定义了:
交换的报文类型,例如请求报文和响应报文。
各种报文类型的语法,如报文中的各个字段及这些字段是如何描述的。
字段的语义,即这些字段中的信息的含义。
确定一个进程何时以及如何发送报文,对报文进行响应的规则。
应用层协议只是网络应用的一部分。
Web的应用层协议是HTTP,它定义了在浏览器和Web服务器之间传输的报文格式和序列。因此,HTTP只是Web应用的一个部分。
Web和HTTP
HTTP概况
Web的应用层协议是超文本传输协议(HyperText Transfer protocal, HTTP),它是Web的核心,在[ RFC 1945 ]和[ RFC 2616 ]中进行了定义。
HTTP由两个程序实现:一个客户程序和一个服务器程序。
客户程序和服务器 程序运行在不同的端系统中,通过交换HTTP报文进行会话。
HTTP定义了这些报文的结构以及客户和服务器进行报文交换的地方。
Web页面(Web page)(也叫文档)是由对象组成的。
一个对象(object)只是一个文件