(二)计网五层模型--应用层篇

在上一篇(一)计网五层模型概述中粗略的描述了计算机网络五层模型的划分以及各层之间的功能。尽管我们还没有讨论过这些通信服务是如何工作的,但是我们对计算机网络提供通信服务的过程已经有了了解。计算机网络理所应当为我们提供更加便捷的服务,如果不能设计出任何有用的应用,那么也就失去设计网络协议的必要了。

应用层协议原理

在应用层协议上,每一个协议都是为了解决某一类应用问题。应用层在其他下层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议。此外,还负责协调各个应用程序间的工作。

网络应用程序体系结构

网络应用程序的核心是能够运行在不同的端系统并且通过网络彼此通信,网络应用程序由成对的进程组成,例如,在web应用程序中,有两个互相通信的不同的应用程序:一个运行在用户端的浏览器程序上,另一个运行在web服务器主机上的web服务器程序。在每对通信进程中,通常将发起与其他进程的联系的进程标识为客户(client),在通信中等待联系的进程标识为服务器(server)。

  • 客户:1、与服务器通信,使用服务器提供的服务;2、间歇性接入网络;3、可能使用动态IP地址;4、不会与其他客户机直接通信
  • 服务器:1、7*24小时不间断地工作,具备极高的稳定性;2、拥有永久性访问的地址/域名;3、具有可拓展性。

应当注意的是,应用的许多协议都是基于客户-服务器体系结构(client-server architecture),即使是P2P体系结构(peer to peer architecture)也是一种特殊的客户-服务器方式。

a)客户-服务器体系结构                                                                                                b)P2P体系结构

在客户-服务器体系结构中,有一个总是打开的主机称为服务器,客户是服务请求方,服务器是服务提供方。利用客户-服务器方式,客户相互之间不直接通信。在该体系结构中服务器是具有固定的、周知的地址,该地址称为IP地址(关于IP地址的内容将在网络层篇中讨论)。

而在一个P2P体系结构中,应用程序在主机对之间使用直接通信,因此这些对等的主机也叫作对等节点或对等方。目前,许多流量密集型应用都是P2P体系结构,包括文件共享(如BitTorrent、Sync)、对等协助下载加速器(如所熟知的迅雷)、IPTV(如迅雷看看)。

特点:1、 没用永远在线的服务器;2、 任意端系统/节点之间可以直接通宵;3、 节点间歇性接入网络;4、 节点可能改变IP地址;

此外某些应用具有混合的体系结构,兼具有客户-服务器和P2P的性质。例如许多即时讯息应用,服务器用于跟踪用户的ip地址,但用户到用户之间的报文在用户主机之间直接发送。

进程通信

一个进程可以被看作是运行在端系统中的一个程序。当在两个不同的端系统上的进程需要通信时,通过计算机网络交换信息(报文)而相互通信。下图表示了进程是如何通过使用7层协议栈的应用层相互通信。


应用层为用户提供的服务和协议包括文件服务、目录服务、文件传输服务(FTP)、远程登录服务(Telnet)、电子邮件服务(E-mail)、打印服务、安全服务、网络管理服务、数据库服务等。下面来讨论几种常用的应用。

域名系统DNS

域名系统DNS(Domain Name System)作为域名和IP地址相互映射的数据库,能够使用户更方便的访问互联网,而不用去记住IP地址。域名用来表示一个单位、机构或可以利用个人在Internet上的确定的名称或位置。域名是惟一的。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。

www.csdn.net
常见域名分为三个部分,用“.”(点)分割。
     -域名类型     标识此域名的类型(com/net/org/edu/gov等)

     -网络名     域名称

     -主机名  该域中的某台主机名称

关于域名的解析过程:

  1. 主机向本地域名服务器的查询一般采用递归查询(recursive query)。
  2. 本地域名服务器向根域名服务器的查询采用迭代方式(iterative query)。

文件传输协议

文件传输协议FTP(File Transfer Protocol)用于提供文件传送的一些基本服务,使用TCP可靠的运输服务。FTP使用客户服务器方式。


工作流程如下:

  1. 客户端通过TCP三次握手与服务器的21号端口建立控制连接
  2. 服务器对客户端进行身份验证,授予客户端相应的操作权限
  3. 客户端请求数据传输建立数据连接(端口号20)
  4. 数据传输完成后断开数据连接
  5. 退出FTP服务器断开控制连接

万维网WWW

