介绍5层模型中的应用层,包括网络应用的基本结构,HTTP协议,Web服务等

网络应用的体系结构

客户机/服务器结构(Client-Service,C/S)

C/S

点对点结构(Peer-to-Peer,P2P)

p2p

​ 没有永久在线的服务器,任意结点之间可以直接通讯,结点间歇性接入网络、可以改变IP地址,如BT服务。

​ 优点:高度可伸缩

​ 缺点:难于管理

混合结构

​ 将上述两种结构混合使用,不同功能使用不同的结构。

网络应用进程通信

进程:主机上运行的程序

同一主机上的进程之间的通信由操作系统提供

不同主机上的进程之间进行通信需要通过消息交换

客户机进程:发起通信的进程

服务器进程:等待通信请求的进程

进程之间通信利用套接字(Socket)发送/接收消息,Socket是由操作系统提供的网络操作的API

进程寻址

寻址主机:IP地址

区分主机上的不同进程:端口号(Port number)

有一些固定的端口:

​ HTTP Service: 80

​ Mail Service: 25

进程的标识符: IP地址+端口号

应用层协议

网络应用需要遵循应用层协议。

公开协议:由RFC定义,运行互操作,如HTTP等

私有协议:多数P2P文件共享应用

应用层协议内容:

​ 消息的类型:请求消息、响应消息

​ 语法

​ 语义

​ 规则:如何时发送/响应消息

网络应用需求

数据丢失(data loss)/可靠性(reliability)

某些网络应用容忍一定数据丢失,如网络电话、视频服务

某些网络应用要求可靠的数据传输,如文件传输

时间(timing)/延迟(delay)

某些应用需要足够低的延迟,如网络电话、网络游戏

带宽(bandwidth)

某些应用有带宽要求,如网络视频

某些应用可以适应任何带宽,如下载、Email

不同网络应用的要求

Internet提供的传输服务

TCP服务

面向连接

可靠传输

流量控制

拥塞控制

不提供时间/延迟保障

不提供最小带宽保障

UDP服务

无连接

不可靠的数据传输

也不提供TCP中提到的其他保障

典型的网络应用与依赖的Internet服务

Web应用

World Wide Web: Tim Berners-Lee

通过URL寻址Web对象: Scheme:// host:port / path

HTTP协议

C/S结构,客户——浏览器,服务器——Web服务器

使用TCP传输协议

无状态协议:服务器不维护任何有关客户端过去所发送的请求的信息

HTTP连接

非持久性连接

每个TCP连接最多允许传输一个对象,HTTP1.0版本

服务器在发出响应消息后关闭TCP连接,如果客户端还有需要的信息,需要重新建立TCP连接。

非持久性HTTP连接

总时间为两个RTT加上文件发送时间

问题:每个对象都需要两个RTT,资源浪费,浏览器会打开多个并行的TCP连接以节约时间,会给服务器端造成过大压力

持久性连接

每个TCP连接允许传输多个对象,HTTP1.1版本默认

服务器发送响应后,保持TCP连接的打开,后续的HTTP消息可以继续通过这个连接发送

无流水线的持久性连接:客户端收到前一个响应再发送新的请求,每个对象耗时一个RTT

有流水线机制的持久性连接:HTTP1.1的默认选项,客户端只要遇到一个引用对象就尽快发出请求,理想状况下,收到所有对象只需要1个RTT

HTTP消息格式

HTTP请求报文

ASCII编码

例子:

HTTP消息例子

HTTP消息格式

上传输入的方法:POST方法,在请求消息的实体主体中上传;URL方法,使用GET方法,输入消息通过URL字段上传

HTTP1.0:GET,POST,HEAD(请浏览器不要将请求的对象放入响应消息中)

HTTP1.1:GET,POST,HEAD,PUT,DELETE

HTTP响应消息

HTTP响应消息例子

HTTP响应报文

HTTP响应状态代码

200 OK

301 Moved Permanently

400 Bad Request

404 Not Found

505 HTTP Version Not Supported

Cookie技术

HTTP为无状态协议,但很多应用需要服务器掌握客户端的状态,如网上购物。

Cookie技术为某些网站为了辨别用户身份、进行session跟踪而存储在用户本地终端上的数据(通常加密)

Cookie组件:HTTP请求和响应消息的Cookie头部行、保存在客户端主机上的Cookie文件、Web服务器上的数据库

Cookie

可以用于身份认证、购物车、推荐、Email等

问题:隐私

Web缓存/代理服务器(proxy server)技术

功能:在不访问服务器的前提下满足客户端的HTTP请求

优点:缩短客户请求的响应时间、减少机构/组织的流量开销、在大范围内实现有效的内容分发(CDN)

proxy

浏览器向缓存/代理服务器发送所有的HTTP请求,如果所请求的对象在缓存中,则返还缓存对象;否则,缓存服务器向原始服务器发送HTTP请求,获取对象,并把对象保存以及返回给客户端.

一般由ISP架设,即充当客户端,又充当服务器

条件性GET方法

目标:如何缓存有最新的版本,则不需要发送请求对象

缓存:在HTTP请求中声明所持有版本的日期

条件GET