计算机网络自顶向下 第七版 第二章

应用层

  • 网络应用是计算机网络存在的理由

应用层协议原理

  • 研发网络应用程序的核心是写出能够运行在不同的端系统和通过网络彼此通信的程序。
  • 在Web应用程序中,有两个互相通信的不同程序:一个是运行在用户主机上的浏览器程序;另一个是运行在Web服务器主机上的Web服务器程序。
  • P2P文件共享系统,在参与文件共享的社区的每台主机中都有一个程序,在这种情况下,各台主机的这些程序可能都有类似的或相同的。
  • 网络核心设备并不在应用层上起作用,而仅在较低层起作用,特别是在网络层及下面层次起作用。这种基本设计,即将应用软件限制在端系统的方法,促进了大量的网络应用程序的迅速发展和部署。

1、网络应用程序体系结构

  • 从应用程序研发者的角度看,网络体系结构是固定的,并为应用程序提供了特定的服务集合。
  • 应用程序体系结构由应用程序研发者设计,规定了如何在各种端系统上组织该应用程序。
  • 主流体系结构:客户-服务器体系结构或对等(P2P)体系结构。
  • 配备大量主机的数据中心常被用于创建强大的虚拟服务器。
  • 客户-服务器体系结构,客户相互之间不直接通信。
  • P2P体系结构中对等方并不为服务提供商所有。
  • P2P体系结构最引人入胜的特性之一是它们的自拓展性。

2、进程通信

  • 进行通信的实际上是进程而不是程序。
  • 在两个不同端系统上的进程,通过跨越计算机网络交换报文而相互通信。
  • 发送进程生成并向网络中发送报文;接收进程接收这些报文并可能通过回送报文进行响应。
客户和服务器进程
  • 网络应用程序由成对的进程组成,这些进程通过网络相互发送报文。
  • 在一对进程之间的通信会话场景中,发送通信(即在该会话开始时发起与其他进程的联系)的进程被标识为客户,在会话开始时等待联系的进程是服务器。
进程与计算机网络之间的接口
  • 进程通过一个称为套接字接口的软件接口向网络发送报文和从网络接收报文。
  • 套接字是同一台主机内应用层与运输层之间的接口。
  • 套接字是建立网络应用程序的可编程接口,因此套接字也称为应用程序和网络之间的应用程序编程接口
  • 应用程序开发者可以控制套接字在应用层端的一切,但是对该套接字的运输层端几乎没有控制权。
  • 应用程序开发者对于运输层的控制仅限于:选择运输层协议、也许能设定几个运输层参数,如最大缓存和最大报文段长度等。
进程寻址
  • 为了标识该接收进程,需要定义两种信息:主机地址、在目的主机中指定接收进程的标识符。

3、可供应用程序使用的运输服务

  • 在发送端的应用程序将报文推进该套接字,在该套接字的另一侧,运输层协议负责人从接收进程的套接字得到该报文。
  • 一个运输层协议能够为调用它的应用程序提供:可靠数据传输、吞吐量、定时和安全性。
可靠数据传输
  • 分组在计算机网络中可能丢失,分组能够使路由器中的缓存溢出,或者当分组中的某些比特损坏后可能被丢弃。
  • 如果一个协议提供了确保数据交付服务,就认为提供了可靠数据传输。
  • 运输层协议能够潜在地向应用程序提供的一个重要服务是进程到进程的可靠数据传输。
  • 当一个运输协议提供这种服务时,发送进程只要将其数据传递进套接字,就可以完全相信该数据将能无差错地到达接收进程。
吞吐量
  • 可用吞吐量就是发送进程能够向接收进程交付比特的速率。
  • 运输层协议能够以某种特定的速率提供确保的可用吞吐量。
  • 具有吞吐量要求的应用被称为带宽敏感的应用。
  • 弹性应用能够根据当时可用的带宽或多或少地利用可供使用的吞吐量。
定时
  • 运输层协议也能提供定时保证。
  • 对于非实时的应用 ,较低的时延总比较高的时延好,但对端到端的时延没有严格的约束。
安全性
  • 运输协议能够为应用程序提供一种或多种安全性服务。加密、数据完整性、端点鉴别。

4、因特网提供的运输服务

  • 计算机网络能够提供的通用运输服务。
