应用层笔记

1、应用层协议原理

1.1 网络应用程序体系架构

在选择应用程序体系结构时,应用程序研发者很可能利用现代网络应用程序中所使用的两种主流
体系结构之一:客户-服务器体系结构或对等(P2P)体系结构。
客户-服务器体系结构(client-server architecture)中,有一个总是打开的主机称为
服务器,它服务于来自许多其他称为客户的主机的请求。一个典型的例子是Web应用程
序,其中总是打开的Web服务器服务于来自浏览器(运行在客户主机上)的请求。当
Web服务器接收到来自某客户对某对象的请求时,它向该客户发送所请求的对象作为响
应。值得注意的是利用客户-服务器体系结构,客户相互之间不直接通信;例如,在Web
应用中两个浏览器并不直接通信。客户-服务器体系结构的另一个特征是该服务器具有固
定的、周知的地址,该地址称为IP地址(我们将很快讨论它)。因为该服务器具有固定
的、周知的地址,并且因为该服务器总是打开的,客户总是能够通过向该服务器的IP地
址发送分组来与其联系。具有客户-服务器体系结构的非常著名的应用程序包括Web、
FTP、Telnet和电子邮件。
在一个 P2P 体系结构(P2P architecture) 中,对位于数据中心的专用服务器有最小的
(或者没有)依赖。相反,应用程序在间断连接的主机对之间使用直接通信,这些主机对
被称为对等方c这些对等方并不为服务提供商所有,相反却为用户控制的桌面机和膝上机
所有,大多数对等方驻留在家庭、大学和办公室。因为这种对等方通信不必通过专门的服
务器,该体系结构被称为对等方到对等方的。许多目前流行的、流量密集型应用都是P2P
体系结构的。这些应用包括文件共享(例如BitTorrent) x对等方协助下载加速器(例如迅
雷)、因特网电话和视频会议(例如Skype)。
P2P体系结构的最引人入胜的特性之一是它们的自扩展性(self-scalability) o例如,
在一个P2P文件共享应用中,尽管每个对等方都由于请求文件产生工作负载,但每个对等
方通过向其他对等方分发文件也为系统增加服务能力。