万维网用链接的方法访问另一个站点,从而主动地按需获取信息。客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所需的万维网文档。


怎样标志分布在因特网上的万维网文档?

统一资源定位符URL

每一个文档在整个因特网的范围内具有唯一的标识符URL(Uniform Resource Locator)。URL的一般形式由以下组成:

URL=<传输协议>://<服务>.<域名>.<(目录)文件名>

  • 传输协议一般是http(Hypertext Transfer Protocol超文本传输协议),现在较为安全的是https,其次还有就是ftp。
  • 服务指的是“www”。
  • 域名=标识串+网站类型:其中标识串如:baidu;网站类型如com;即baidu.com。
  • 目录的出现是在网站“庞大”时–在域名和文件名间存在的一层或多层目录名。文件名精确地指定了要访问的Web页面;通常未指定文件名时,处理请求的Web服务器会根据服务器本身的配置查找默认文件名,如index.html、default.html,etc。

用什么样的协议来实现万维网上的各种链接?

超文本传输协议HTTP

HTTP由两个程序实现:一个客户程序和一个服务器程序。分别运行在不同的端系统中,通过交换HTTP报文进行会话。HTTP定义了Web客户向Web服务器请求Web页面的方式,以及服务器向客户传送Web页面的方式。


HTTP使用了面向连接的TCP作为运输层协议,保证了数据的可靠传输。但是,HTTP协议本身是无连接的。虽然HTTP使用了TCP连接,但通信双方在交换HTTP报文之前不需要先建立HTTP连接。

HTTP是无状态的,服务器并不保存关于客户的任何信息。假如某个客户在短短几秒中内两次请求同一个对象,服务器并不因为刚刚为该客户提供了就不再做出反应,而是重新发送该对象,服务器并不记得曾经访问过这个客户,也不记得为该客户曾经服务过多少次。

我们在点击鼠标链接至某个万维网文档时,HTTP协议首先要和服务器建立TCP连接。这涉及一次“三次握手”过程,客户向服务器发送一个小TCP报文段,服务器用一个小TCP报文段做出确认和相应,最后,客户向服务器返回确认。粗略计算,总的响应时间就是两个往返时间RTT(Round-Trip Time)加上服务器传输HTML文件的时间。


HTTP连接处理

1. 采用非持续连接


HTTP事务需要按顺序进行传输,等待服务端完成处理并回传。

有两个缺点:
①、TCP性能时延会不断叠加;

②、在请求处理完成之前,客户端无法对结果进行提前展示,只能被动等待;

2. 采用持续连接


持久连接有两种方式,分别为HTTP/1.0+的“Keep-alive”连接,以及HTTP/1.1的“persistent”连接。
Keep-alive:该首部只是请求将连接保持在活跃状态,客户端和服务端可以随时关闭空闲的Keep-alive连接。
Persistent:该首部默认情况下是激活的,除非特别指明,否则HTTP/1.1假定所有连接都是持久的。

优点:大大减少了连接的建立以及关闭时延。

HTTP报文结构

     

HTTP请求报文由3部分组成:开始行+首部头+实体主体

请求方法有多种,各个方法的解释如下:

GET            请求获取Request-URI所标识的资源
POST          在Request-URI所标识的资源后附加新的数据
HEAD         请求获取由Request-URI所标识的资源的响应消息报头
PUT            请求服务器存储一个资源,并用Request-URI作为其标识
DELETE       请求服务器删除Request-URI所标识的资源
TRACE        请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT  保留将来使用
OPTIONS   请求查询服务器的性能,或者查询与资源相关的选项和需求


HTTP响应报文也是由三个部分组成,分别是:状态行、消息报头、响应正文

状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
常见状态代码、状态描述、说明:
200 OK      //客户端请求成功
400 Bad Request  //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 
403 Forbidden  //服务器收到请求,但是拒绝提供服务
404 Not Found  //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable  //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

eg:HTTP/1.1 200 OK (CRLF)

Cookie机制

当用户使用浏览器访问一个支持Cookie的网站的时候,用户会提供包括用户名在内的个人信息并且提交至服务器;接着,服务器在向客户端回传相应的超文本的同时也会发回这些个人信息;当客户端浏览器接收到来自服务器的响应之后,浏览器会将这些信息存放在一个统一的位置,对于Windows操作系统而言,我们可以从: [系统盘]:\Documents and Settings[用户名]\Cookies目录中找到存储的Cookie;自此,客户端再向服务器发送请求的时候,都会把相应的Cookie再次发回至服务器。通常,我们可以从很多网站的登录界面中看到“请记住我”这样的选项,如果你勾选了它之后再登录,那么在下一次访问该网站的时候就不需要进行重复而繁琐的登录动作了,而这个功能就是通过Cookie实现的。