TCP服务
  • TCP服务模型包括面向连接服务和可靠数据传输服务。
  • 面向连接服务:在应用层数据报文开始流动之前,TCP让客户和服务器互相交换运输层控制信息。这个所谓的握手过程提醒客户和服务器,让他们为大量分组的到来做好准备。在握手阶段后,一个TCP连接就在两个进程的套接字之间建立了。这条连接是双全工的,即连接双方的进程可用在此连接上同时进行报文收发。当应用程序结束发送报文时,必须拆除该连接。
  • 可靠的数据传送服务:通信进程能够依靠TCP,无差错、按适当顺序交付所有发送的数据。当应用程序的一端将字节流传进套接字时,它能够依靠TCP将相同的字节流交付给接收方的套接字,而没有字节的丢失和冗余。
UDP服务
  • UDP是一种不提供不必要服务的轻量级运输协议,它仅提供最小服务。UDP是无连接的,因此在两个进程通信前没有握手过程。
  • UDP协议并不保证该报文将到达接收进程。
  • UDP没有包括拥塞控制机制,所以UDP的发送端可以用它选定的任何速率向其下层注入数据。
因特网运输协议所不提供的服务
  • 因特网运输协议并没有提供对吞吐量或定时保证的讨论。

5、应用层协议

  • 应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文:交换的报文类型、各种报文类型的语法、字段的语义、确定一个进程何时以及如何发送报文、对报文进行响应的规则。
  • 应用层协议只是网络应用的一部分。
  • 应用层协议有公用的和私用的。

Web和HTTP

  • 最具有吸引力的就是Web的按需操作。

1、HTTP概况

  • Web的应用层协议是超文本传输协议,它是Web的核心。
  • HTTP由两个程序实现:一个客户程序和一个服务器程序。
  • 客户程序和服务器程序运行在不同的端系统中,通过交换HTTP报文进行会话。
  • HTTP定义了这些报文的结构以及客户和服务器进行报文交换的方式。
  • HTTP定义了Web客户向Web服务器请求Web页面的方式,以及服务器向客户传送Web页面的方式。
  • HTTP使用TCP作为它的支撑运输协议。
  • HTTP客户首先发起一个与服务器的TCP连接,一旦连接建立,该浏览器和服务器进程就可以通过套接字接口访问TCP。
  • 客户向它的套接字接口发送HTTP请求报文并从它的套接字接口接收HTTP响应报文。
  • 服务器从它的套接字接口接收HTTP请求报文从它的套接字接口接收HTTP响应报文。
  • HTTP协议不用担心数据丢失,也不关注TCP从网络的数据丢失和乱序保障中恢复细节。
  • 服务器向客户发送被请求的文件,而不存储任何关于该客户的状态信息。
  • 因为HTTP服务器并不保存关于客户的任何信息,所以我们说HTTP是一个无状态协议。
  • Web服务器总是打开的,具有一个固定的IP地址,且它服务于可能来自数以百万计的不同浏览器的请求。

2、非持续连接和持续连接

  • 每个请求/响应对一个单独的TCP连接发送(非持续连接),所有的请求及其响应经相同的TCP连接发送(持续连接)。
采用非持续连接的HTTP
  • 往返时间:该时间是指一个短分组从客户到服务器然后返回客户所花费的时间。
  • RTT包括分组传播时延、分组在中间路由器和交换机上的排队时延以及分组处理时延。
  • 三次握手:客户向服务器发送一个小TCP报文段,服务器用一个小TCP报文段做出确认和响应,最后客户向服务器返回确认。
采用持续连接的HTTP
  • 必须为每一个请求的对象建立和维护一个全新的连接。
  • 每一个对象经受两倍RTT的交付时延,即一个RTT用于创建TCP,另一个RTT用于请求和接收一个对象。
  • 一般来说,如果一条连接经过一定时间间隔(一个可配置的超时间间隔)仍未被使用。HTTP服务器就关闭该连接。
  • HTTP的默认模式是使用流水线的持续连接。

3、HTTP报文格式

HTTP请求报文
  • 报文是用普通的ASCII文本书写的。
  • HTTP请求报文的第一行叫做请求行,其后继的行叫首部行
  • 请求行有3个字段:方法字段、URL字段和HTTP版本字段。
  • 方法字段的值包括:GET、POST、HEAD、PUT、DELETE。
HTTP响应报文
  • 响应报文有三个部分:一个初始状态、6个首部行、实体体。
  • 状态行有3个字段:协议版本字段、状态码和相应状态信息。