1.2、进程通信
  1. 客户和服务器进程
    网络应用程序由成对的进程组成,这些进程通过网络相互发送报文。例如,在Web
    应用程序中,一个客户浏览器进程与一台Web服务器进程交换报文。在一个P2P文件共
    享系统中,文件从一个对等方中的进程传输到另一个对等方中的进程。对每对通信进程,
    我们通常将这两个进程之一标识为 客户(client),而另一个进程标识为 服务器(serve"。
    对于Web而言,浏览器是一个客户进程,Web服务器是一台服务器进程。对于P2P文件
    共享,下载文件的对等方标识为客户,上载文件的对等方标识为服务器。
  2. 进程与计算机网络之间的接口

    如上所述,多数应用程序是由通信进程对组成,每对中的两个进程互相发送报文。从
    一个进程向另一个进程发送的报文必须通过下面的网络。进程通过一个称为 套接字(sock,
    el)的软件接口向网络发送报文和从网络接收报文。我们考虑一个类比来帮助我们理解进
    程和套接字。进程可类比于一座房子,而它的套接字可以类比于它的门。当一个进程想向
    位于另外一台主机上的另一个进程发送报文时,它把报文推出该门(套接字)。该发送进
    程假定该门到另外一侧之间有运输的基础设施,该设施将把报文传送到目的进程的门口。
    一旦该报文抵达目的主机,它通过接收进程的门(套接字)传递,然后接收进程对该报文
    进行处理。
  3. 进程寻址
    为了向特定目的地发送邮政邮件,目的地需要有一个地址。类似地,在一台主机上运
    行的进程为了向在另一台主机上运行的进程发送分组,接收进程需要有一个地址。为了标
    识该接收进程,需要定义两种信息:①主机的地址;②在目的主机中指定接收进程的标
    识符。
    在因特网中,主机由其 IP地址 (IP address)标识。我们将在第4章中非常详细地讨
    论IP地址。此时,我们只要知道IP地址是一个32比特的量且它能够唯一地标识该主机就
    够了。除了知道报文发送目的地的主机地址外,发送进程还必须指定运行在接收主机上的
    接收进程(更具体地说,接收套接字)。因为一般而言一台主机能够运行许多网络应用,
    这些信息是需要的。目的地 端口号 (port number)用于这个目的。已经给流行的应用分配
    了特定的端口号。例如,Web服务器用端口号80来标识。邮件服务器进程(使用 SMTP
    协议)用端口号25来标识。用于所有因特网标准协议的周知端口号的列表能够在http:〃
    WWW. iana. org处找到。
1.3 可供应用程序使用的运输服务

一个运输层协议能够为调用它的应用程序提供什么样的服务呢?我们大体能够从四个
方面对应用程序服务要求进行分类:可靠数据传输、吞吐量、定时和安全性。

  1. 可靠数据传输
  • 可靠数据传输
  • 容忍丢失的应用
  1. 吞吐量
    在第1章中我们引入了可用吞吐量的概念,在沿着一条网络路径上的两个进程之间的
    通信会话场景中,可用吞吐量就是发送进程能够向接收进程交付比特的速率。
    具有吞吐量要求的应用程序被称为 带宽敏感的应用(bandwidth-sensitive application)。
    带宽敏感的应用具有特定的吞吐量要求,而 弹性应用(elastic application)能够根据
    当时可用的带宽或多或少地利用可供使用的吞吐量。
  2. 定时
    运输层协议也能提供定时保证。如同具有吞吐量保证那样,定时保证能够以多种形式
    实现。一个保证的例子如:发送方注入进套接字中的每个比特到达接收方的套接字不迟于
    100ms。
  3. 安全性
    最后,运输协议能够为应用程序提供一种或多种安全性服务。例如,在发送主机
    中,运输协议能够加密由发送进程传输的所有数据,在接收主机中,运输层协议能够在
    将数据交付给接收进程之前解密这些数据。这种服务将在发送和接收进程之间提供机密
    性,以防该数据以某种方式在这两个进程之间被观察到。
4、因特网提供的运输服务
  1. TCP服务
    TCP服务模型包括面向连接服务和可靠数据传输服务。当某个应用程序调用TCP作为
    其运输协议时,该应用程序就能获得来自TCP的这两种服务。
    TCP协议还具有拥塞控制机制,这种服务不一定能为通信进程带来直接好处,但能为
    因特网带来整体好处。当发送方和接收方之间的网络出现拥塞时,TCP的拥塞控制机制会
    抑制发送进程(客户或服务器)。
  2. UDP服务
    UDP是一种不提供不必要服务的轻量级运输协议,它仅提供最小服务。UDP是无连
    接的,因此在两个进程通信前没有握手过程。UDP协议提供一种不可靠数据传送服务,也
    就是说,当进程将一个报文发送进UDP套接字时,UDP协议并不保证该报文将到达接收
    进程。不仅如此,到达接收进程的报文也可能是乱序到达的。
    UDP没有包括拥塞控制机制,所以UDP的发送端可以用它选定的任何速率向其下层
    (网络层)注入数据。
5、应用层协议

应用层协议 (application-layer protocol)定义了运行在不同
端系统上的应用程序进程如何相互传递报文。特别是应用层协议定义了 :

  • 交换的报文类型,例如请求报文和响应报文。
  • 各种报文类型的语法,如报文中的各个字段及这些字段是如何描述的。
  • 字段的语义,即这些字段中的信息的含义。
  • 确定一个进程何时以及如何发送报文,对报文进行响应的规则。
posted @ 2020-12-20 12:13  luotuoccc  阅读(179)  评论(0)    收藏  举报