电子邮件协议

电子邮件发送协议是一种基于“推”的协议,主要包括SMTP;邮件接收协议则是一种基于“拉”的协议,主要包括POP协议和IMAP协议。


简单邮件传送协议SMTP

SMTP协议服务器的熟知端口号为25,SMTP协议的客户端和服务器端都是通过命令和响应的形式进行交互。SMTP不使用中间的邮件服务器。不管发送方和接收方的邮件服务器相隔多远,不管中间要经过多少个服务器,TCP连接总是在发送方和接收方这两个邮件服务器之间直接建立。如果接收邮件服务器当前不在工作,SMTP客户就等待一段时间后再尝试建立该连接。

邮件传送主要包括3个阶段:建立连接、邮件传送和终止连接。

邮件报文的封装和报文格式

SMTP协议可以将互联网邮件报文封装在邮件对象中。SMTP协议的邮件对象由两个部分组成:信封和内容。

  • 信封实际上是一种SMTP命令。
  • 邮件报文是邮件对象中的内容,它又有首部和主体两个部分。 

细节可参见邮件报文的传送过程

邮件读取协议POP3和IMPA

邮件交付的第一阶段和第二阶段使用SMTP,而第三阶段则使用邮件读取协议。SMTP是一个push协议,而第三阶段则使用pull协议,包括POP和IMAP协议,POP主要使用POP3,而IMAP协议则主要使用IMAP4

邮局协议POP(Post office Protocal)采用C/S的工作方式。在接收邮件的用户PC机中的用户代理UA必须运行POP3的客户程序,而在收件人所连接的ISP的邮件服务器中则运行POP的服务器程序。POP服务器只有在用户输入鉴别信息(用户名+密码)后,才允许对方对邮箱进行读取。

网际报文存取协议IMAP(Internet Mail Access Protocal),IMAP协议比POP3协议复杂的多,也是按照C/S的工作方式,主要体现在以下一些方面:
  • IMAP具有摘要浏览功能,可以让用户在读完所有邮件的主题、发件人、大小等信息后,再由用户做出是否下载或直接在服务器上删除的决定。
  • IMAP可以让用户有选择性地下载邮件附件。例如一封邮件包含3个附件,如果用户确定其中只有2个附件对自已有用,就可只下载这2个附件,而不必下载整封邮件,从而节省了下载时间。
  • IMAP可以让用户在邮件服务器上创建自己的邮件夹,分类保存各个邮件。

POP3不允许用户则邮件服务器上整理自己的邮件,用户在服务器上不能不同的文件夹,POP3也不允许用户在下载邮件之前读取邮件的部分内容,而IMAP则克服了这些POP3的缺点。也就是POP3协议不太愿意让用户直接操作服务器,而IMAP正好克服了这些缺点。

通用因特网邮件扩充MIME
MIME协议(Multipurpose Internet Mail Extensions),通用因特网邮件扩充协议,作为SMTP的一种辅助协议,其引入是为了克服SMTP的如下不足:
  1. SMTP只能发送使用NVT(虚拟网络终端) 7位ASCII码格式的报文,它不能使用NVT 7位ASCII码不支持的语言(如汉语,日语,德语等)。
  2. SMTP不能传送可执行文件或其他二进制对象(如图像文件)。
  3. SMTP不支持音频或视频文件。
  4. SMTP发送的邮件的长度受到限制。

为了克服以上的不足,便引入了MIME协议,MIME协议是一种扩展协议性的辅助协议,“扩充”指的是只是对原来协议的扩展,而不是取代。它允许非ASCII码数据能够通过电子邮件传送。MIME在发送方把非ASCII码数据转换为NVT ASCII数据,之后的工作再交给SMTP完成,在接收方再将NVT ASCII数据还原成原来的数据。


参考资料
[1]《计算机网络(第5版) 谢希仁》
[2]《TCP/IP协议族 第4版》
[3] 电子邮件收发协议总结  博客园_好久不见
[4] SMTP协议介绍  CSND博客_Willian
[5] 网络基础之一:网络体系结构详解  51CTO博客_xiexiaojun

猜你喜欢

转载自blog.csdn.net/Ronnyz/article/details/80925293