应用层:网络应用程序及其应用层协议存留的地方
位于应用层的信息分组称为报文。
应用程序
应用层中的应用程序拥有两种主流的应用程序体系结构:客户机/服务器体系结构(Client / Server)、对等体系结构(P2P)。
应用程序体系结构是由应用程序研发者设计,用来规定端系统上组织应用程序的标准。
客户机/服务器体系结构
服务器需要总是打开的,它服务于客户机的请求,一般由主机群集(服务器场)创建。
基于该结构的应用服务通常是基础设施密集的,要求服务提供商购买、安装、维护服务器场,投入费用巨大。包括搜索引擎、因特网商务、基于Web的电子邮件、社会联网、视频共享等。
对等体系结构
对总是打开的基础设施服务器有最小的依赖‘甚至没有依赖,由任意间断连接的主机(对等方)直接相互通信
基于该结构的应用服务通常是流量密集型的,包括文件分发、搜索、共享,因特网电话和IPTV。
应用程序通信
在应用程序间靠进程通信,在一次通信会话中,将发起通信的进程标记为客户机,将会话开始时等待联系的进程标记为服务器。
在不同的终端上的进程进行网络通信时需要经过应用程序与网络之间的应用程序接口(socket),以拥有对运输层的部分控制权。
运输层协议对调用它的应用程序提供了一定的服务,而应用程序对服务的要求可分为四类:可靠数据传输、吞吐量、定时、安全性。
可靠数据传输:当发送进程将数据传递到套接字后,能够无差错的到达接受进程。对于容忍丢失的应用来说,不提供这项服务是可以接受的。
吞吐量:可用吞吐量:同一网络路径上通信的两个进程间,发送进程能够向接受进程交付比特的速率。
对吞吐量有要求的应用称为贷款敏感的应用,反之称为弹性应用。
定时:数据从发送方套接字到接收方套接字的传输时间可以控制在一定时间内,即保证按时交付。如:因特网会话、多方游戏等需要定时服务,以免出现卡顿等现象。
安全性:加密发送数据,在接收方解密。,加密方式对发送进程和接受进程保密。
目前运输层提供的服务有:TCP服务,UDP服务;但这两种服务都没有实现吞吐量和定时的保证,即目前运输层未提供这两项服务。
应用层协议与支撑的运输层协议
Web应用与Http概况
Web(World Wide Web)是主流因特网应用,其特点是按需操作,用户通过提交自己的请求得到想要的数据。
Web的应用层协议是超文本传输协议(HTTP),是Web的核心。
Web页面(也叫文档)由对象组成,对象简单来说就是各种文件,如HTML文件、JPEG图形文件。多数的Web页面由基本HTML文件和几个引用对象组成,在基本HTML文件中通过其他对象的引用地址(URL)进行引用。
HTTP协议由两部分程序实现:客户机程序与服务器程序,它们通过HTTP报文进行会话,而HTTP定义了这些报文的格式和交换的形式。Web浏览器(即浏览器)就是一种HTTP客户机(或者说实现了HTTP客户机)。Web服务器实现了HTTP服务器端,用于存储Web页面中的对象,客户机通过URL访问。流行的Web服务器应用有Apache和Microsoft Internet Information Server。
HTTP是无状态协议,不保存客户机的任何信息。
客户机与服务器交换HTTP报文的流程:客户机套接字接口发送HTTP请求报文,报文进入TCP控制,可靠到达服务器,服务器套接字接受报文,发送回相应的HTTP响应报文,报文进入TCP控制,可靠到达客户机。
在许多因特网应用中,客户机与服务器之间会发送一系列的请求,由于报文经TCP连接发送,应用程序可以选择使用持久连接还是非持久连接:
持久连接:一系列的请求经过相同的TCP连接传输。
非持久连接:每次请求和响应后(服务器端通知TCP断开)断开TCP连接,下次请求时会重新建立TCP连接。
HTTP报文
HTTP请求报文格式:
//请求行(Request Line):字段方法 + URL字段 + HTTP协议版本字段
//方法字段取值:GET(直接请求,可以带表单参数生产表单请求)、POST(提交表单,此时用到实体主体,其内容为表单字段的值)、HEAD(类似Get但不返回请求对象,
//用于故障跟踪)、PUT(上传对象)、DELETE(删除服务器对象)
GET /somedirectory/page.html HTTP/1.1
//后继行称为首部行(Header Line),有众多可选字段
//定义目标所在主机
Host: www.someend.edu
//连接类型 close表示非持久连接 keep-alive 表示持久连接
Connection: close
//定义用户代理,即浏览器类型
User-agent: Mozilla/4.0
//定义用户希望得到的对象其版本的语言 fr:法语 zh:中文 en:英语
Accept-language: fr
HTTP响应报文格式
//状态行 协议版本 + 状态码 + 响应状态信息
HTTP/1.1 200 OK
//后继为首部行
//连接类型
Connection: close
//产生并发送日期
Date: Thu, 03 Jul 2003 12:00:15 GMT
//服务器类型
Server: Apache/1.3.0 (Unix)
//最后修改日期,该字段对既可能存在于客户机又可能存在于缓存器的对象缓存来说十分重要
LastModified: Sun, 6 May 2007 09:23:24 GMT
//被发送的对象的字节数
Content-Length 6821
//实体主体中德/对象类型
Connect-Type: text/html
Cookie
HTTP是无状态协议,但Web站点通常需要识别用户。因此使用cookie。
cookie技术组成部分:
1.HTTP响应报文中的cookie首部行
2.HTTP请求报文中的cookie首部行
3.用户端系统中保留的cookie文件(由浏览器管理)。
4.Web站点的后端数据库保存信息。
Web缓存(代理服务器)
是能够代表初始Web服务器来满足HTTP请求的网络实体,Web缓存器拥有自己的存储空间,保存最近请求的对象的拷贝,可以通过配置浏览器使用户的HTTP请求首先指向Web缓存器。一般由ISP(网络服务提供商)购买并安装。
配置后的访问过程:
1.建立到缓存器的TCP连接,并向其发送HTTP请求。
2.Web缓存器检查本地是否拥有拷贝,有就返回。
3.如果没有拷贝,Web缓存器与初始服务器建立TCP连接,转发用户请求,然后将响应对象存储在本地
4.将本地拷贝发送给用户。
作用:1.大大减少客户机请求的响应时间
2.大大减少一个机构内部与因特网接入链路上的通信量,因而该机构不必急于增加带宽而减少了费用
3.大大降低了因特网上的Web流量
条件GET
Web缓存器需要证实其缓存对象是否为最新,可使用条件GET方法(机制)。
条件GET请求报文
定义:如果1.请求报文使用GET方法
2.请求报文中包含 If-modified-since:+日期 该首部行
那么该HTTP请求就是条件GET请求报文
发送时机:
用户请求的对象已经存在于Web缓存器上,那么当用户请求到达Web缓存器时,Web缓存器会将该报文由Web缓存器发送给初始服务器
发送过程
由Web缓存器向初始服务器发送含用户请求的URL地址的条件GET报文,
如果该对象仍是最新,服务器返回一个实体主体为空的响应报文,其状态码为304 NOT Modified,否则返回包含该最新对象的响应报文。