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

1.文本传输协议:FTP

​ 在一个典型的FTP对话中,用户使用一台主机向一台远程主机传输(或接收)文件。为了使能够访问它的远程账户,用户必须提供一个用户标识和口令。如下图所示:

计算机网络(自顶向下方法)笔记-应用层03_第1张图片

用户通过一个FTP用户代理与FTP进行交互。用户首先提供远程主机的主机名,使本机的FTP客户进程创建一个到远程主机FTP服务器的TCP连接。然后再提供用户标识和口令,这是作为FTP命令的一部分在TCP连接上传送。一旦服务器授权,用户就可以将本地文件复制到远程文件系统。

FTP与HTTP都是文件传输协议,运行在TCP上,但是二者也有区别:

  1. FTP使用了两个并行的TCP连接来传输文件,分别是控制连接数据连接,如下图所示:

计算机网络(自顶向下方法)笔记-应用层03_第2张图片

  • 控制连接用于在两个主机间传输控制信息,比如用户标识,改变远程目录的命令,存和取的命令等。因为FTP协议使用独立的控制连接,又称FTP的控制信息是带外传送的。
  • 数据连接用于实际发送文件

对于FTP传输而言,控制连接在整个用户会话期间一直存在,但是会话中的每一次文件传输都要建立一个新的数据连接(非持续)

  1. FTP服务器必须在整个会话期间保留用户的状态。不同于HTTP的无状态,随着用户在远程目录树上徘徊,FTP服务器必须追踪用户在远程目录树上的当前位置,这也大大限制了FTP同时维持的会话数。

1.1 FTP中的一些常见命令

  • USER username:用于向服务器传送用户标识
  • PASS password:用于向服务器发送用户口令
  • LIST:用于请求服务器回送当前远程目录中的文件列表,该列表经一个新建且非持续的数据连接传送,不是在控制TCP连接上传送
  • RETR filename:用于从远程主机当前目录检索文件,即get
  • STOR filename:用于在远程主机的当前目录上存放文件,即put

2.因特网中的电子邮件

​ 因特网电子邮件系统由3个主要部分组成:用户代理,邮件服务器和简单邮件传输协议(SMTP)。如下图所示:

计算机网络(自顶向下方法)笔记-应用层03_第3张图片

以用户A向用户B发送邮件为例:

  • 用户代理:允许用户阅读,回复,转发,保存和撰写报文,比如Outlook。A写完邮件后,邮件代理就向邮箱服务器发送邮件,邮件则放在服务器的外在报文队列中
  • 邮件服务器:电子邮件体现结构的核心。从A的用户代理开始,传输到A的邮件服务器,再到B的邮件服务器,然后在服务器中分发到B的邮箱中。当B要读邮件时,包含B的邮箱的服务器通过用户名和口令鉴别B的身份。如果A的服务器不能将邮件交给B的服务器,A的服务器就在报文队列中保持该报文并在以后尝试发送,直到长时间失败就进行删除,并告知发送方。
  • SMTP:使用TCP进行可靠数据传输,每台邮件服务器即运行SMTP的客户端,也运行服务端。

2.1 SMTP

通过A向B发送简单的ASCII报文来描述SMTP的基本操作:

  1. A调用它的邮件代理程序并提供B的邮件地址,写好报文,然后指示用户代理发送。
  2. A的用户代理把报文给它的邮件服务器,报文被放入报文队列。
  3. 运行在A的邮件服务器上的SMTP客户端发现了队列中的这个报文,就在25号端口创建一个到B的邮件服务器上的SMTP服务器的TCP连接。
  4. 经过初始的SMTP握手后(SMTP客户端指示A的邮件地址和B的邮件地址),SMTP客户端通过该连接发送报文。
  5. 在B的邮件服务器上的SMTP服务器端接收该报文,且邮件服务器将该报文放入B的邮箱中。
  6. B调用自己的用户代理对报文进行查看。