4、用户与服务器的交互:cookie

  • cookie技术有4个组件:在HTTP响应报文中的一个cookie首部行、在HTTP请求报文中的一个cookie首部行、在用户端系统中保留有一个cookie文件,并由用户的浏览器进行管理、位于Web站点的一个后端数据库。
  • cookie可以用于标识一个用户。

5、Web缓存

  • Web缓存器也叫代理服务器,它是能够代表初始Web服务器来满足HTTP请求的网络实体。
  • Web缓存器既是服务器又是客户。
  • Web缓存器通常由ISP购买并安装。
  • Web缓存器可以大大减少对客户请求的响应时间。
  • Web缓存器能够大大减少一个机构的接入链路到因特网的通信量。

6、条件GET方法

  • HTTP协议有一种机制,允许缓存器证实它的对象是最新的。
  • 这种机制就是条件GET方法:请求报文使用GET方法、请求报文中包含一个“If-Modified-Since:”首部行。

因特网中的电子邮件

  • 因特网电子邮件系统有3个主要组成部分:用户代理、邮件服务器、简单邮件传输协议。
  • 邮件服务器形成了电子邮件体系结构的核心。
  • 每个接收方在其中的某个邮件服务器上有一个邮箱。
  • 一个典型的邮件发送过程是:从发送方的用户代理开始,传输到发送方的邮件服务器,再传输到接收方的邮件服务器,然后在这里被分发到接收方的邮箱中。
  • SMTP是因特网电子邮件中主要的应用层协议。

1、SMTP

  • SMTP是因特网电子邮件的核心。
  • SMTP一般不使用中间邮件服务器发送邮件,即使这两个邮件服务器位于地球的两端也是这样。
  • SMTP使用的是持续连接。

2、与HTTP的对比

  • HTTP从Web服务器向Web客户传送文件。
  • SMTP从一个邮件服务器向另一个邮件服务器传送文件。
  • 都使用持续连接。
  • HTTP是一个拉协议;SMTP是一个推协议;TCP连接是由要发送该文件的机器发起的。
  • SMTP要求每个报文采用7比特ASCII码格式;HTTP数据不受该限制。
  • 在处理一个既包含文本又包含图形的文档,HTTP把每个对象封装到它自己的HTTP响应报文中,而SMTP则把所有报文放在一个报文之中。

3、邮件报文格式

  • 每个首部必须含有一个From;首部行和一个To:首部行;一个首部也许包含一个Subject:首部行以及其他可选的首部行。

4、邮件访问协议

  • 一旦SMTP将邮件报文从Alice的邮件服务器交付给Bob的邮件服务器,该报文就被放入Bob的邮箱中。
  • SMTP用来将邮件从发送方的邮件服务器传输到接收方的邮件服务器;SMTP也用来将邮件从发送方的用户代理传送到发送方的邮件服务器。
POP3
  • POP3是一个极为简单的邮件访问协议,POP3按照三个阶段进行工作:特许、事物处理以及更新。
  • 特许阶段:用户代理发送(以明文形式)用户名和口令以鉴别用户;有两个主要命令:user 和pass
  • 事物处理阶段:用户代理取回报文;同时在这个阶段用户代理还对报文做删除标记,取消报文删除标记,以及获取邮件的统计信息;服务器对每个命令做出回答:+OK(有时后面还跟有服务器到客户的数据),被服务器用来指示前面的命令是正常的,-ERR,被服务器用来指示前面的命令出现了某些差错。
  • 更新阶段:它出现在客户发出了quit命令之后,目的是结束该POP3会话,这时,该邮件服务器删除那些被标记为删除的报文。
IMAP
  • POP3协议没有给用户提供任何创建远程文件夹并为报文指派文件夹的方法。
  • IMAP服务器把每个报文与一个文件夹联系起来。
  • IMAP协议为用户提供了创建文件夹以及将邮件从一个文件夹移动到另一个文件夹的命令。
  • IMAP协议还为用户提供了在远程文件夹中查询邮件的命令,按指定条件去查询匹配的邮件。
  • IMAP协议维护了IMAP会话的用户状态信息。
  • IMAP允许用户代理获取报文某些部分的命令。
基于Web的电子邮件
  • 使用基于Web的电子邮件,用户代理就是普通的浏览器,除了邮件服务器之间的收发邮件使用的是SMTP外,其他全是用HTTP完成。

