第2章 应用层

2.1 应用层协议原理

  • 研发网络应用程序的核心是写出能够运行在不同的端系统和通过网络彼此通信的程序。
2.1.1 网络应用程序体系结构
  • 应用程序体系结构(application architecture) 由应用开发者设计,规定了如何在端系统上组织该应用程序。
  • 客户 — 服务器体系结构(client-server architecture)
  • 有一个总是打开的主机称为服务器,服务于来自许多称为客户的主机的请求。
  • 客户之间不直接通信。
  • 服务器具有固定的、周知的IP地址。
  • 著名的应用程序包括:Web, FTP, Telnet和电子邮件。
  • 对等(P2P)体系结构(P2P architecture)
  • 对位于数据中心的专用服务器有最小的(或者没有)依赖。
  • 应用程序在间断相连的主机对之间使用直接通信,主机对被称为对等方。
  • 文件共享(BitTorrent)、对等方协助下载加速器(迅雷)、因特网电话(Skype)、IPTV
  • 某些应用具有混合的体系结构,例如对即时讯息应用而言,服务器被用于跟踪用户的IP地址,用户到用户的报文在用户主机之间直接发送。
  • P2P体系结构的特性之一为自扩展性(self-scalability)
2.1.2 进程通信
  • 一个进程可被认为是运行在端系统中的一个程序。
  • 当进程运行在相同的端系统上时,它们使用进程间通信机制相互通信,由操作系统确定规则。
  • 在两个不同端系统上的进程,通过跨越计算机网络交换报文(message) 而相互通信。

1.客户和服务器进程

  • 在给定的一对进程之间的通信会话场景中,发起通信(即在该会话开始时发起与其他进程的联系)的进程被表示为客户,在会话开始时等待联系的进程是服务器

2.进程与计算机网络之间的接口

  • 进程通过一个被称为套接字(socket) 的软件接口向网络发送报文和从网络接收报文。
  • 套接字是同一台主机内应用层与运输层之间的接口。
  • 套接字也被称为应用程序和网络之间的应用程序编程接口(Application Programming Interface, API)

3.进程寻址

  • 为了标识接收进程,需要定义:主机的地址和在目的主机中的接收进程的标识符。
  • 主机地址由IP地址(IP address) 标识
  • 目的主机中接收进程的标识符由端口号(port number) 标识
  • Web服务器用端口号80标识。邮件服务器进程用端口号25标识。
2.1.3 可供应用程序使用的运输服务

1.可靠数据传输

  • 如果一个协议提供了能够确保由应用程序的一端发送的数据正确、完全地交付给该应用程序的另一端的确保数据交付服务,则认为提供了可靠数据传输(reliable data transfer)
  • 当一个运输层协议不提供可靠数据传输时,由发送进程发送的某些数据可能不能够到达接收进程。这可能能被容忍丢失的应用(loss-tolerant application) 所接受。

2.吞吐量

  • 可用吞吐量为发送进程能够向接收进程交付比特的速率。
  • 运输层协议能够以某种特定的速率提供确保的可用吞吐量。
  • 具有吞吐量要求的应用程序被称为带宽敏感的应用(bandwidth-sensitive application)
  • 弹性应用(elastic application) 能够根据情况或多或少地利用可供使用的吞吐量。

3.定时

  • 服务为了有效性而要求数据交付有严格的时间限制

4.安全性

2.1.4 因特网提供的运输服务
  • 因特网为应用程序提供了两个运输层协议,UDP和TCP

1.TCP服务

  • TCP服务模型包括面向连接服务和可靠数据传输服务。
  • 面向连接服务:在应用层数据报文开始流动之前,客户和服务器互相交换运输层控制信息 — 握手过程。在握手阶段后,一个TCP连接(TCP connection) 就在两个进程的套接字之间建立了。这条连接是全双工的,连接双方的进程可以在此连接上同时进行报文收发。当应用程序结束报文发送时,必须拆除该连接。
  • 可靠数据传送服务:无差错、按适当顺序交付所有发送的数据。
  • TCP协议还具有拥塞控制机制。当发送方和接收方之间的网络出现拥塞时,抑制发送进程。同时也试图限制每个TCP连接,使它们达到公平共享网络带宽的目的。

2.UDP服务

  • UDP是无连接的,两个进程通信前没有握手过程。
  • UDP协议提供一种不可靠数据传送服务。
  • UDP没有包括拥塞控制机制。
2.1.5 应用层协议
  • 应用层协议(application-layer application) 定义了运行在不同端系统上的应用程序进程如何相互传递报文。
    • 交换的报文类型,例如请求报文和响应报文
    • 各个报文类型的语法,如报文中的各个字段及这些字段是如何描述的
    • 字段的语义,即这些字段中包含的信息的含义
    • 一个进程何时以及如何发送报文,对报文的响应规则
  • 应用层协议只是网络应用的一部分

2.2 Web和HTTP

2.2.1 HTTP概况
  • Web的应用层协议是超文本传输协议(HyperText Transfer Protocol, HTTP)
  • HTTP由两个程序实现:一个客户程序和一个服务器程序。两个程序运行在不同的端系统中,通过交换HTTP报文进行会话。
  • HTTP定义了这些报文的结构以及客户和服务器进行报文交换的方式。
  • Web页面(Web Page) (也叫文档)是由对象组成。一个对象(object) 只是一个文件,且它们可以通过一个URL地址寻找。
  • 多数Web页面含有一个HTML基本文件(base HTML file) 以及几个引用对象。HTML基本文件通过对象的URL地址引用页面中的其他对象。
  • 每个URL地址由两部分组成:存放对象的服务器主机名和对象的路径名。
  • HTTP定义了Web客户向Web服务器请求Web页面的方式,以及服务器向客户传送Web页面的方式。
  • HTTP使用TCP作为它的支撑运输协议。
  • HTTP服务器并不保存关于客户的任何信息,所以说HTTP是一个无状态协议(stateless protocol)
2.2.2 非持续连接和持续连接
  • 每个请求/响应对是经一个单独的TCP连接发送,则该应用程序被称为使用非持续连接(non-presistent connection)
  • 所有请求及其响应经相同的TCP连接发送,则该应用程序被称为使用持续性连接(presistent connection)
  • HTTP既能够使用非持续连接,也能够使用持续连接。在默认方式下使用持续连接。

1.采用非持续连接的HTTP

  • 每个TCP连接在服务器发送一个对象后关闭,即该连接并不为特定的对象而持续下来。每个TCP连接只传输一个请求报文和一个响应报文。
  • 往返时间(Round-Trip Time, RTT):一个短分组从客户到服务器然后再返回客户所花费的时间。包括分组传播时延、分组在中间路由器和交换机上的排队时延以及分组处理时延。
  • “三次握手”:客户向服务器发送一个小的TCP报文段,服务器用一个小TCP报文段做出确认和响应,客户向服务器返回确认。三次握手的前两个部分所消耗的时间占用了一个RTT,客户结合三次握手的第三部分(确认)向该TCP连接发送一个HTTP请求报文。
  • 总的响应时间是两个RTT加上服务器传输HTML文件的时间。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值