6 应用层

6.1 网络应用模型

6.1.1 客户\服务器(Customer/Server)模型

总是打开的主机:服务器,工作流层:

  • 处于接受请求的状态;
  • 客户机发出服务请求,等待接收结果;
  • 服务器收到请求,分析并处理。

客户程序必须知道服务器的地址,客户机上一般不需特殊硬件和操作系统,服务器必须有特定程序。服务器不必知道客户程序地址。

客户/服务器模型的主要特征:

  • 客户是服务请求方,服务器是服务提供方。如web应用、FTP、远程登录、电子邮件。
  • 网络中各计算机地位不平等,服务器可以管理权限
  • 客户机相互不直接通信
  • 可扩展性不佳

6.1.2 P2P模型

服务器性能好坏决定了整个系统的性能,大量用户请求服务,则服务器出现瓶颈。P2P的思想是整个网络中的传输内容不再被保存在中心服务器上,每个结点同时具有下载、上传功能,权利和义务大致对等。

P2P中计算机没有固定的客户机和服务器划分,任意两方称为对等方(Peer)直接相互通信。

特点在于:

  • 减轻服务器压力
  • 多个客户机之间直接共享
  • 可扩展性好
  • 网络健壮

缺点:对于单个机器资源开销大,占用总网络流量大,被ISP反对。

6.2 DNS系统

域名系统DNS(Domain Name System)是因特网的明明系统,用于将易于记忆的主机名转为IP地址。运行在UDP上,使用53端口。

分为3部分:

  • 层次域名空间
  • 域名服务器
  • 解析器

6.2.1 层次域名空间

任何主机或路由器都有一个唯一的层次结构名,即域名(Domain Name)。

域:名字空间中一个被管理的划分。还可以划分为子域、子域的子域等,形成顶级域、二级域、三级域等。每个域由标号序列组成,标号之间用.隔开。如www.baidu.com,从后往前依次为顶级域名、二级域名、三级域名。

特点:

  • 英文不分大小写
  • 标号中只能使用连字符-,不能用其他特殊符号
  • 每个标号不超过63个字符
  • 级别低的域名在左边

顶级域名分类:

  1. 国家级nTLD,如cn、hk、jp
  2. 通用gTLD,如gov,com,net,org
  3. 基础结构域名:只有一个,arpa,用于反向域名解析

6.2.2 域名服务器

域名到IP的解析是由域名服务器上的程序完成的。一个服务器有权限管辖的范围是“区”(而不是“域”),一个区中各节点必须联通。每个区有自己的权限域名服务器保存这个域中所有的映射。此外还需要有连到其他服务器的信息,以便不能解析时知道应该去哪找另一个域名服务器。

1. 根域名服务器

最高层次,知道所有顶级域名服务器的IP,总共有13个(ipv4),都是服务器集群。

2. 顶级域名服务器

管理在特定顶级域名服务器注册的所有二级域名。当收到DNS查询请求,给出相应请求。

3. 授权域名服务器(权限域名服务器)

每一个主机必须在该服务器上登记,来保证更可靠的工作。一个主机最好有至少两个。域名服务器也可以同时充当本地域名服务器和授权域名服务器。总是能够将其管辖的主机名转为IP地址。

4. 本地域名服务器:每一个ISP或组织都可拥有本地域名服务器。主机发出的DNS查询请求首先发送给该本地域名服务器。

6.2.3 域名解析过程

正向解析:域名到IP;反向解析:IP到域名。

客户端需要进行解析,通过本机DNS客户端发送UDP报文到本地域名服务器进行递归查询递归迭代结合查询方式。前者开销过大。

  • 主机向本地域名服务器的查询:递归查询
    本地主机询问的域名服务器不知道IP,则交给根域名服务器继续发送查询请求报文(替换主机查询)
  • 本地区域名服务器向根域名服务器的查询:迭代查询
    根域名服务器收到本地域名服务器的迭代请求报文,给出IP地址或告诉本地域名服务器应该向下一个顶级域名服务器进行查询。

实例:

  1. 客户机想本地域名服务器发送DNS请求报文
  2. 本地服务器收到请求查询本地缓存,没有则向根域名服务器发送请求
  3. 根域名服务器收到请求,判断该域名属于.com域,将对应顶级域名服务器IP发给本地域名服务器
  4. 本地域名服务器向顶级域名服务器dns.com发送解析请求报文
  5. 顶级域名服务器dns.com收到请求,判断域名属于的xxx.com域,将对应的授权域名服务器dns.xxx.com的IP返回给本地域名服务器。
  6. 本地域名服务器向授权域名服务器发起解析请求报文
  7. 授权域名服务器dns.xxx.com收到请求将查询结果返回本地域名服务器
  8. 本地域名服务器将内容保存到本地缓存,并返回给客户机。

域名服务器中使用高速缓存,因此一段时间后会丢失之前的信息。

6.3 文件传输协议FTP

6.3.1 FTP工作原理

提供交互式访问允许客户指明文件类型和格式,允许文件具有存取权限。屏蔽了计算机系统的细节,适合在异构网络中传送。

提供的功能:

  1. 提供不同种类主机系统之间的文件传输能力
  2. 以用户权限管理方式提供用户对远程FTP服务器文件的管理能力
  3. 以匿名FTP的方式提供公用文件共享的能力