DNS:因特网的目录服务

  • 主机的一种标识方法是用它的主机名,也可以使用所谓的IP地址进行标识。

1、DNS提供的服务

  • 域名系统DNS:一个由分层的DNS服务器实现的分布式数据库、一个使得主机能够查询分布式数据库的应用层协议;DNS服务器通常是运行BIND软件的UNIX机器,DNS协议运行在UDP之上,使用53号端口。
  • DNS是应用层协议原因是:使用客户-服务器模式运行在通信的端系统之间;在通信的端系统之间通过下面的端到端运输协议来传送DNS报文。
  • DNS不是一个直接和用户打交道的应用,DNS是为因特网上的用户应用程序以及其他软件提供一种核心功能,即将主机名转换为其背后的IP地址。
  • 因特网体系的复杂性大多数位于网络的”边缘“。
  • DNS通过采用了位于网络边缘的客户和服务器,实现了关键的名字到地址转换功能。
  • DNS通常是由其他应用层协议所使用的,包括HTTP、SMTP和FTP,将用户提供的主机名解析为IP地址。
  • 想获得的IP地址通常就缓存在一个”附件的“DNS服务器中,这有助于减少DNS的网络流量和DNS的平均时延。
  • DNS其他的重要服务:主机别名、邮件服务器别名、负载分配。

2、DNS工作机理概述

  • DNS是一个提供简单、直接的转换服务的黑盒子。
  • DNS的一种简单设计是在因特网上只使用一个DNS服务器,该服务器包含所有的映射;但是这种集中式设计的问题包括:单点故障、通信容量、远距离集中式数据库、维护。
分布式、层次数据库
  • 没有一台DNS服务器拥有因特网上所有主机的映射。
  • DNS服务器类型:根DNS服务器、顶级域DNS服务器、权威DNS服务器。
  • 本地DNS服务器并不属于该服务器的层次结构,但它对DNS层次结构是至关重要的;本地DNS服务器起着代理的作用。
  • 从请求主机到本地DNS服务器单独查询是递归的,其余的查询是迭代的。
DNS缓存
  • DNS缓存的原理:在一个请求链中,当某DNS服务器接收一个DNS回答时,它能将映射缓存在本地存储器中。

3、DNS记录和报文

  • 共同实现DNS分布式数据库的所有DNS服务器存储了资源记录(RR),RR提供了主机名到IP地址的映射。
  • 每个DNS回答报文包含了一条或多条资源记录。
  • TTL是该记录的生存时间。
DNS报文
  • DNS报文中各字段的语义:12字节(标识符、标志、问题数、回答RR数、权威RR数、附加RR数)、查询的名字和类型的字段(问题——问题的变量数)、对查询的响应中的RR(回答——资源记录的变量数)、权威服务器的记录(权威——资源纪律的变量数)、可被使用的附加”有帮助的“信息(附加信息——资源记录的变量数)。
  • 前12个字节是首部区域,第一个字段是一个16比特的数,用于标识该查询;还有4个有关数量的字段,这些字段指出了在首部后的4类数据区域出现的数量。
  • 问题区域包含着正在进行的查询信息,包括:①名字字段,包含正在被查询的主机名字;②类型字段,指出有关该名字的正被询问的问题类型。
  • 来自DNS服务器的回答中,回答区域包含了对最初的请求的名字的资源记录;每个资源记录有Type字段、Value字段和TTL字段。在回答报文的回答区域中可以包含多条RR,因此一个主机名能够有多个IP地址。
  • 权威区域包含了其他权威服务器的记录。
  • 附加区域包含了其他有帮助的记录。
在DNS数据库中插入记录
  • 注册登记机构是一个商业实体,它验证该域名的唯一性,将该域名输入DNS数据库,对提供的服务收取少量费用。
  • 针对DNS服务的攻击是分布式拒绝服务,对DNS的潜在更为有效的DDoS攻击将是向顶级域名服务器发送大量的请求,DNS能够潜在地以其他方式被攻击。

P2P文件分发

  • 使用P2P体系结构,对总是打开的基础设施服务器有最小的依赖。

