应用层--计算机网络自顶向下笔记(二)

  • 应用层原理
    • 主流体系结构
    • 进程通信
    • 运输服务
  • HTTP
    • 概况
    • 持续连接
    • 报文格式
    • cookie
    • Web缓存
  • FTP
  • 电子邮件
    • SMTP
    • 邮件访问协议
      • POP3
      • IMAP
      • 基于Web
  • DNS
  • P2P
    • 文件分发
    • 分布式散列表

应用层原理

主流体系结构

  • 网络应用程序的主流体系结构:客户-服务器体系结构对等(P2P)体系结构
    1. CS特点:客户之间不直接通信,服务器有固定的、公开的地址。
    2. P2P特点:自扩展性。

进程通信

  • 进行通信的是进程(process)。
  • 进程与计算机网络之间的接口:套接字(socket),也称作应用程序编程接口(API)。
  • 进程通过IP地址(IP address)和端口号(port number)标识。

运输服务

  • 提供的服务:可靠数据传输安全性,未提供的服务:吞吐量、定时。
  • TCP:面向连接、可靠的数据传送。
  • UDP:无连接、不可靠的传送。
  • SSL:安全套接字层(Secure Sockets Layer),在应用层上加强TCP,提供进程到进程的安全性服务,包括加密,数据完整性,端点鉴别。
  • 应用层协议使用的传输层协议。

HTTP

概况

  • 超文本传输协议(HyperText Transfer Protocal),是一个无状态协议,服务器向客户端发送请求的文件,不储存客户信息。
  • Web页面:由对象组成,包含一个HTML基本文件对象和几个引用对象。

持续连接

  • 非持续连接:每个TCP连接只传输一个请求报文和一个响应报文,在服务器发送一个对象后关闭。
  • 持续连接:服务器发送响应之后保持TCP连接打开。
  • HTTP默认使用带流水线的持续连接。流水线:一个接一个发送请求,不必等待未决请求。

报文格式

  • 请求报文:请求行+首部行+空行+实体体。
GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
Connection: close
User-agent: Mozilla/5.0
Accept-language: fr

  • 响应报文:状态航+首部行+空行+实体体。
HTTP/1.1 200 OK
Connection: close
Date: Tue, 09 Aug 2011 15:44:04 GMT
Server: Apache/2.2.3
Last-Modified:Tue, 09 Aug 2011 15:11:03 GMT
Content-Length: 6821
Content-Type: text/html

(data)

  • 用于对用户进行跟踪。
  • 需要4个组件:响应报文中的set-cookie首部,请求报文中的cookie首部,客户端保留的cookie文件,服务器的后端数据库。

Web缓存

  • Web缓存(Web cache)也叫代理服务器(proxy server),能够代表初始Web服务器满足HTTP请求。
  • 过程:
    1. 浏览器建立Web缓存器的TCP连接,向缓存器发送HTTP请求。
    2. Web缓存器检查是否本地存储了该副本对象。有,则向浏览器用HTTP响应报文返回对象。
    3. 若没有,则建立与该对象初始服务器的TCP连接,通过向初始服务器发送HTTP请求接受HTTP响应。
    4. Web缓存器接收到该对象后,在本地存储一份副本,并向客户浏览器用HTTP响应发送该副本。
  • 优点:
    1. 大大减少对客户请求的响应时间。
    2. 减少一个机构到因特网的通信量。
  • 更新:条件GET方法更新缓存。
    1. 代理缓存器代表一个浏览器使用GET方法,向Web服务器发送请求报文。
    2. Web服务器响应,响应报文中带有Last-Modified:首部行。
    3. 一段时间之后,另一个用户请求同一个对象,因为可能已被修改,发送条件GET请求报文,请求报文带有If-Modified-Since:首部行。
    4. 如果在If-Modified-Since的时间之后未修改,Web服务器发送响应报文304 Not Modified,不包含实体体。否则同2发送对象。

FTP

  • FTP使用两个并行的TCP连接传输文件:
    1. 控制连接:在两个主机之间传输控制信息,如用户标识、口令、改变远程目录、存放、获取等。
    2. 数据连接:用于实际发送一个文件。
  • 控制连接贯穿整个用户会话期间,但是会话期间的每一次文件传输都需要建立一个数据连接。

电子邮件

  • 主要组成部分:用户代理(user agent),邮件服务器(mail server),简单邮件传输协议(SMTP,Simple Mail Transfer Protocol)。

SMTP

  • SMTP一般不使用中间邮件服务器发送邮件。
  • 发送报文的过程:
    1. A调用用户代理程序写报文,提供B地址,只是用户代理发送报文。
    2. A的用户代理发送邮件到A的邮件服务器,报文放在报文队列中。
    3. A的邮件服务器上的SMTP客户端发现队列中的报文,建立到B的邮件服务器上的SMTP服务器的TCP连接。
    4. 经过SMTP握手后,通过TCP连接发送报文。
    5. B的邮件服务器上的SMTP服务器接收报文,放入B的邮箱。
    6. B调用用户代理阅读报文。
  • 与HTTP的异同:
    1. 持续HTTP和SMTP都是持续连接。
    2. SMTP是推协议,由发送方发起;HTTP是拉协议,有接收方发起。
    3. SMTP邮件的所有部分只能采用7比特的ASCII编码,HTTP不收这种限制。
    4. 对于包含文本和图形(或者其他媒体类型)的文档,SMTP把所有对象放在一个报文里,HTTP每个对象在各自的相应报文里。