使用TCP提供可靠传输服务。一个FTP服务器进程可为多个客户进程服务。工作步骤:

  1. 打开控制端口21,保证客户连接上
  2. 等待客户请求
  3. 启动从属进程处理客户请求,主进程和从属进程并发进行
  4. 回到等待状态

6.3.2 控制连接和数据连接

FTP工作时的两个并行TCP连接:控制连接、数据连接。

1. 控制连接

服务器监听21端口等待客户链接。建立在这个端口的连接称为控制连接,控制连接用来传输控制信息(连接请求、传送请求等),控制信息以7位ASCII格式传送,不用于传送文件。传输文件时依然保持打开并传输命令。

2. 数据连接

服务器端的控制进程收到客户端发来的传输请求,创建数据传送进程数据连接,数据连接用来连接客户端和服务器的数据传送进程。完成实际的文件传送,并在传送结束后关闭数据传送链接。

控制连接是分离的,因此称FTP的控制信息为带外(out-of-band)。若要修改服务器文件,则应该先将文件传到本地主机,修改后将副本传送到服务器。网络文件系统(NFS)允许进程打开一个远程文件,并在某个特定位置开始读写数据,实现断点续传。

6.4 电子邮件

6.4.1 电子邮件系统的组成结构

是一种异步通信。包含三个最重要的组成结构:

  • 用户代理(user agent)
    是用户和电子邮件系统的接口。至少具有撰写、显示、处理功能。通常就是一个PC上的程序,如Outlook
  • 邮件服务器
    电子邮件系统的核心,收发邮件并报告传送情况。
  • 协议(SMTP、POP3、IMAP等)
    SMTP属于发送协议,采用“Push”;POP3属于读取协议,采用“Pull”。

电子邮件收发过程:

  1. 发信人调用用户代理,撰写和编辑邮件。用户代理使用SMTP将邮件传送给邮件服务器
  2. 发送方邮件服务器将邮件放入邮件缓存队列,等待发送
  3. 运行在发送方服务器的SMTP客户进程发现邮件缓存中有带发送的邮件,则向运行在接收方邮件服务器的SMTP服务器进程发起建立TCP
  4. TCP建立后进行发送,发送完毕后关闭连接
  5. 运行在接收方邮件服务器的SMTP服务器进程收到邮件,放入收信人的用户邮箱,等待读取。
  6. 收信人调用用户代理,使用POP3或IMAP将自己的邮件从接收方服务器的用户邮箱取回。

6.4.2 电子邮件格式、MIME

1.电子邮件格式

RFC 822 规定了邮件的首部格式,内容由用户自定。

首部关键字有:

  • From:发送方地址
  • To:必须,一个或多个收件人
  • Subject:可选,邮件主题

2.MIME(多用途网际邮件扩充, Multipurpose Internet Mail Extensions)

SMTP只能传送ASCII,对于其他语言需要进行扩充,是SMTP的上层协议,即MIME邮件可在SMTP中传送。有三部分:

  • 5个新的邮件首部字段,包括MIME版本、内容描述、内容标识、内容传送编码、内容类型。
  • 邮件内容格式的标准化
  • 传送编码,保证内容格式转换,不会被邮件系统改变

6.4.3 SMTP和POP3

1.SMTP

TCP连接,端口25。三个阶段如下:

  1. 建立连接
    SMTP客户每隔一段时间对邮件缓存进行扫描,发现邮件则使用25端口和服务器建立TCP连接,接收方SMTP服务器发出 220 service ready ,客户向服务器发送HELOEHLO命令,附上发送方主机名。
  2. 邮件传送
    此时发送方的MAIL命令后才有发送方的地址,格式为:MAIL FROM: <发件人地址>。当SMTP准备好接收,则回答250 OK,客户端发送多个RCPT(recipient),格式为:RCPT TO: <收件人地址> 每发送一个RCPT都应该有相应信息从SMTP返回,如250 OK505 No such user here 客户端之后使用DATA命令表示开始传输邮件内容。正常情况:服务器返回354 Start mail input: end with <CRLF>.<CRLF><CRLF>是回车换行。用<CRLF>.<CRLF>表示邮件内容结束。
  3. 连接释放
    SMTP客户发送QUIT,服务器返回221表示同意释放。

2.POP3

邮局协议(Post Office Protocol,POP)简单而功能有限,使用Pull的方式,每当用户需要读取时,用户代理才向服务器发出请求。使用110端口,和TCP协议。

两种工作方式:

  • 下载并保留
  • 下载并删除

不同xxx.com的电子邮件服务器之间是通过HTTP协议,而不同邮件服务器之间才使用SMTP。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 定义不同主机中的多个应用进程之间的通信规则和协议 基于客户服务器方式,客户是服务请求方,服务器是服务提供方 域名系...
    蕴重Liu阅读 581评论 0 0
  • 域名系统DNS DNS将域名转为IP地址,IP地址对应单台计算机。 一个服务器负责的范围叫做“区”。每个区设置相应...
    恒星的背影阅读 88评论 0 0
  • 1、域名系统 DNS(Domai Name System)是因特网使用的命名系统,用于把便于人们使用的机器名字转换...
    冰河winner阅读 762评论 0 1
  • 第6章 应用层 6.1 域名系统DNS 6.1.1 域名系统概述 许多应用层软件经常直接使用域名系统DNS ,但计...
    辘轳鹿鹿阅读 771评论 0 0
  • 一、运输层协议 网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。传输层提供了进程间的逻辑通...
    MachinePlay阅读 831评论 0 0