1、P2P体系结构的自拓展性

  • 分发时间是所有N个对等方得到该文件所需要的时间。
  • 对于客户-服务器体系结构,随着对等方数量的增加,分发时间线性增长并且没有界。
  • 对于P2P体系结构,最小分发时间不仅总是小于客户-服务器体系结构的分发时间,并且对于任意对等方数量N,总是小于1小时,因此,具有P2P体系结构的应用程序能够自拓展。原因:对等方除了是比特的消费者外还是它们的重新分发者。

2、BitTorrent

  • BitTorrent是一种用于文件分发的流行P2P协议。
  • 参与一个特定文件分发的所有对等方的集合被称为一个洪流,在一个洪流中的对等方彼此下载等长度的文件块,典型的块长度为256KB。
  • 每个洪流具有一个基础设施节点,称为追踪器。当一个对等方加入某洪流时,它向追踪器注册自己,并周期性地通知追踪器它仍然在该洪流中,以这种方式,追踪器跟踪参与在洪流中的对等方。一个给定的洪流可能在仍和时刻具有数以百计或数以千计的对等方。
  • 最稀缺优先:针对主机没有的块在主机的邻居中决定最稀缺的块(最稀缺的块就是那些在主机的邻居中副本数量最少的块),并首先请求那些最稀缺的块。这样,最稀缺块得到更为迅速的重新发布,其目标是(大致地)均衡每个块在洪流中的副本数。
  • 对换算法:主机根据当前能够以最高速率向她提供数据的邻居,提供优先权。
  • 主机对于它的每个邻居都持续地测量接收到比特的速率,并确定以最高速率流入的4个邻居,每过十秒,主机重新计算该速率并可能修改这4个对等方的集合。这四个对等方称为疏通。
  • 分布式散列表是一种简单的数据库,其数据库记录分布在一个P2P系统的多个对等方上。

视频流和内容分发网

1、因特网视频

  • 对流式视频的最为重要的性能度量是平均端到端吞吐量。

2、HTTP流和DASH

  • 在HTTP流中,视频只是存储在HTTP服务器中作为一个普通的文件,每个文件有一个特定的URL。
  • DASH——经HTTP的动态适应流,解决了对不同客户或者对于相同客户的不同时间而言,客户可用的带宽大小有很大的不同。
  • HTTP服务器也有一个告示文件,为每个版本提供了一个URL及其比特率。

3、内容分发网

  • 内容分发网CDN管理分布在多个地理位置上的服务器,在它的服务器中存储视频的副本,并且所有试图将每个用户请求定向到一个将提供最好用户体验的CDN位置。
  • 专用CDN由内容提供商自己所拥有。
  • 第三方CDN,代表多个内容提供商分发内容。
  • CDN通常采用两种不同的服务器安置原则:深入、邀请做客。
CDN操作
  • 当用户主机中的一个浏览器指令检索一个特定的视频时,CDN必须截获该请求,以便能够:①确定此时适合用于该客户的CDN服务器集群;②将客户的请求重定向到该集群的某台服务器。
集群选择策略
  • 任何CDN部署。其核心是集群选择策略,即动态地将客户定向到CDN中的某个服务器集群或数据中心的机制。
  • 一种简单的策略是指派客户到地理上最为邻近的集群。
  • 为了基于当前流量条件为客户决定最好的集群,CDN能够对其集群和客户之间的时延和丢包性能执行周期性的实时测量。

套接字编程:生成网络应用

  • 网络应用程序有两类:一类是由协议标志中所定义的操作实现的,另一类是专用的网络应用程序。

1、UDP套接字编程

  • 目的主机的IP地址是目的地址的一部分。通过在分组中包括的目的地的IP地址,因特网中的路由器将能够通过因特网将分组选路到目的主机。但是因为一台主机可能运行许多网络应用进程,每个进程具有一个或多个套接字,所以在目的主机指定特定的套接字也是必要的,当生成一个套接字时,就为它分配一个称为端口号的标识符。

2、TCP套接字编程

  • 服务器为了能够对客户的初始接触做出反应,服务器必须准备好。这意味着:第一,与在UDP中的情况一样,TCP服务器在客户试图发起接触前必须作为进程来运行;第二,服务器程序必须具有一扇特殊的门,更精确地说是一个套接字。
  • 该套接字专门对客户进行连接的新生成的套接字,称为连接套接字。
  • 客户套接字和服务器连接套接字直接通过一根管道连接,客户进程可用向它的套接字发送任意字节,并且TCP保证服务器进程能够按发送的顺序接收每个字节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值