计算机网络(自顶向下方法)笔记-应用层03_第4张图片

SMTP一般不使用中间邮件服务器,即A在中国,B在美国,TCP连接也是直接相连的。

2.1.1 SMTP与HTTP的对比

  • HTTP从Web服务器(一般为浏览器)向Web客户端传送文件;SMTP从一个邮件服务器向另一个邮件服务器上传送文件
  • HTTP和SMTP都使用持续连接
  • HTTP是一个拉协议,即有人在Web服务器上装信息,用户则使用该协议从服务器上拉取信息,TCP连接由需要接收文件的机器发起;SMTP是一个推协议,即发送邮件服务器把文件推向接收服务器,TCP连接由需要发送文件的机器发起。
  • SMTP要求每个报文使用7比特的ASCII码格式;HTTP没有该限制。
  • HTTP把每个对象封装到自己的响应报文中;SMTP则把所有报文对象放在一个报文中。

2.2 邮件访问协议

​ 通过A的用户代理和B的邮件服务器间没有直接的SMTP对话。如图所示:

计算机网络(自顶向下方法)笔记-应用层03_第5张图片

A的用户代理使用SMTP将报文推入它的邮件服务器,邮件服务器再用SMTP将邮件中继到B的邮件服务器。值得注意的是,B的用户代理不能使用SMTP取回报文,因为取报文是拉操作,而SMTP是推协议。这时引入特殊的邮件访问协议,如第三版的邮局协议(POP3),因特网邮件访问协议(IMAP)和HTTP。

2.2.1 POP3

​ POP3是一个极为简单的邮件访问协议。当用户代理打开一个到邮件服务器端口110上的TCP连接后,POP3开始工作。POP3按三个阶段进行工作:特许,事务处理和更新:

  • 特许阶段:用户代理发送用户名和口令以鉴别用户。
  • 事务处理阶段:用户代理取回报文,同时用户代理还对报文做删除标记和取消报文删除标记,以及获取邮件的统计信息。使用POP3的用户代理通过被用户配置为下载并删除或下载并保留,如果设置为下载并删除,则无法在其他设备上再次接收该邮件。
  • 更新阶段:该阶段出现在用户发出quit命令后,目的是结束该POP3会话,此时,邮件服务器删除被标记为删除的报文。

POP3服务器会保留一些状态信息,比如记录哪些报文被标记为删除,但是POP3服务器不会在POP3会话中携带状态信息。

2.2.2 IMAP

​ 使用远程服务器上的层级文件夹,可以使任何一台机器对所有报文进行访问。而POP3是没有提供该方法的,与POP3不同:

  1. IMAP服务器可以把每个报文与一个文件夹联系起来,为用户提供了创建文件夹以及将邮件从一个文件夹移到另一个文件夹的命令,并且还提供了在远程文件夹查邮件的命令。
  2. IMAP允许用户代理获取报文组件的命令,比如当用户代理不想取回所有邮件时,它可以只读报文的首部。

2.2.3 基于Web的电子邮件

​ 使用该服务时,用户代理就是普通的浏览器。A用户与它的邮件服务器间的通信通过HTTP进行,B拉取邮件时不再使用POP3或IMAP了,而是使用HTTP,但是邮件服务器间的通信还是用SMTP。

3.DNS:因特网的目录服务

​ 主机和人一样有着多种方式进行标识。一种标识方法是用主机名(如:www.baidu.com),但是主机名几乎没提供主机在因特网中的位置信息,并且路由器难以处理主机名的字母和数字。所以主机也可用IP地址标识,IP地址有层次结构,当从左向右扫描它时会得到越来越具体的关于主机位于因特网何处的信息。

3.1 DNS提供的服务

​ 人更喜欢主机名标识,而路由器喜欢IP地址,所以需要能将主机名转换为IP地址的目录服务,这就是**域名系统(DNS)**的主要任务。

