应用层对应用程序的通信提供服务
应用进程交换的报文类型,请求还是响应。
各种报文类型的语法,如报文中各个字段及其详细描述。
字段的语义,即包括在字段中的信息的含义。
进程发送报文的时间和方式,以及对报文响应的规则。
文件传输,访问管理。(FTP)
电子邮件(SMTP,POP3)
虚拟终端(HTTP)
查询服务,远程登录(DNS)
服务器:提供计算服务的设备,提供服务,访问地址/域名。
客户机:请求计算服务的主机。与主机通信,使用服务器提供的服务,间歇性接入网络,可以使用动态IP地址,不可以与其他客户机直接通信。
P2P可以理解为对等互联网。在P2P模型中网络的参与者共享它们所拥有的一部分资源,这些资源通过网络提供服务和内容,能被其他对等节点直接访问,节点可能改变IP地址,网络的参与者既是服务提供者(server),又是资源获取者(client)。
进行通信的实际上是线程,在两个不同端系统上的进程,通过跨越计算机网络交换报文(message)而相互通信。发送进程生成并向网络中发送报文,接收进程接收这些报文并可能通过将报文发送回去进行响应。
客户和服务器进程
网络应用程序由成对的进程组成,这些进程通过网络相互发送报文。
对每对通信进程,我们通常将这两个进程之一标识为客户,而另一个进程标识为服务器。在给定的一对进程之间的通信会话场景中,发起通信(即在该会话开始时发起与其他进程的联系)的进程被标识为客户,在会话开始时等待联系的进程是服务器。
对于Web而言,浏览器是一个客户进程,Web服务器是一台服务器进程。对于PP文件共享,下载文件的对等方标识为客户,上载文件的对等方标识为服务器。
进程与计算机网络的接口
从一个进程到另一个进程发送的报文必须通过下面的网络,进程通过一个称为套接字
的软件接口向网络发送报文和接受报文。
由于该套接字是建立网络应用程序的可编程接口,因此套接字也称为应用程序和网络之间的应用程序编程接口(Application Programming Interface,API)
。应用程序开发者可以控制套接字在应用层端的一切,但是对该套接字的运输层端几乎没有控制权。应用程序开发者对于运输层的控制仅限于
①选择运输层协议
②也许能设定几个运输层参数,如最大缓存和最大报文段长度等
一旦应用程序开发者选择了一个运输层协议,则应用程序就建立在由该协议提供的运输层服务之上。
进程寻址
在一台主机上运行的进程为了向在另一台主机上运行的进程发送分组,接收进程需要有一个地址。为了标识该接收进程,需要定义两种信息 :
①主机的地址
②定义在目的主机中的接收进程的标识符。
域名服务器
域名解析过程
Web 的应用层协议是超文本传输协议(HTTP)。HTTP定义了 Web客户向 Web服务器请求Web页面的方式,以及服务器向客户传送 Web页面的方式。
Web页面是由对象构成的,一个对象就是一个文件。Web服务器实现了HTTP的服务端,用于存储Web对象,每个对象用url寻址。
HTTP使用TCP作为支撑传输协议。HTTP客户首先发起一个与服务器的TCP连接。一旦连接建立,该浏览器和服务器进程就可以通过套接字接口访问TCP。
注意 :服务器向客户发送被请求的文件,而不存储任何关于该客户的状态信息。所以HTTP是一个无状态协议
。(通信双方在交换HTTP报文时无需建立HTTP连接)Web服务器总是打开,具有固定的IP地址。
在许多因特网应用程序中,客户和服务器在一个相当长的时间范围内通信,其中客户发出一系列请求并且服务器对每个请求进行响应。这一系列请求可以以规则的间隔周期性地或者间断性地一个接一个发出。当这种客户—服务器的交互是经TCP进行的。 那么每个请求/响应对是经过一个单独的TCP连接发送,还是所有的请求和响应都经过相同的TCP连接发送。
前一中方法称为非持续连接,后一种方法称为持续连接。
非持续连接的缺点:必须为每一个请求的对象建立和维护一个全新的连。对于每个这样的连接,在客户和服务器中都要分配TCP的缓冲区和保持TCP变量,给Web服务器带来了严重的负担。
HTTP报文是面向文本的,所以每个字段都是一些ASCII码串。
下面是一个典型的请求报文:
GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
Connection: close
User-agent: Mozilla/5.0 Accept-language:fr
第一行叫做请求行,其余叫首部行,Host指明对象所在的主机,connection:close 告诉服务器不用持续连接,传输完页面后就关闭。User-agent,指明用户代理。
响应报文
HTTP/1.1 200 OK
Connection: close
Date: Tue,09 Aug 2011 15:44:04GMT
Server: Apache/2.2.3 (centos)
Last-Modified:Tue,09 Aug 2011 15:11:03 GMT
Content-Length: 6821
Content-Type: text/html
一个初始状态行,6个首部行,然后是实体体。
服务器用Connection:close首部行告诉客户,发送完报文后将关闭该TCP连接。
Date:首部行指示服务器产生并发送该响应报文的日期和时间。
Server:首部行指示该报文是由一台Apache Web服务器产生的。类似于请求报文中的User-agent。
Last-Modified:首部行指示了对象创建或者最后修改的日期和时间。
Content-Length:首部行指示了被发送对象中的字节数。
Content-Type:首部行指示了实体体中的对象是HTML文本。
cookie技术有4个组件
cookie可以用于标识一个用户。用户首次访问一个站点时,可能需要提供一个用户标识在后继会话中,浏览器向服务器传递一个cookie首部,从而向该服务器标识了用户。因此cookie可以在无状态的HTTP之上建立一个用户会话层。
web缓存服务器为代理服务器,它是能够代表初始Web服务器来满足 HTTP请求的网络实体。
假如游览器正在请求对象,将会发生如下情况 :
在一个FTP会话中,用户在一台主机(本地主机)上,向一台远程主机传输(或接收来自远程主机的)文件。为使用户能访问它的远程账户,用户必须提供一个用户标识和口令。在提供了这种授权信息后,用户就能从本地文件系统向远程主机文件系统传送文件。
HTTP 和FTP都是文件传输协议,并且有很多共同的特点,例如,它们都运行在TCP上。然而,这两个应用层协议也有一些重要的区别。其中最显著的就是FTP使用了两个并行的TCP连接来传输文件,一个是控制连接,一个是数据连接。
控制连接用于在两主机之间传输控制信息,如用户标识、口令、改变远程目录的命令以及“存放(put)”和“获取(get)”文件的命令。数据连接用于实际发送一个文件。
FTP服务器必须在整个会话期间保留用户的状态,服务器必须把特定的用户账户与控制连接联系起来。
互连网中有很大一部分FTP服务器被称为“匿名”(Anonymous)FTP服务器。这类服务器的目的是向公众提供文件拷贝服务,不要求用户事先在该服务器进行登记注册,也不用取得FTP服务器的授权。
Anonymous匿名文件传输)能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名“anonymous"登陆FTP服务,就可访问远程主机上公开的文件。
电子邮件系统主要由三个组成部分:用户代理,邮件服务器,简单邮件传输协议。
一个典型的发送过程是:
SMTP是互联网电子邮件应用的核心。
SMTP规定了在两个相互通信的SMTP进程之间应如何交换信息。负责发送邮件的SMTP进程就是SMTP客户,负责接收邮件的进程就是SMTP服务器。
SMTP规定了14条命令(几个字母)和21种应答信息(三位数字代码+简单文字说明)。
SMTP仅限于7位ASCII码,如果出现非英语语言或者图片等二进制文件,则需要重新编码为7位ASCII码。同时它把所有对象放在一个报文之中。而HTTP把每个对象封装到HTTP响应报文中。
TCP连接 端口号 25 C/S
SMTP通信三个阶段:连接建立,邮件传送,释放连接
SMTP缺点:SMTP不能传送可执行文件或者其他二进制对象(需要编码)。SMTP仪限于传送7位ASCII码,不能传送其他非英语国家的文字。SMTP服务器会拒绝超过一定长度的邮件。
所以MIME就是通用因特网邮件扩充
POP3是一个极为简单的邮件访问协议,由RFC 1939进行定义。因为该协议非常简单,故其功能相当有限。当用户代理(客户)打开了一个到邮件服务器(服务器)端口110上的TCP连接后,POP3就开始工作了。随着建立TCP连接,POP3按照三个阶段进行工作。
特许( authorization)、事务处理以及更新。
在第一个阶段即特许阶段,用户代理发送(以明文形式)用户名和口令以鉴别用户。
在第二个阶段即事务处理阶段,用户代理取回报文;同时在这个阶段用户代理还能进行如下操作,对报文做删除标记,取消报文删除标记,以及获取邮件的统计信息。
在第三个阶段即更新阶段,它出现在客户发出了quit 命令之后,目的是结束该POP3会话。这时,该邮件服务器删除那些被标记为删除的报文。
在POP3的事务处理过程中,用户代理发出一些命令,服务器对每个命令做出回答。回答可能有两种 : +OK (有时后面还跟有服务器到客户的数据),被服务器用来指示前面的命令是正常的。- ERR,被服务器用来指示前面的命令出现了某些差错。
在用户代理与邮件服务器之间的POP3会话期间,该POP3服务器保留了一些状态信息。特别是记录了哪些用户报文被标记为删除了。然而,POP3 服务器并不在POP3会话过程中携带状态信息。
IMAP协议比POP协议复杂。当用户PC上的IMAP客户程序打开IMAP服务器的邮箱时,用户可以看到邮箱的首部,若用户需要打开某个邮件,该邮件才上传到用户的计算机上。
IMAP服务器把每个报文与一个文件夹联系起来。当报文第一次到达服务器时,它与收件人的INBOX文件夹相关联。收件人则能够把邮件移到一个新的、用户创建的文件夹中,阅读邮件,删除邮件等。IMAP 协议为用户提供了创建文件夹以及将邮件从一个文件夹移动到另一个文件夹的命令。IMAP还为用户提供了在远程文件夹中查询邮件的命令。
IMAP可以让用户在不同的地方使用不同的计算机随时上网阅读处理邮件,还允许只读取邮件中的某一个部分。