邮件访问协议

  • SMTP协议是推协议,无法获取文件。所以产生访问协议第三版邮局协议(Post Office Protocol-Version 3, POP3),因特网邮件访问协议(Internet Mail Access Protocol, IMAP),后者更加复杂。

POP3

  • 分三阶段工作:特许(鉴别用户),事务处理(取回报文,删除等),更新(quit命令之后,结束会话,删除标记报文)。
  • 使用POP3的用户代理可配置为“下载并删除”、“下载并保留”。
  • 会话中除了标记删除的报文不包括状态信息。

IMAP

  • 可在远程创建文件夹并关联报文。
  • 会话包括状态信息,如文件夹的名字及关联。
  • 允许用户代理获取报文组件(报文首部,部分报文),节省带宽。

基于Web

  • 使用HTTP在浏览器和邮件服务器之间发送和接受邮件,但是邮件服务器之间使用SMTP发送接收邮件。

DNS

  • 提供的服务:

    1. 主机名转到IP地址
    2. 主机别名:获得主机别名对应的规范主机名和IP地址。
    3. 邮件服务器别名:允许一个公司的邮件服务器和Web服务器使用相同的主机名(别名)。
    4. 负载分配:对于有多个端系统的服务器,DNS循环响应这些地址,分配负载。
  • DNS是一个分布式、层次数据库。

    1. 根DNS服务器
    2. 顶级域DNS服务器(Top-Level Domain, TLD):负责顶级域名如com,org,以及国家顶级域名uk,fr。
    3. 权威DNS服务器:一个组织提供可供公网访问的DNS记录,放在自己的权威DNS服务器或者某个服务商提供的DNS服务器上。
    4. 本地DNS服务器
  • 工作过程:主机cis.poly.edn想知道主机gaia.cs.umass.edu的IP地址。其中主机和本地DNS服务器之间为递归查询,本地服务器以自己的名义获得映射,其余为迭代查询,所有的查询都是返回自己。

  • DNS缓存:类似Web缓存,一段时间(通常两天)丢弃缓存信息。

  • DNS记录:一个四元组(Name,Value,Type,TTL)。TTL为记录的生存时间,类型有以下四种。
    1. Type=A:Name主机名,Value主机名对应的IP地址。如(relay1.bar.foo.com,145037.93.126,A)。
    2. Type=NS:Name域,Value知道如何获得该域中主机IP地址的权威DNS服务器的主机名。如(foo.com,dns.foo.com,NS)。
    3. Type=CNAME:Name别名,Value规范主机名。如(foo.com,relay1.bar.foo.com,CNAME)。
    4. Type=MX:Name别名,Value邮件服务器的规范主机名。如(foo.com,mail.bar.foo.com,MX)。
    5. 通过MX记录一个公司的邮件服务器可以和其他服务器同别名。获得邮件服务器的规范主机名,请求MX记录;获得其他服务器的规范主机名,请求CNAME记录。

P2P

文件分发

  • P2P分发具有自扩展性,最小分发时间总小于CS体系。这是由于:对等方不仅是比特的消费者,还是重新分发者。
  • BitTorrent是一种P2P文件共享协议,参与一个文件分发的所有对等方集合称为洪流(torrent),对等方彼此下载文件(chunk)。每个洪流具有一个基础结点,用来注册对等方,称为追踪器(tracker)。原理如下:
    1. 加入洪流之后,从追踪器获得对等方的子集,与这些对等方创建并行*TCP连接,成功创建连接的对等方称为邻近对等方*。
    2. 周期性的询问邻近对等方具有的块列表,请求还没有的块,并响应邻居的请求。
    3. 使用最稀缺优先请求没有的块:在邻居中请求副本数量最少的块,均衡每个块在洪流中的副本数量。
    4. 使用对换算法响应请求:优先响应能以最高速率向自己提供数据的邻居,每隔30s随机选择一个邻居向其发送块,除了速率最高的数个对等方(称作疏通unchoked)和试探对等方,自己不会响应他们的请求,最终找到彼此协调的速率上载。

分布式散列表

  • 这样一种分布式数据库被称为分布式散列表(Distributed Hash Table,DHT)。
    • 每个对等方保持总体的一个小子集的键值对。
    • 允许任何对等方用键定位拥有该键值对的对等方,返回查询结果。
    • 任何对等方也允许插入新的键值对。
  • 一种设计方法:
    1. 为每个对等方分配一个标识符[0,2^n-1]。
    2. 使用散列函数把每个键映射到之前范围的整数。
    3. 键值对存储在标识符最近邻该键的对等方上。
    4. 由于确定最近邻对等方需要遍历所有对等方,可以设计环形DHT。每个对等方只需要知道直接前任、直接后继对等方。该环形DHT也可以带捷径。
    5. 需要周期ping前任和后继,判断是否存活。增加和删除对等方类似于双向链表的增删。
  • DHT可以用在BitTorrent中的分布式跟踪器。
    • 键:洪流标识符。
    • 值:参与洪流的所有对等方的IP。

你可能感兴趣的:(网络)