DNS是:

  • 一个由分层的DNS服务器实现的分布式数据库。
  • 一个使主机能查询分布式数据库的应用层协议,该协议运行在UDP上,使用的是53号端口。

DNS通常由其他应用层协议所使用,比如当浏览器请求www.psj.com/index.html时,为了使用户主机能够将该HTTP请求发送到Web服务器上,必须有www.psj.com的IP地址。方法如下:

  1. 浏览器从URL中抽出主机名www.psj.com,并将这个主机名传给在主机上运行的DNS应用客户端。
  2. DNS客户端向DNS服务器发送一个包含主机名的请求。
  3. DNS客户端收到回答报文,其中包含主机名的IP地址。
  4. 浏览器接收到来自DNS的IP地址,向该地址80端口的HTTP服务器进程发起一个TCP连接。

DNS还提供其他主要服务:

  • 主机别名:有复杂主机名的主机能拥有多个别名。
  • 邮件服务器别名
  • 负载分配:一些繁忙的站点被分布在多台服务器上,每个服务器有不同的IP地址,即一个主机名对应一个IP地址集合。DNS数据库存储这些集合。客户通常向IP地址排前面的服务器发送请求,所以DNS就在这些服务器间分配了负载。

3.2 DNS工作机理概述

​ 基本的工作流程已在上一小节中介绍,注意所有DNS请求和回答报文使用UDP数据报经53号端口发送。如果DNS只使用一个DNS服务器,该服务器有所有的映射,尽管简单,但是有着许多的问题,简要说就是没有可扩展性

  • 单点故障:该服务器崩溃,整个因特网瘫痪。
  • 通信容量:要为上亿台主机产生的请求报文服务。
  • 远距离的集中式数据库:单个服务器无法邻近查询客户。
  • 维护:单个服务器必须为所有主机保留记录,每添加一台新主机就要进行更新。

3.2.1 分布式、层次数据库

​ 如图所示:

计算机网络(自顶向下方法)笔记-应用层03_第6张图片

为处理扩展性问题,DNS使用大量以层次方式组织,分布在世界范围内的DNS服务器,有3种类型服务器:根DNS服务器,顶级域(TLD)DNS服务器和权威DNS服务器

  • 根DNS服务器:每台服务器实际上是一个冗余服务器的网络,以提供安全性和可靠性。
  • 顶级域(TLD)服务器:负责顶级域名如com,org,edu等和所有国家的顶域uk,fr,jp等。
  • 权威DNS服务器:具有公共可访问主机(如Web服务器,邮件服务器)的每个组织机构必须提供公共可访问的DNS记录,这些记录将主机名映射为IP地址。权威DNS服务器则收藏了这些记录。

还有一种重要的DNS:本地DNS服务器,严格来说它并不属于该服务器的层次结构。每个ISP(如一所大学,一个公司)都有一台本地DNS服务器。当主机发出DNS请求时,该请求被发往本地DNS服务器,它起着代理的作用,并将该请求转发到DNS服务器层次结构中。如图所示:

计算机网络(自顶向下方法)笔记-应用层03_第7张图片

假设A主机cis.poly.edu想知道B主机gaia.cs.umass.edu的IP地址。A主机所在ISP的本地DNS服务器为dns.poly.edu,B主机的权威DNS服务器为dns.umass.edu。

其中,步骤③是根域名服务器注意到报文中要查询主机名gain.cs.umass.edu的edu前缀,然后它向本地DNS服务器返回负责edu的TLD的IP地址列表。步骤⑤是其中一台TLD服务器注意到umass.edu前缀,并用权威DNS服务器的IP地址进行响应。步骤⑦则是B的权威DNS服务器返回B主机的IP地址进行响应。

整个过程一共发送了8份DNS报文,后面介绍的DNS缓存可减少这种查询流。

图中的例子利用了递归查询和迭代查询。A主机发给本地DNS的查询是递归查询,因为该查询请求是以本地DNS自己名义获取映射。后面3个查询是迭代查询,因为所有回答都是直接返回给本地DNS服务器。

