第二章 应用层

 
2.1 应用层协议原理
研发网络应用程序的核心是写出能够运行在不同的端系统和通过网络彼此通信的程序。
2.1.1网络应用程序体系结构
应用程序体系结构 主流体系结构:
  1. 客户-服务器结构
  2. 对等(P2P)体系结构
 
客户-服务器结构:有一个总是打开的主机称为服务器,它服务来自其他称为客户的主机的请求(ex: web应用程序)。
  • a.在该体系结构中,客户和客户之间不会直接通信。
  • b.服务器具有固定的、周知的地址。该地址称为IP地址。
具体应用:web ftp telnet 电子邮件
服务器可能存在处理不堪重负。于是配备大量主机的数据中心被用于创建强大的虚拟服务器。

P2P结构:应用程序在间断连接的主机对之间使用直接通信,对数据中心依赖很少。
具体应用:BT 迅雷 Skype IPTV
特性:自扩展性。一个P2P文件共享应用中,尽管每个对等方都由于请求文件产生工作量,但每个对等方通过向其他对等方分发文件也为
系统增加服务能力。

混合结构应用: 许多即时讯息应用,服务器用于跟踪用户IP,但用户到用户的报文在用户主机之间直接发送。

2.1.2 进程通信
1.客户和服务进程
     在给定的一对进程之间的通信会话场景中,发起通信的进程被标识为客户,在会话开始时等待联系的进程是服务器。
2.进程和计算机网络之间的借口
进程通过一个称谓套接字(socket)的软件接口向网络发送报文和从网络接收报文。
3.进程寻址
在一台主机上运行的进程为了向在另一台主机上运行的进程发送分组,接收进程需要有一个地址。
为了标识该接收进程,需要定义两种信息。
  1. 主机的地址  ip
  2. 定义在目的主机中的接收进程的标识符  port

2.1.3 可供应用程序使用的运输服务
运输层协议提供的服务要求分类
  • 可靠数据传输 :数据无差错到达接收进程
  • 吞吐量
  • 定时:控制延迟
  • 安全性

2.1.4 因特网提供的运输服务
1.TCP服务
提供两种服务:
面向连接的服务:
可靠的数据传送服务:
2.UDP服务
UDP是一种不提供不必要服务的轻量级运输协议,它仅提供最小服务。无连接、不可靠、乱序、无阻塞控制。
3.因特网运输协议所不提供的服务
对吞吐量和定时的保证 不由运输层协议提供。

2.1.5 应用层报文
应用层协议 定义了运行在不用端系统上的应用程序如何相互传递报文。特别是应用层定义了:
  • 交换的报文类型,例如请求报文和响应报文。
  • 各种报文类型的语法,如报文中的各个字段及这些字段是如何描述的。
  • 字段的语义,即这些字段中包含的信息的含义。
  • 一个进程何时以及如何发送报文,对报文进行响应的规则。
 

2.2 HTTP
2.2.1 HTTP概况
web的应用层协议是超文本传输协议(HTTP),HTTP由两个程序实现:一个客户端程序,和一个服务器程序。
web页面是由对象组成。一个对象只是一个文件,如一个HTML文件,一个JPEG图形,一个Java小程序等。
多数web页面里含有一个HTML基本文件(base HTML file)以及几个引用对象。
HTML基本文件通过对象的URL地址引用页面中的其他对象。
每个URL地址由两部分组成:存放对象的服务器主机名和对象的路径名。例如:www.example.com/default/1.gif
www.example.com 是主机名,/default/1.gif为路径名。
web浏览器实现了HTTP的客户端,web服务器实现了HTTP的服务器端,用于存储web对象,每个对象由URL寻址。
服务器向客户发送被请求的文件,而不存储任何关于该客户的状态信息。所以我们称HTTP是一个无状态的协议。
 
2.2.2  非持续连接和持续连接
每个请求/响应都是一个单独的TCP连接发送,非持续连接
所有的请求/响应经过相同的TCP连接发送,持续连接
 
2.2.3  HTTP报文格式
2.2.3.1 HTTP请求报文
  HTTP请求报文通用格式
GET /index.html HTTP/1.1       
Host: www.test.com                
Connection: close
User-agent: Mozilla/5.0
Accept-language: f r
 
第一行为请求行:  方法字段、URL字段、HTTP版本字段。后续均为首部行
首部行:Host:www.test.com    指明主机地址。该首部行提供的信息是Web代理告诉缓存所要求的。
Connection:close ,该浏览器告诉服务器不希望麻烦的使用持续连接,它要求服务器在发送完被请求的对象后就关闭这条连接。
User-agent 首部行指明用户代理,即向服务器发送请求的浏览器的类型。上述例子中为Firefox浏览器。服务器可以根据不同类型的用户代理发送相同对象的不同版本。
Accept-language 首部行指明用户想得到该对象的法语版本。
 
 
 
2.2.3.2 HTTP响应报文
HTTP回应报文通用格式
HTTP/1.1 200 OK
Connection: close
Date: Tue, 09 Aug 2011 15:44:04 GMT
Server: Apache/2.3.3 (Centos)
Last-Modified: Tue, 09 Aug 2011 1511:03 GMT
Content-Length: 6821
Content-Type: text/html
 
(data date date....)
第一行初始状态行,6个首部行,然后是实体体,请求对象的实体。
状态行有3个字段:协议版本字段、状态码和相应的信息。
首部行:
服务器用Connection:close 首部行告诉客户,发送完报文后将关闭TCP连接。
Date:首部行指示服务器产生并发送该响应报文的日志和时间,特指服务器从它的文件系统中检索到该对象,插入到响应报文,并发送该响应报文的时间。
Server:l类似请求报文中的User-agent字段.
Last-Modified: 指示对象创建或者最后修改的日期和时间。
Content-Length:被发送的对象中的字节数。
Content-Type:实体体中的对象是HTML文件。
 
 
2.2.4 用户与服务器的交互:cookie
 
Web站点希望能够识别用户,可能是因为服务器希望限制用户的访问,或者因为它希望把内容与用户身份联系起来,为此使用cookie.
cookie技术有四个组件:
  1. 在HTTP响应报文中的一个cookie首部行
  2. 在HTTP请求报文中的一个cookie首部行
  3. 在用户端系统中保留有一个cookie文件,并由用户的浏览器进行管理
  4. 位于web站点的一个后端数据库
cookie可以标识一个用户,用户首次访问一个站点的时候可能需要提供一个用户标识,在后续的会话中,浏览器向服务器传递一个cookie首部,从而
向服务器标识了用户。因此cookie可以在无状态的HTTP之上建立一个用户会话层。
 
2.2.5 Web缓存
Web缓存 也称为代理服务器,它能代表初始的Web服务器来满足HTTP请求的网络实体。Web缓存器有自己的磁盘存储空间,并且在存储空间中保存最近请求过的对象的副本。
 
2.2.6 条件get
引入高速缓存有相应的问题,即存放在缓存器中的对象副本可能是陈旧的,可能已经被修改了。
HTTP协议有机制,允许缓存器证实它的对象是最新的,条件get方法
如果请求报文是get方法,请求报文包含一个“if-Midified-Since:” 首部行,则该报文为条件GET报文。
浏览器-> 缓存器->服务器-> 缓存器->浏览器
第一次交互过程中服务器给缓存器的响应报文中含有Last-Modified。
第二次交互 缓存器把该值作为 if-Midified-Since的值发给服务器,用来时间来判断当前缓存是否可以继续使用。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

猜你喜欢

转载自www.cnblogs.com/xiaodeyao/p/8975916.html