应用层概述
1.网络应用程序体系结构
(1)客户服务器体系结构:存在一个或者多个主动连接服务器,从服务器获取所需服务的客户机,也存在一个能够像客户提供服务的服务器(①客户机之间不能通信②通常采用服务器集群的方式增大服务器端的处理能力)
(2)P2P体系结构:该体系结构中任何一方既能提供服务也能接受服务,不同的结点之间可以互相通信,结点之间的地址以及他们之间的连接随时都可能发生变化(P2P应用比较容易扩展,但是相对来说管理比较困难)
(3)混合结构(上面两种结构的混合):C/S和P2P的混合
2.网络应用进程通信
(1)不同主机上面的不同的进程通信(消息交换或者报文交换)通过网络中的套接字来实现,由传输基础设施向应用进程提供API(包括传输协议的选择和相关参数的设置)
(2)进程寻址:通过Ip地址和端口号来实现;IP地址标识Internet上面的唯一一台主机,但是除了IP地址之外,我们还需要区分同一台主机上面的不同的应用程序,这就通过端口号来实现
(3)应用层协议:指的是网络应用中需要遵循的协议规定;
(4)应用层协议的内容:
①定义消息的类型:包括请求消息和响应消息
②消息的语法格式:包括消息中的字段,每个字段的描述
③字段的语义:指的是字段中的信息的含义
④指定规则:例如进程如何发送或者响应消息,进程何时发送或者响应消息
3.Web应用概述
(1)Web的应用层协议是超文本传输协议(HTTP),HTTP由服务器和客户端两个部分组成,使用HTTP报文进行会话。
(2)Web页面是由对象组成,一个对象可以是HTML文件、图形文件、视频文件等文件类型,这些对象通过URL来进行寻址
(3)HTTP使用TCP作为他的传输层协议。
①HTTP客户首先发起一个与服务器的TCP连接,一般情况下,服务器端口默认是80,所以服务器端应用在80端口监听客户端的请求
②客户端发送到服务器端的TCP连接(创建套接字),服务器接受来自客户端的TCP连接
③客户端和服务器之间通过http报文进行相关信息的交换
④最后关闭TCP连接
(4)HTTP是一种无状态协议:即服务器端不维护任何关于客户端过去发送的信息
(5)HTTP连接类型:
①非持续连接:下面是一个非持续连接的例子
a)非持续连接请求一个文件所需要的响应时间分析:
发起TCP、请求建立TCP连接所需要的时间:1RTT
发送HTTP请求消息和HTTP响应消息:1RTT
响应消息中所包含的请求文件信息的传输时间
所以总的时间就是2RTT+文件传输时间
b)缺陷:
每个对象都需要2RTT
操作系统建立TCP连接造成大的资源开销
客户端使用浏览器并行的建立TCP连接请求资源,会给服务器造成更大的压力
②持续连接:HTTP1.1中新引入的持续连接传输模式
a)服务器在发送响应后,保持TCP连接,用于后续对象的传输,从而减少了服务器端连接次数的需要,减少了服务器端对套接字资源的占用,增大服务器端的负载能力
b)流水线传输方式:客户端可以一次性发送所有请求,然后等待接收,理想情况下,收到的时间大约为1RTT
c)非流水传输方式:客户端发送求情之后,等到收到服务器的响应之后才可以发送下一个请求,这样的话,每一个对象的传输都需要1RTT的时间
(6)HTTP请求消息格式
a)HTTP请求报文的一般格式
如下实例:
b)HTTP1.0版本中请求所支持的方法:
GET:想服务器发送指定URL的对象
POST:用于向服务器提交表单,也可以请求Web页面,
HEAD:服务器发送回来的响应报文,该报文中不包含请求的对象
c)HTTP1.1版本中除了GET、POST、HEAD之外新定义的方式
PUT:将上传的字段放在实体主体字段中,目标路径由URL标明
DELETE:删除指定URL对应的字段
(7)HTTP响应消息
a)HTTP响应报文的一般格式
下面是一个具体的例子
(8)HTTP中的Cookie技术
a)为了辨别用户身份,进行会话跟踪而存储在本地终端上面的数据
b)组件
Http请求消息中的cookie头部行
Http响应消息中的cookie头部行
保存在客户端主机上面的cookie文件,通常由浏览器管理
Wen站点后台数据库
c)Cookie的工作流程
d)cookie好处
实现认证功能
购物车功能
推荐功能
保存用户的回话状态(Web email)
e)用户的隐私被暴露
(9)HTTP中的Web缓存技术
a)Web缓存也叫代理服务器,能够代表初始服务器来满足HTTP请求。即用户可能可以在不访问初始服务器的情况下满足自己的HTTP请求
b)用户通过设定浏览器通过缓存进行Web访问,则浏览器想代理服务器发送所有的HTTP请求,如果请求对象在缓存中,则直接返回对象,否则,代理服务器想初始服务器发送HTTP请求,然后返回给客户端并保存该对象
c)上面可以看书代理服务器既充当客户端,也充当服务器
d)Web缓存示例分析
e)条件get方法:解决缓存服务器和初始服务器中的数据一致性问题,即:缓存中有最新的数据,则不需要想初始服务器发送请求,否则在请求消息中声明自己所持有的旧版本的数据的日期。初始服务器对缓存服务器的数据进行判断,如果缓存中的数据是最新的,则响应消息中不包含对象