在第二种查询中,所有的查询都是递归的,实际中,通常为第一种查询。第二种查询如下图所示:

计算机网络(自顶向下方法)笔记-应用层03_第8张图片

3.2.2 DNS缓存

​ 为改善时延性能并减少传输的DNS报文数,DNS广泛使用了缓存技术。当DNS服务器接收到一个DNS回答时,它能将该信息缓存到本地存储器,方便下次查询。由于主机和主机名的IP地址映射不是永久的,DNS服务器在一段时间后将丢弃缓存信息。本地服务器也能缓存TLD服务器的IP地址,因而允许本地DNS绕过根DNS服务器。

3.3 DNS记录和报文

​ 实现DNS分布式数据库的所有DNS服务器存储了资源记录(RR),RR提供了主机名到IP地址的映射。每个DNS回答报文包含了一条或多条资源记录。资源记录是一个包含了下列字段的4元组:(Name, Value, Type, TTL)

  • TTL:该记录的生存时间,决定了资源记录应当从缓存中删除的时间。

  • Name,Value:这两个的值取决于Type:

    1. 如果Type=A,则Name是主机名,Value是该主机名对应的IP地址。
    2. 如果Type=NS,则Name是域(如foo.com),Value是知道如何获得该域名中主机IP地址的权威DNS服务器(如dns.foo.com)的主机名。
    3. 如果Type=CNAME,则Value是别名为Name的主机对应的规范主机名。
    4. 如果Type=MX,则Value是个别名为Name的邮件服务器的规范主机名。要获得其他服务器的规范主机名,DNS客户应当请求CNAME记录。

3.3.1 DNS报文

​ DNS只有DNS查询报文和回答报文,并且这两种报文有着相同的格式。DNS报文中各字段的语义如下图所示:

计算机网络(自顶向下方法)笔记-应用层03_第9张图片

  • 前12个字节是首部区域。标识符是一个16比特的数,用于标识该查询,以便让客户用它来匹配发送请求和接受到的回答。标志字段有若干标志,比如查询/回答标志位,希望递归标志位等。还有4个有关数量的字段,这些字段指出在首部后的4类数据区域出现的数量。
  • 问题区域包含正在进行的查询信息,包括:名字字段和类型字段。
  • 回答区域包含了对最初请求的名字的资源记录。在回答报文的回答区域可以包含多条RR,所以一个主机名能够有多个IP地址。
  • 权威区域包含了其他权威服务器的记录。
  • 附加区域包含了其他有帮助的记录,比如邮件服务器的规范主机名等。

3.3.2 在DNS数据库中插入记录

​ 当你向某些注册登记机构注册域名psj.com时,需要向该机构提供你的基本和辅助权威DNS服务器的名字和IP地址。对这两个权威DNS服务器的每一个,该机构确保将一个类型NS和一个类型A的记录输入TLD服务器。

4.P2P应用

​ 之前描述的应用如Web,电子邮件和DNS都采取了客户-服务器体系结构,极大地依赖基础设施服务器。而使用P2P体系结构,总是对打开的基础设施服务器有最小(或者没有)依赖。成对间歇连接的主机(称为对等方)彼此间直接通信,不为服务提供商所拥有。

4.1 P2P体系结构的扩展性

​ 考虑从单一服务器向大量主机(称为对等方)分发一个大文件的应用。在客户-服务器文件分发中,该服务器必须向每个对等方发送该文件的一个副本,服务器承受了极大的负担,且消耗了大量的服务器带宽。在P2P文件分发中,每个对等方能够重新分发它所有的该文件的任何部分,从而在分发过程中协助该服务器,即对等方除了是比特的消费者还是它们的重新分发者,这也使得P2P体系结构的应用程序能够是自扩展的。

你可能感兴趣的:(读书笔记,计算机网络)